📄 时钟程序0701.asm
字号:
MOV 4AH,#01H
MOV 4BH,#01H
MOV 4CH,#01H
JMP MUSIC_QU
MUSIC_1: MOV 4AH,#0FFH
JMP MUSIC_QU
MUSIC_2: MOV 4AH,#0FFH
MOV 4BH,#0FFH
MUSIC_QU:RET
;************************************************************************************
XS_OUT: MOV R4,#08H
XS_OUT_1: RRC A
MOV DI,C
SETB CK
CLR CK
DJNZ R4,XS_OUT_1
RET
;*************************************************************************************
;*************************************************************************************
WU_NUMBER:INC 49H
WU_1: MOV A,INTENSITY
XRL A,#1
JNZ WU_2
MOV A,49H
XRL A,#2
JNZ WU_1A
CLR WUQI ;雾化10毫秒后停止雾化
JMP WU_QU
WU_1A: MOV A,49H
XRL A,#10
JNZ WU_QU
MOV 49H,#00H ;停止40毫秒后清计数开始10毫秒雾化
SETB WUQI
WU_2: MOV A,INTENSITY
XRL A,#2
JNZ WU_3
MOV A,49H
XRL A,#4
JNZ WU_2A
CLR WUQI ;雾化20毫秒后停止雾化
JMP WU_QU
WU_2A: MOV A,49H
XRL A,#10
JNZ WU_QU
MOV 49H,#00H ;停止30毫秒后清计数开始20毫秒雾化
SETB WUQI
WU_3: MOV A,INTENSITY
XRL A,#3
JNZ WU_4
MOV A,49H
XRL A,#6
JNZ WU_3A
CLR WUQI ;雾化30毫秒后停止雾化
JMP WU_QU
WU_3A: MOV A,49H
XRL A,#10
JNZ WU_QU
MOV 49H,#00H ;停止20毫秒后清计数开始30毫秒雾化
SETB WUQI
WU_4: MOV A,INTENSITY
XRL A,#4
JNZ WU_5
MOV A,49H
XRL A,#8
JNZ WU_4A
CLR WUQI ;雾化35毫秒后停止雾化
JMP WU_QU
WU_4A: MOV A,49H
XRL A,#10
JNZ WU_QU
MOV 49H,#00H ;停止15毫秒后清计数开始35毫秒雾化
SETB WUQI
WU_5: MOV A,INTENSITY
XRL A,#5
JNZ WU_QU
MOV 49H,#00H ;第五档全高电平脉宽控制雾化
SETB WUQI
WU_QU: RET
;**************************************************************************************
;************************************
;************************************
WWDT: CLR SCK
SETB EECS
CLR EECS
MOV A,#06H
NOP
CALL WRITE
CLR SCK
SETB EECS
CLR EECS
MOV A,#01H
CALL WRITE
MOV A,#18H
CALL WRITE
CLR SCK
SETB EECS
PUSH 07H
MOV R7,#200
WRITEB: CALL READA
JNB ACC.0,ITEB
DJNZ R7,WRITEB
ITEB: NOP
NOP
POP 07H
RET
;*********************************************
;*********************************************
READA: CLR SCK
CLR EECS
MOV A,#05H
NOP
NOP
CALL WRITE
NOP
NOP
CALL READ
CLR SCK
SETB EECS
RET
;*********************************************
;*********************************************
REEPROM:MOV A,#03H
CLR SCK
CLR EECS
CALL WRITE
MOV A,R0
CALL WRITE
READC: CALL READ
MOV @R0,A
INC R0
DJNZ R6,READC
CLR SCK
SETB EECS
RET
;*********************************************
;*********************************************
WEEPROM:CLR SCK
CLR EECS
MOV A,#06H
CALL WRITE
SETB EECS
CLR EECS
MOV A,#02H
CALL WRITE
MOV A,R0
CALL WRITE
WEER: MOV A,@R0
CALL WRITE
INC R0
DJNZ R6,WEER
CLR SCK
SETB EECS
PUSH 07H
MOV R7,#200
WEEP: CALL READA
JB ACC.0,WROM
DJNZ R7,WEEP
WROM: NOP
NOP
POP 07H
RET
;*****************************************
;*****************************************
READ: PUSH 07H
SETB SO
MOV R7,#08H
READ1: SETB SCK
CLR SCK
MOV C,SO
RLC A
DJNZ R7,READ1
POP 07H
RET
;*********************************************
;*********************************************
WRITE: PUSH 07H
MOV R7,#08H
WRIT1: CLR SCK
RLC A
MOV SI,C
SETB SCK
DJNZ R7,WRIT1
CLR SI
POP 07H
RET
;**************************************************************************************
TEST_EEPROM:
MOV 2FH,#01H
MOV A,2FH
MOV B,A
MOV R0,#2FH
MOV R6,#1
CALL WEEPROM
NOP
NOP
MOV 2FH,#00H
NOP
NOP
MOV R0,#2FH
MOV R6,#1
CALL REEPROM
MOV A,B
XRL A,2FH
JZ TEST_EEPROM_QU
MOV 30H,#00H ;第1位数码管内容
MOV 31H,#9EH ;第2位数码管内容
MOV 32H,#0AH ;第3位数码管内容
MOV 33H,#60H ;第4位数码管内容
MOV 34H,#00H ;秒闪亮与不亮
MOV 40H,#0BFH ;点亮第1位数码管
MOV 41H,#0DFH ;点亮第2位数码管
MOV 42H,#0EFH ;点亮第3位数码管
MOV 43H,#0F7H ;点亮第4位数码管
MOV 44H,#0DFH ;秒闪指示
MOV 45H,#0FFH ;点亮时间指示灯(0FB)
MOV 46H,#0FFH ;点亮总时间指示灯0FD)
MOV 47H,#0FFH ;点亮温度指示灯(0FE)
MOV 48H,#0FFH
JMP TEST_EEPROM
TEST_EEPROM_QU:
RET
;*******************************************
TEST_TEMP:
JB P0.1,TEST_TEMP_QU
MOV 30H,#00H ;第1位数码管内容
MOV 31H,#9EH ;第2位数码管内容
MOV 32H,#0AH ;第3位数码管内容
MOV 33H,#0DAH ;第4位数码管内容
MOV 34H,#00H ;秒闪亮与不亮
MOV 40H,#0BFH ;点亮第1位数码管
MOV 41H,#0DFH ;点亮第2位数码管
MOV 42H,#0EFH ;点亮第3位数码管
MOV 43H,#0F7H ;点亮第4位数码管
MOV 44H,#0DFH ;秒闪指示
MOV 45H,#0FFH ;点亮时间指示灯(0FB)
MOV 46H,#0FFH ;点亮总时间指示灯0FD)
MOV 47H,#0FFH ;点亮温度指示灯(0FE)
MOV 48H,#0FFH
JMP TEST_TEMP
TEST_TEMP_QU:
RET
;*******************************************
TEST_WATER:
JNB P3.5,TEST_WATER_QU
MOV 30H,#00H ;第1位数码管内容
MOV 31H,#9EH ;第2位数码管内容
MOV 32H,#0AH ;第3位数码管内容
MOV 33H,#0F2H ;第4位数码管内容
MOV 34H,#00H ;秒闪亮与不亮
MOV 40H,#0BFH ;点亮第1位数码管
MOV 41H,#0DFH ;点亮第2位数码管
MOV 42H,#0EFH ;点亮第3位数码管
MOV 43H,#0F7H ;点亮第4位数码管
MOV 44H,#0DFH ;秒闪指示
MOV 45H,#0FFH ;点亮时间指示灯(0FB)
MOV 46H,#0FFH ;点亮总时间指示灯0FD)
MOV 47H,#0FFH ;点亮温度指示灯(0FE)
MOV 48H,#0FFH
JMP TEST_WATER
TEST_WATER_QU:
RET
;**************************************************************************************
BEGIN: MOV 20H,#00H
MOV 21H,#00H ;开机在时间档
MOV 22H,#01H ;按键不能有变化
MOV 23H,#01H
MOV 24H,#01H
MOV 25H,#01H
MOV 26H,#01H
MOV 27H,#01H
MOV 28H,#01H
MOV 29H,#01H
MOV 49H,#00H ;49H为20MS中断次数计数单元
MOV 4AH,#01H ;音乐片终止软延时时限
MOV 4BH,#01H
MOV 4CH,#01H
MOV 4EH,#01H ;开机返回时限到时间显示
MOV 4FH,#01H
MOV 53H,#0FCH
MOV 54H,#0FCH
MOV 57H,#0FCH
MOV 58H,#0FCH
MOV 2EH,#01H
MOV 2FH,#01H
NOP
NOP
MOV R0,#60H
MOV R6,#8
CALL REEPROM ;开机复位读EEPROM数据
MOV R0,#68H
MOV R6,#8
CALL REEPROM
NOP
NOP
NOP
NOP
MOV 30H,#0FEH ;第1位数码管内容
MOV 31H,#0FEH ;第2位数码管内容
MOV 32H,#0FEH ;第3位数码管内容
MOV 33H,#0FEH ;第4位数码管内容
MOV 34H,#01H ;秒闪亮与不亮
MOV 40H,#0BFH ;点亮第1位数码管
MOV 41H,#0DFH ;点亮第2位数码管
MOV 42H,#0EFH ;点亮第3位数码管
MOV 43H,#0F7H ;点亮第4位数码管
MOV 44H,#0DFH ;秒闪指示
MOV 45H,#0FBH ;点亮时间指示灯(0FB)
MOV 46H,#0FDH ;点亮总时间指示灯0FD)
MOV 47H,#0FEH ;点亮温度指示灯(0FE)
MOV 48H,#7FH
CALL DELAY
CALL DELAY
CALL DELAY ;整机复位时测试数码管
NOP
NOP
SETB TIME ;档位指示灯处理
SETB EA
SETB PT2
CLR PT0
CLR PT1
SETB ET0
SETB TR0
SETB ET1
CLR TR1
SETB ET2
CLR TR2
;SETB 00H ;开机为待机状态
CLR 02H ;运行状态标志
CLR 03H ;开机暂停状态
CLR 05H ;开机没有调整时间
CLR 06H ;防抖标志
SETB 07H ;开机秒闪指示灯亮
MOV 34H,#01H
CLR PTC ;开机关PTC
CLR WUZH ;雾化转换
CLR MOTOR ;开机关风扇
CLR WUQI ;开机关雾化
CLR BEE ;关音乐
RET
;*****************************************************************************
;*****************************************************************************
MED_TIME:
MOV A,MED_H
XRL A,#00H
JNZ MED_TIME_1 ;药量高字节为0?
MOV A,MED_L
XRL A,#0
JZ MED_TIME_NO ;高低字节都为0清时间
MED_TIME_1:
MOV A,INTENSITY
XRL A,#1
JNZ MED_TIME_2
CALL MED_TIME_1A
RET
MED_TIME_2:
MOV A,INTENSITY
XRL A,#2
JNZ MED_TIME_3
CALL MED_TIME_2A
RET
MED_TIME_3:
MOV A,INTENSITY
XRL A,#3
JNZ MED_TIME_4
CALL MED_TIME_3A
RET
MED_TIME_4:
MOV A,INTENSITY
XRL A,#4
JNZ MED_TIME_5
CALL MED_TIME_4A
RET
MED_TIME_5:
MOV A,INTENSITY
XRL A,#5
JNZ MED_TIME_QU
CALL MED_TIME_5A
RET
JMP MED_TIME_QU
MED_TIME_NO:
MOV A,#00H
MOV MINUTE_STEP,A ;没有药量清时间
MOV MINUTE_SET,A
MED_TIME_QU:
RET
;****************************
MED_TIME_1A: ;档位一的药量转换为时间的计算
CALL MED_TIME_MUL10 ;X10后再转换为十六进制
MOV R4,3AH
MOV R5,3BH
MOV R7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -