单片机六十秒倒计时程序

用汇编语言写

第1个回答  2013-12-29
;数码管段选接P2口,位选接P3.0和P3.1,
;采用定时器T0定时10ms,60H为1s计数单元,计数100次为1sORG 0000H ;程序从0地址开始
LJMP MAIN ;跳到MAIN处执行
ORG 000BH ;定时器T0
LJMP TIME0
ORG 0030H
MAIN:MOV TMOD,#01H ;设置T0工作在模式1
MOV TH0,#0D8H ;赋初值,定时10ms
MOV TL0,#0F0H
MOV IE,#82H ;开CPU中断,开定时器0中断
MOV R3,#60
SETB TR0 ;启动T0定时器工作
MOV 60H,#100 ;给60H单元赋初值
CLR 4FH ;清零4FH单元
DISPLAY: ;显示子程序
MOV DPTR,#TAB ;DPTR指向编码表位置
MOV A,R3 ;将R3的内容复制到A
MOV B,#10
DIV AB ;A除B,商给A,余数给B
MOVC A,@A+DPTR ;根据A的值取出编码表中的编码
MOV P2,A ;由P1口输出A的内容
CLR P3.0 ;清零P2.0
SETB P3.0 ;置位P2.0 MOV A,B
MOVC A,@A+DPTR ;根据A的值取出编码表中的编码
MOV P2,A ;由P1口输出A的内容
CLR P3.1 ;清零P2.1
SETB P3.1 ;置位P2.1
JNB 4FH,DISPLAY ;判断1秒时间是否到,没有到,则跳转到DIAPLAY处
CLR 4FH ;1秒到,清4FH
LJMP DISPLAY ;调用显示子程序 TIME0:MOV TH0,#0D8H ;赋初值
MOV TL0,#0F0H
DJNZ 60H,TT ;60H单元自减1,判断是否为0,不为0则跳转到TT处
MOV 60H,#100 ;60H单元为0,则重新给其赋值100
SETB 4FH ;同时置位4FH单元
DEC R3 ;R3自加1
CJNE R3,#00H,TT ;判断R3是否为0,否则跳转TT处
CLR TR0
TT:RETI
TAB: ;编码表
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共阴
END ;程序结束本回答被网友采纳
第2个回答  2013-12-29
这个我可以帮你设计的。不懂的联系我
相似回答