📄 时钟程序0701.asm
字号:
POP 06H
POP 05H
POP 04H
POP 03H
POP 02H
POP 01H
POP 00H
POP ACC
POP PSW
RETI
NOP
NOP
CPL_B1: MOV SECOND,#00H ;迢过一分钟秒个十位清零
MOV 32H,#0FCH
MOV 33H,#0FCH
MOV A,#01H ;分钟加1
ADD A,MINUTE
DA A ;分钟单元换算成BCD码
MOV MINUTE,A
NOP
NOP
MOV A,#01H ;预置计数分钟加1
ADD A,MINUTE_STEP
DA A ;换算成BCD码
MOV MINUTE_STEP,A
NOP
NOP
MOV 53H,MINUTE ;取出分钟个十位单元
MOV 54H,MINUTE
MOV A,#0FH
ANL A,53H
MOV 53H,A
MOV A,#0F0H
ANL A,54H
SWAP A
MOV 54H,A
MOV DPTR,#TAB
MOV A,53H
MOVC A,@A+DPTR
JB TEMPTEST,CPL_3 ;非时间档秒个位不更新
JB ALLTIME,CPL_3
JB INTEN,CPL_3
JB MED,CPL_3
JB SETTIME,CPL_3
JB TEMP,CPL_3
MOV 33H,A
CPL_3: MOV A,54H
MOVC A,@A+DPTR
JB TEMPTEST,CPL_4 ;非时间档秒个位不更新
JB ALLTIME,CPL_4
JB INTEN,CPL_4
JB MED,CPL_4
JB SETTIME,CPL_4
JB TEMP,CPL_4
MOV 32H,A
CPL_4:
;**************************
MOV A,54H
CJNE A,#06H,CPL_C ;分钟单元不满60退出
JMP CPL_C1 ;分钟单元满60小时单元加1
CPL_C: CALL CPL_ABCD
POP 07H
POP 06H
POP 05H
POP 04H
POP 03H
POP 02H
POP 01H
POP 00H
POP ACC
POP PSW
RETI
NOP
NOP
CPL_C1: MOV MINUTE,#00H ;分钟显示单元清零
MOV 30H,#0FCH
MOV 31H,#0FCH
;****************************
MOV A,#01H
ADD A,HOUR ;小时单元加1
DA A ;小时单元换算成BCD码
MOV HOUR,A
NOP
NOP
MOV 55H,HOUR ;取出小时单元中的个十位单元
MOV 56H,HOUR
MOV A,#0FH
ANL A,55H
MOV 55H,A
MOV A,#0F0H
ANL A,56H
SWAP A
MOV 56H,A
;***************
MOV DPTR,#TAB
MOV A,55H
MOVC A,@A+DPTR
JB TEMPTEST,CPL_5 ;非时间档秒个位不更新
JB ALLTIME,CPL_5
JB INTEN,CPL_5
JB MED,CPL_5
JB SETTIME,CPL_5
JB TEMP,CPL_5
MOV 31H,A
NOP
NOP
CPL_5: MOV A,56H
MOVC A,@A+DPTR
JB TEMPTEST,CPL_6 ;非时间档秒个位不更新
JB ALLTIME,CPL_6
JB INTEN,CPL_6
JB MED,CPL_6
JB SETTIME,CPL_6
JB TEMP,CPL_6
MOV 30H,A
;**************************
CPL_6: MOV A,HOUR
CJNE A,#100,CPL_D ;不满100个小时退出
MOV HOUR,#00H ;满100个小时清小时单元
JMP CPL_D1
CPL_D: CALL CPL_ABCD
CPL_D1: POP 07H
POP 06H
POP 05H
POP 04H
POP 03H
POP 02H
POP 01H
POP 00H
POP ACC
POP PSW
RETI
;*******************************************
CPL_ABCD: JB 07H,CPL_ABCD1 ;07H决定秒闪指示灯是否亮
MOV 34H,#00H
JMP CPL_ABCD2
CPL_ABCD1: MOV 34H,#01H
CPL_ABCD2: MOV A,MINUTE_STEP ;运行时间与预置时间的小时比较,时间没到退出
XRL A,MINUTE_SET
JNZ CPL_ABCD3
NOP
NOP
CLR WUZH ;时间到转换到雾化水
;CLR MOTOR ;时间到关风扇
;CLR WUQI ;时间到关雾化
NOP
NOP
;CLR TR1 ;并不关实时时间
;SETB 00H ;时间到,由运行状态变为待机状态
;CLR 02H ;关运行标志
;CLR 03H ;关暂停标志
;SETB 07H ;秒闪常亮
;MOV 34H,#01H
NOP
NOP
;CLR BEE ;时间到启动音乐片
nop
nop
SETB TR2
CLR TR0
MOV A,#0F7H
CALL XS_OUT
NOP
NOP
MOV A,#9EH
CALL XS_OUT
SETB STROBE ;锁存
CLR STROBE
CALL MUSIC
CLR TR2
SETB TR0
nop
nop
CLR BEE ;判断喇叭电流
;MOV 4AH,#0FFH ;音乐片终止软延时
;MOV 4BH,#45H
;MOV 4CH,#01H
CPL_ABCD3: RET
;*****************************************************************************
TAB:
DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H
DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH,00H
;*****************************************************************************
;**************************************
ANT_SET0: JB 06H,SET_0_QU ;防抖时间未到退出
MOV A,22H ;SET查询子程序
MOV B,A
MOV C,P1.0 ;取样比较
MOV ACC.0,C
MOV 22H,A
XRL A,B
JZ SET_0_QU ;没有变化退出
JB 10H,SET_0_QU
;CLR 04H ;开机按下任何键终止开机状态
SETB 06H ;按下防抖标志置位
MOV 2EH,#0A0H ;置防抖时限
MOV 2FH,#01H ;置防抖延时限
CALL RETUN_EQU ;返回时间档延时时限
SETB MED
CLR SETTIME
CLR ALLTIME
CLR INTEN
CLR TIME
CLR TEMPTEST
CLR TEMP
;CALL SELECTION
SET_0_QU: RET
;**************************************
ANT_SET1: JB 06H,SET_1_QU ;防抖时间未到退出
MOV A,26H ;SET查询子程序
MOV B,A
MOV C,P1.1 ;取样比较
MOV ACC.0,C
MOV 26H,A
XRL A,B
JZ SET_1_QU ;没有变化退出
JB P1.1,SET_1_QU
;CLR 04H ;开机按下任何键终止开机状态
SETB 06H ;按下防抖标志置位
MOV 2EH,#0A0H ;置防抖时限
MOV 2FH,#01H ;置防抖延时限
CALL RETUN_EQU ;返回时间档延时时限
CLR MED
CLR SETTIME
CLR ALLTIME
SETB INTEN
CLR TIME
CLR TEMPTEST
CLR TEMP
;CALL SELECTION
SET_1_QU: RET
;**************************************
ANT_SET2: JB 06H,SET_2_QU ;防抖时间未到退出
MOV A,27H ;SET查询子程序
MOV B,A
MOV C,P1.2 ;取样比较
MOV ACC.0,C
MOV 27H,A
XRL A,B
JZ SET_2_QU ;没有变化退出
JB P1.2,SET_2_QU
;CLR 04H ;开机按下任何键终止开机状态
SETB 06H ;按下防抖标志置位
MOV 2EH,#0A0H ;置防抖时限
MOV 2FH,#01H ;置防抖延时限
CALL RETUN_EQU ;返回时间档延时时限
CLR TEMP
CLR MED
SETB SETTIME
CLR ALLTIME
CLR INTEN
CLR TIME
CLR TEMPTEST
;CALL SELECTION
SET_2_QU: RET
;**************************************
ANT_SET3: JB 06H,SET_3_QU ;防抖时间未到退出
MOV A,28H ;SET查询子程序
MOV B,A
MOV C,P1.3 ;取样比较
MOV ACC.0,C
MOV 28H,A
XRL A,B
JZ SET_3_QU ;没有变化退出
JB P1.3,SET_3_QU
;CLR 04H ;开机按下任何键终止开机状态
SETB 06H ;按下防抖标志置位
MOV 2EH,#0A0H ;置防抖时限
MOV 2FH,#01H ;置防抖延时限
CALL RETUN_EQU ;返回时间档延时时限
CLR MED
CLR SETTIME
CLR ALLTIME
CLR INTEN
CLR TIME
CLR TEMPTEST
SETB TEMP
;CALL SELECTION
SET_3_QU: RET
;**************************************
ANT_SET4: JB 06H,SET_4_QU ;防抖时间未到退出
MOV A,29H ;SET查询子程序
MOV B,A
MOV C,P1.6 ;取样比较
MOV ACC.0,C
MOV 29H,A
XRL A,B
JZ SET_4_QU ;没有变化退出
JB P1.6,SET_4_QU
;CLR 04H ;开机按下任何键终止开机状态
SETB 06H ;按下防抖标志置位
MOV 2EH,#0A0H ;置防抖时限
MOV 2FH,#01H ;置防抖延时限
CALL RETUN_EQU ;返回时间档延时时限
CPL CHANGE
JB CHANGE,SET_4_1
CLR MED
CLR SETTIME
CLR ALLTIME
CLR INTEN
CLR TIME
SETB TEMPTEST
CLR TEMP
JMP SET_4_2
SET_4_1: CLR MED
CLR SETTIME
CLR INTEN
CLR TIME
CLR TEMPTEST
CLR TEMP
SETB ALLTIME
SET_4_2: ;CALL SELECTION
SET_4_QU: RET
;**************************************
SELECTION:
ANT_SET_A:JB TIME,LIGHT_1 ;是时间档送显示
;MOV 45H,#0FFH ;不是时间档屏蔽显示
JMP LIGHT_1A
LIGHT_1: MOV 45H,#0FFH
MOV 46H,#0FFH
MOV 47H,#0FFH
MOV 48H,#0FFH
RET
LIGHT_1A: JB ALLTIME,LIGHT_2 ;是总时间档送显示
;MOV 46H,#0FFH
JMP LIGHT_2A
LIGHT_2:
MOV 45H,#0FFH
MOV 46H,#0FFH
MOV 47H,#0FFH
MOV 48H,#0FFH
RET
LIGHT_2A: JB SETTIME,LIGHT_3 ;是温度档送显示
MOV 47H,#0FFH
JMP LIGHT_3A
LIGHT_3:
MOV 47H,#0FEH
MOV 45H,#0FFH
MOV 46H,#0FFH
;MOV 47H,#0FFH
MOV 48H,#0FFH
RET
LIGHT_3A: JB INTEN,LIGHT_3B ;是雾化强度档送显示
MOV 46H,#0FFH
JMP LIGHT_333
LIGHT_3B:
MOV 46H,#0FDH
MOV 45H,#0FFH
;MOV 46H,#0FFH
MOV 47H,#0FFH
MOV 48H,#0FFH
RET
LIGHT_333:JB MED,LIGHT_333A ;是雾化强度档送显示
MOV 45H,#0FFH ;不是时间档屏蔽显示
JMP LIGHT_444
LIGHT_333A:
MOV 45H,#0FBH
;MOV 45H,#0FFH
MOV 46H,#0FFH
MOV 47H,#0FFH
MOV 48H,#0FFH
RET
LIGHT_444:JB TEMP,LIGHT_444A ;是雾化强度档送显示
MOV 48H,#0FFH
JMP SET_QU
LIGHT_444A:
MOV 48H,#7FH
MOV 45H,#0FFH
MOV 46H,#0FFH
MOV 47H,#0FFH
;MOV 48H,#0FFH
RET
SET_QU: RET
;SET查询子程序结束
;**************************************************************************************
LIGHT_4: JNB TIME,LIGHT_4A
JB 03H,LIGHT_4A3
;JB 00H,LIGHT_4A2 ;是待机状态一直点亮秒闪
JNB 03H,LIGHT_4A1 ;是暂停状态一直点亮秒闪
JMP LIGHT_4A1
LIGHT_4A2:SETB 07H
MOV 34H,#01H
LIGHT_4A1:CALL RETUN0 ;恢复原来显示数据状态
CALL RETUN1
CALL RETUN2
JMP LIGHT_4A4
LIGHT_4A3:MOV 30H,#0CEH ;显示暂停“PUSH”
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -