给小弟详细解答下下面的单片机语句,怎样一条运行过程

来源:百度知道 编辑:UC知道 时间:2024/05/25 01:02:06
ORG 0000H
AJMP START
ORG 000BH ;定时器0的中断向量地址
AJMP TIME0 ;跳转到真正的定时器程序处 (?)
ORG 30H
START:
MOV P1,#0FFH ;关所 灯
MOV TMOD,#00000001B ;定时/计数器0工作于方式1(?)
MOV TH0,#15H
MOV TL0,#0A0H ;即数5536
SETB EA ;开总中断允许
SETB ET0 ;开定时/计数器0允许 (?)
SETB TR0 ;定时/计数器0开始运行 (?)
LOOP: AJMP LOOP ;真正工作时,这里可写任意程序(?)
TIME0: ;定时器0的中断处理程序 (?)
PUSH ACC (ACC,PSW是什么
PUSH PSW ;将PSW和ACC推入堆栈保护 要推入堆栈保护?)

CPL P1.0
MOV TH0,#15H
MOV TL0,#0A0H ;重置定时常数
POP PSW
POP ACC
RETI
END

回答的好再加分哈!!!

这是一个所有的灯的定时闪烁程
ORG 0000H
AJMP START
这两句是指程上电复位后从这里运行,然后跳转到START处运行。
ORG 000BH ;定时器0的中断向量地址
AJMP TIME0 ;跳转到真正的定时器程序处 (?)
这两句说的很明白,指定时时间到的时候,跳转到TIME0处执行
START:
MOV P1,#0FFH ;关所 灯
MOV TMOD,#00000001B ;定时/计数器0工作于方式1(?)
MOV TH0,#15H
MOV TL0,#0A0H ;即数5536
SETB EA ;开总中断允许
SETB ET0 ;开定时/计数器0允许 (?)
SETB TR0 ;定时/计数器0开始运行 (?)
此处为开通计数器的程序
LOOP: AJMP LOOP ;真正工作时,这里可写任意程序(?)
此句为当定时器0中断没有到来时空运转
TIME0: ;定时器0的中断处理程序 (?)
PUSH ACC (ACC,PSW是什么
PUSH PSW ;将PSW和ACC推入堆栈保护 要推入堆栈保护?)

CPL P1.0
MOV TH0,#15H
MOV TL0,#0A0H ;重置定时常数
POP PSW
POP ACC
RETI
这几句为定时器0中断子程序,当计时时间到时,对所有的灯求反,同时把累加器ACC和PSW进行保护,运行结束时还原,因为此程序为简单的灯的闪烁程序,所以
PUSH ACC (ACC,PSW是什么
PUSH PSW ;将PSW和ACC推入堆栈保护 要推入堆栈保护?)
POP PSW
POP ACC 这四句可以省略

AJMP TIME0 ;跳转到真正的定时器程序处 (?)
答:AJMP是跳转指令,后面的TIME0是一个程序标号,表示跳转到程序标号处的程序开始运行;

MOV TMOD,#00000001B ;定时/计数器0工作