基于单片机的数码管时钟电路的设计内容摘要:

; 50ms 定时初值 SETB EA ;总中断开放 SETB ET0 ;允许 T0 中断 SETB TR0 ;开启 T0 定时器 MOV R4,14H ; 1s 定时用初值( 50ms*20) START1:LCALL DISPLAY ;调用显示子程序 JNB ,SETMM1 ; 口为 0 时转时间调整程序 SJMP START1 ; 口为 1 时跳回START1 SETMMI:LJMP SETMM ;转到时间调整程序SETMM 1s 计时程序 T0 中断服务程序 INTT0:PUSH ACC ;累加器入 栈保护 PUSH PSW ;状态字入栈保护 CLR ET0 ;关 T0 中断允许 CLR TR0 ;关闭定时器 T0 MOV A,0B7H ;中断响应时间同步修正 ADD A,TL0 ;低 8 位初值修正 MOV TL0,A ;重装初值(低 8 位修正值) MOV A,3CH ;高 8 位初值修正 ADDC A,TH0 ; MOV TH0,A ;重装初值(高 8 位修正值) SETB TR0 ;开启定时器 T0 DJNZ R4,OUTT0 ; 20 次中断未到中断退出 ADDSS:MOV R4,14H ; 20 次中断到( 1s)重赋初值 MOV R0,71H ; 指向秒计时单元( 71H~72H) ACALL ADD1 ;调用加 1 程序(加 1s操作) MOV A,R3 ;秒数据放入 A( R3 为 2 位十进制数组合) CLR C ;清进位标志 CJNE A,60H,ADDMM ; 14 单片机课程设计 ADDMM:JC OUTT0 ;小于 60s 时中断退出 ACALL CLR0 ;大于或等于 60s 时对秒计时单元清 0 MOV R0,77H ;指向分计时单元( 76H~77H) ACALL ADD1 ;分计时单元加 1min MOV A,R3 ;分数据放入 A CLR C ;清 进位标志 CJNE A,60H,ADDHH ; ADDHH:JC OUTT0 ;小于 60min 时中断退出 ACALL CLR0 ;大于或等于 60min 时分计时单元清 0 MOV R0,79H ;指向小时计时单元( 78H~79H) ACALL ADD1 ;小时计时单元加 1h MOV A,R3 ;时数据放入 A CLR C ;清进位标志 CJNE A,24H,HOUR ; HOUR:JC OUTT0 ;小于 24h 中断退出 ACALL CLR0 ;大于或等于 24h 小时计时单元清 0 OUTT0:MOV 72H,76H ;中断退出时将分,时计时单元数据移 MOV 73H,77H ;入对应显示单元 MOV 74H,78H ; MOV 75H,79H ; POP PSW ;恢复状态字(出栈) POP ACC ;恢复累加器 SETB ETO ;开放 T0 中断 RETI ;中断返回 闪动调整程序 T1 中断服务程序,用作时间调整时调整单元闪烁 指示 INTT1: PUSH ACC ;中断现在保护 PUSH PSW ; MOV TL1,0B0H ;装定时器 T1 定时初值 MOV TH1,3CH ; DJNZ R2,INTT1OUT ; 未到退出中断( 50ms中断 6 次) MOV R2,06H ;重装 定时出初值 CPL 02H ; 定时到对闪烁标15 单片机课程设计 志取反 JB 02H,FLASHI ; 02H 位为 1 时显示单元“熄灭” MOV 72H,76H ; 02H 位为 0 时正常显示 MOV 73H,77H ; MOV 74H,78H ; MOV 75H,79H ; INTT1OUT:POP PSW ;恢复现场 POP ACC ; RETI ;中断退出 FLASH1:JB 01H,FLASH2 ; 01H 位为 1 时,转小时熄灭控制 MOV 72H,76H ; 01H 位为 0 时,“熄灭符”数据放入分 MOV 73H,77H ;显示单元( 72H~73H),将不显示分数据 MOV 74H,78H ; MOV 75H,79H ; AJMP INTT1OUT ;转中断退出 FLASH2:MOV 72H,76H ; 01H 位为 1 时,“熄灭符”数据放入小时 MOV 73H,77H ;显示单元( 74H~75H),小时数据将不显示 MOV 74H,78H ; MOV 75H。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。