基于单片机at89c51电子时钟设计内容摘要:

关定时器 T0 中断CLR TR0。 关闭定时器 T0LCALL DL1S。 调用 1 秒延时程序JB ,CLOSEDIS。 键按下时间小于 1 秒,关闭显示(省电) MOV R2,06H。 进入调时状态,赋闪烁定时初值 SETB ET1。 允许 T1 中断SETB TR1。 开启定时器 T1SET2: JNB ,SET1。 口为 0(键未释放),等待SETB 00H。 键释放,分调整闪烁标志置 1SET4: JB ,SET3。 等待键按下LCALL DL05S。 有键按下,延时 秒JNB ,SETHH。 按下时间大于 秒转调小时状态MOV R0,77H。 按下时间小于 秒加 1 分钟操作LCALL ADD1。 调用加 1 子程序MOV A,R3。 取调整单元数据CLR C。 清进位标志CJNE A,60H,HHH。 调整单元数据与 60 比较HHH: JC SET4。 调整单元数据小于 60 转 SET4 循环LCALL CLR0。 调整单元数据大于或等于 60 时清 0CLR C。 清进位标志AJMP SET4。 跳转到 SET4 循环CLOSEDIS:SETB ET0。 省电(LED 不显示)状态。 开 T0 中断SETB TR0。 开启 T0 定时器(开时钟)CLOSE: JB ,CLOSE。 无按键按下,等待。 LCALL DISPLAY。 有键按下,调显示子程序延时削抖JB ,CLOSE。 是干扰返回 CLOSE 等待电子时钟设计14WAITH: JNB ,WAITH。 等待键释放LJMP START1。 返回主程序(LED 数据显示亮)SETHH: CLR 00H。 分闪烁标志清除(进入调小时状态)SETHH1: JNB ,SET5。 等待键释放SETB 01H。 小时调整标志置 1SET6: JB ,SET7。 等待按键按下LCALL DL05S。 有键按下延时 秒JNB ,SETOUT。 按下时间大于 秒退出时间调整MOV R0,79H。 按下时间小于 秒加 1 小时操作LCALL ADD1。 调加 1 子程序MOV A,R3。 CLR C。 CJNE A,24H,HOUU。 计时单元数据与 24 比较HOUU: JC SET6 小于 24 转 SET6 循环LCALL CLR0。 大于或等于 24 时清 0 操作AJMP SET6。 跳转到 SET6 循环SETOUT: JNB ,SETOUT1。 调时退出程序。 等待键释放LCALL DISPLAY。 延时削抖JNB ,SETOUT。 是抖动,返回 SETOUT 再等待CLR 01H。 清调小时标志CLR 00H。 清调分标志CLR 02H。 清闪烁标志CLR TR1。 关闭定时器 T1CLR ET1。 关定时器 T1 中断SETB TR0。 开启定时器 T0SETB ET0。 开定时器 T0 中断(计时开始)LJMP START1。 跳回主程序SET1: LCALL DISPLAY。 键释放等待时调用显示程序(调分)AJMP SET2。 防止键按下时无时钟显示SET3: LCALL DISPLAY。 等待调分按键时时钟显示用AJMP SET4SET5: LCALL DISPLAY。 键释放等待时调用显示程序(调小时)AJMP SETHH1。 防止键按下时无时钟显示SET7: LCALL DISPLAY。 等待调小时按键时时钟显示用AJMP SET6SETOUT1: LCALL DISPLAY。 退出时钟调整时键释放等待AJMP SETOUT。 防止键按下时无时钟显示延时程序:1MS 延时程序,LED 显示程序用电子时钟设计15DL1MS: MOV R6,14HDL1: MOV R7,19HDL2: DJNZ R7,DL2DJNZ R6,DL1RET20MS 延时程序,采用调用显示子程序以改善 LED 的显示闪烁现象DS20MS: ACALL DISPLAYACALL DISPLAYACALL DISPLAYRET 源程序设计ORG 0000H。 程序执行开始地址LJMP START。 跳到标号 START 执行ORG 0003H。 外中断 0 中断程序入口RETI。 外中断 0 中断返回ORG 000BH。 定时器 T0 中断程序入口LJMP INTT0。 跳至 INTTO 执行ORG 0013H。 外中断 1 中断程序入口RETI。 外中断 1 中断返回ORG 001BH。 定时器 T1 中断程序入口LJMP INTT1。 跳至 INTT1 执行ORG 0023H。 串行中断程序入口地址RETI。 串行中断程序返回主程序开始; START: MOV R0,70H。 清 70H7AH 共 11 个内存单元MOV R7,0BH。 CLEARDISP: MOV @R0,00H。 INC R0。 DJNZ R7,CLEARDISP。 MOV 20H,00H。 清 20H(标志用)MOV 7AH,0AH。 放入熄灭符数据MOV TMOD,11H。 设 T0、T1 为 16 位定时器MOV TL0,0B0H。 50MS 定时初值(T0 计时用)MOV TH0,3CH。 50MS 定时初值MOV TL1,0B0H。 50MS 定时初值(T1 闪烁定时用)MOV TH1,3CH。 50MS 定时初值SETB EA。 总中断开放SETB ET0。 允许 T0 中断SETB TR0。 开启 T0 定时器电子时钟设计16MOV R4,14H。 1 秒定时用初值(50MS20)START1: LCALL DISPLAY。 调用显示子程序JNB ,SETMM1。 口为 0 时转时间调整程序SJMP START1。 口为 1 时跳回 START1SETMM1: LJMP SETMM。 转到时间调整程序 SETMM。 1 秒计时程序。 INTT0: PUSH ACC。 累加器入栈保护PUSH PSW。 状态字入栈保护CLR ET0。 关 T0 中断允许CLR TR0。 关闭定时器 T0MOV A,0B7H。 中断响应时间同步修正ADD A,TL0。 低 8 位初值修正MOV。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。