中易网

单片机六十秒倒计时程序

答案:1  悬赏:50  
解决时间 2021-10-16 19:10
  • 提问者网友:欲望失宠
  • 2021-10-16 14:11
单片机六十秒倒计时程序
最佳答案
  • 二级知识专家网友:夜风逐马
  • 2021-10-16 15:41
;数码管段选接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                ;程序结束 
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息