MOV @R0,A ;清当前地址单元
DEC R0 ;指向前一地址
MOV @R0,A ;前一地址单元清0
RET ;子程序返回
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 时钟调整程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;当调时按键按下时进入此程序
SETMM: cLR ET0 ;关定时器T0中断
CLR TR0 ;关闭定时器T0
LCALL DL1S ;调用1秒延时程序
JB P3.5,CLOSEDIS ;键按下时间小于1秒,关闭显示(省电)
MOV R2,#06H ;进入调时状态,赋闪烁定时初值
SETB ET1 ;允许T1中断
SETB TR1 ;开启定时器T1
SET2: JNB P3.5,SET1 ;P3.5口为0(键未释放),等待
SETB 00H ;键释放,分调整闪烁标志置1
SET4: JB P3.5,SET3 ;等待键按下
LCALL DL05S ;有键按下,延时0.5秒
JNB P3.5,SETHH ;按下时间大于0.5秒转调小时状态
MOV R0,#77H ;按下时间小于0.5秒加1分钟操作
LCALL ADD1 ;调用加1子程序
MOV A,R3 ;取调整单元数据
CLR C ;清进位标志
CJNE A,#60H,HHH ;调整单元数据与60比较
HHH: JC SET4 ;调整单元数据小于60转SET4循环
LCALL CLR0 ;调整单元数据大于或等于60时清0
CLR C ;清进位标志
AJMP SET4 ;跳转到SET4循环
CLOSEDIS: SETB ET0 ;省电(LED不显示)状态。开T0中断
SETB TR0 ;开启T0定时器(开时钟)
CLOSE: JB P3.5,CLOSE ;无按键按下,等待。
LCALL DISPLAY ;有键按下,调显示子程序延时削抖
JB P3.5,CLOSE ;是干扰返回CLOSE等待
WAITH: JNB P3.5,WAITH ;等待键释放
LJMP START1 ;返回主程序(LED数据显示亮)
SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态)
SETHH1: JNB P3.5,SET5 ;等待键释放
SETB 01H ;小时调整标志置1
SET6: JB P3.5,SET7 ;等待按键按下
LCALL DL05S ;有键按下延时0.5秒
JNB P3.5,SETOUT ;按下时间大于0.5秒退出时间调整
MOV R0,#79H ;按下时间小于0.5秒加1小时操作
上一页 [1] [2] [3] [4] [5] [6] 下一页
本文关键字:单片机 程序 电子钟 51单片机,单片机-工控设备 - 51单片机