求汇编51单片机接两个数码管从00显示到99,外部中断0接一开关用于复位。麻烦注解下每句话的意思!!

如题所述

COUNT EQU 31H ;寄存器定义
CNT EQU 32H
ORG 0000H ;程序开始
AJMP MAIN
ORG 000BH ;定时器0中断地址
AJMP TIME
ORG 0013H ;外总中断0中断地址
AJMP INT00
ORG 0030H ;程序开始执行
MAIN:
MOV SP,#5FH ;移动堆栈
MOV COUNT,#00H ;清寄存器
MOV CNT,#00H ;
MOV TMOD,#01H ;定时器0工作方式1
MOV TH0,#3CH ;50MS初值
MOV TL0,#0B0H ;
SETB ET0 ;开定时器0中断
SETB EA ;开总中断
SETB EX0 ;开外总中断0中断
SETB TR0 ;开启定时器0

LOOP:
CALL DISP ;调用显示子程序
JMP LOOP ;采用查询方式
;P0口数据输出。P2.0、P2.1位码控制端
DISP: MOV A,CNT ;CNT数据送入A中
MOV B,#10 ;10送入B中=分离出个位、十位数
DIV AB ;A除B
MOV R0,B ;B送入R0中
MOV DPTR,#TAB ;查表地址
MOVC A,@A+DPTR ;根据A的值查表
MOV P2,#0FEH ;开启位码=个位
MOV P0,A ;送个位数据
CALL DELAY ;延时一会,保持亮度
MOV A,R0 ;R0送入A中、
MOV DPTR,#TAB ;
MOVC A,@A+DPTR ;
MOV P2,#0FDH ;开启位码=十位
MOV P0,A ;送个位数据
CALL DELAY ;
RET
;采用定时器每秒数码管加1
TIME:
PUSH PSW ;状态寄存器压入堆栈
PUSH ACC ;累加器A压入堆栈
MOV TH0,#3CH ;重装50MS定时器初值
MOV TL0,#0B0H ;
INC COUNT ;50MS时间到寄存器加1
MOV A,COUNT ;送入A中
CJNE A,#20,UENRET ;比较不等于20,即1秒时间没到
MOV COUNT,#00H ;到了1秒时间,寄存器清规
INC CNT ;CNT寄存器加1
MOV A,CNT ;送入A中
CJNE A,#100,UENRET ;比较=这里因为只有两位数码管
MOV CNT,#00H ;意思跟上面20 的一样,
UENRET:POP ACC ;弹出A保护的值
POP PSW ;弹出状态寄寄原值
RETI ;中断返回

;外总中断复位
INT00:
PUSH PSW
PUSH ACC
MOV COUNT,#00H;清COUNT寄存器
MOV CNT,#00H;清CNT寄存器
CALL DELAY
POP ACC ;弹出保护数据
POP PSW
RETI
DELAY: MOV R5,#100 ;延时程序
DJNZ R5,$
RET
;共阴数据
TAB: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
温馨提示:答案为网友推荐,仅供参考