当前位置:编程学习 > 汇编语言 >>

求C51单片机汇编语言控制两位数码管倒计时程序,最好能说明下思路

答案:查询方式: 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里面的)

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,