答案:查询方式:
ORG 00H
START: MOV R0,#20
MOV R4,#60
LP0: MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV DPTR,#TABLE
SETB TR0
LP1: JBC TF0,LP2
ACALL DISP
AJMP LP1
LP2: DJNZ R0,LP0
CLR TR0
MOV R0,#20
MOV A,R4
CJNE A,#0,DEC1
MOV R4,#60
AJMP JP1
DEC1: DEC A
MOV R4,A
JP1: ACALL DISP
AJMP LP0
DISP: MOV A,R4
MOV B,#10
DIV AB ;当前值除以10
MOV 20H,A ;得出的商送给十位
MOV 21H,B ;得出的余数送给个位
MOV A,20H ;十位显示
MOVC A,@A+DPTR
MOV P0,A
SETB P2.1
LCALL DELAY
CLR P2.1
MOV A,21H ;个位显示
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0
LCALL DELAY
CLR P2.0
RET
DELAY: ;误差 0us
MOV R6,#10
DL0:
MOV R5,#50
DJNZ R5,$
DJNZ R6,DL0
RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极0-9显示代码
DB 92H,82H,0F8H,80H,90H
END
中断方式:
ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT
ORG 30H
MAIN:
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H ;50MS一中断
MOV R0,#20 ;20次为1S
MOV R4,#60 ;60S开始倒计时
SETB EA
SETB ET0
SETB TR0
MOV DPTR,#TABLE
MAIN1:
ACALL DISP
AJMP MAIN1
DISP:
MOV A,R4
MOV B,#10
DIV AB ;当前值除以10
MOV 20H,A ;得出的商送给十位
MOV 21H,B ;得出的余数送给个位
MOV A,20H ;十位显示
MOVC A,@A+DPTR
MOV P0,A
SETB P2.1
LCALL DELAY
CLR P2.1
MOV A,21H ;个位显示
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0
LCALL DELAY
CLR P2.0
RET
T0INT:
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,RTI
MOV R0,#20
DEC R4
CJNE R4,#0,RTI
MOV R4,#60
RTI:
RETI
DELAY: ;误差 0us
MOV R6,#10
DL0:
MOV R5,#50
DJNZ R5,$
DJNZ R6,DL0
RET
TABLE:
DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极0-9显示代码
DB 92H,82H,0F8H,80H,90H
END
其他:现在单片机很少用汇编了。我可以提供c的。 高手还是很多吗?
上一个:汇编语言程序设计题目,在线等答案!!!急!
下一个:如何在汇编语言中输出一个数字(那个数字是存在dx里面的)