📄 wannieli.asm
字号:
MOV OUT3ON_H,#00H
OKEY3OH_E: MOV DS1302_ADDR,#0E4H
MOV DS1302_DATA,OUT3ON_H
LCALL WRITE
OKEY3OH_J: LCALL DISPLAY
JNB KEY_2,OKEY3OH_J
LJMP OKEY3OH_C
OKEY3OL_A: SETB 18H
OKEY3OL_B: LCALL DISPLAY
JNB KEY_1,OKEY3OL_B
OKEY3OL_C: LCALL DISPLAY
JNB KEY_1,OKEY3FH_A
JNB KEY_2,OKEY3OL_D
LJMP OKEY3OL_C
OKEY3OL_D: MOV R7,OUT3ON_L
LCALL ADD1
MOV OUT3ON_L,A
CJNE A,#60H,OKEY3OL_E
MOV OUT3ON_L,#00H
OKEY3OL_E: MOV DS1302_ADDR,#0E6H
MOV DS1302_DATA,OUT3ON_L
LCALL WRITE
OKEY3OL_J: LCALL DISPLAY
JNB KEY_2,OKEY3OL_J
LJMP OKEY3OL_C
OKEY3FH_A: SETB 19H ;OUT 3 OFF
OKEY3FH_B: LCALL DISPLAY
JNB KEY_1,OKEY3FH_B
OKEY3FH_C: LCALL DISPLAY
JNB KEY_1,OKEY3FL_A
JNB KEY_2,OKEY3FH_D
AJMP OKEY3FH_C
OKEY3FH_D: MOV R7,OUT3OFF_H
LCALL ADD1
MOV OUT3OFF_H,A
CJNE A,#24H,OKEY3FH_E
MOV OUT3OFF_H,#00H
OKEY3FH_E: MOV DS1302_ADDR,#0E8H
MOV DS1302_DATA,OUT3OFF_H
LCALL WRITE
OKEY3FH_J: LCALL DISPLAY
JNB KEY_2,OKEY3FH_J
LJMP OKEY3FH_C
OKEY3FL_A: SETB 1AH
OKEY3FL_B: LCALL DISPLAY
JNB KEY_1,OKEY3FL_B
OKEY3FL_C: LCALL DISPLAY
JNB KEY_1,OKEY4OH_A
JNB KEY_2,OKEY3FL_D
LJMP OKEY3FL_C
OKEY3FL_D: MOV R7,OUT3OFF_L
LCALL ADD1
MOV OUT3OFF_L,A
CJNE A,#60H,OKEY3FL_E
MOV OUT3OFF_L,#00H
OKEY3FL_E: MOV DS1302_ADDR,#0EAH
MOV DS1302_DATA,OUT3OFF_L
LCALL WRITE
OKEY3FL_J: LCALL DISPLAY
JNB KEY_2,OKEY3FL_J
LJMP OKEY3FL_C
OKEY4OH_A: SETB 1BH ;OUT 4 ON
OKEY4OH_B: LCALL DISPLAY
JNB KEY_1,OKEY4OH_B
OKEY4OH_C: LCALL DISPLAY
JNB KEY_1,OKEY4OL_A
JNB KEY_2,OKEY4OH_D
LJMP OKEY4OH_C
OKEY4OH_D: MOV R7,OUT4ON_H
LCALL ADD1
MOV OUT4ON_H,A
CJNE A,#25H,OKEY4OH_E
MOV OUT4ON_H,#00H
OKEY4OH_E: MOV DS1302_ADDR,#0ECH
MOV DS1302_DATA,OUT4ON_H
LCALL WRITE
OKEY4OH_J: LCALL DISPLAY
JNB KEY_2,OKEY4OH_J
LJMP OKEY4OH_C
OKEY4OL_A: SETB 1CH
OKEY4OL_B: LCALL DISPLAY
JNB KEY_1,OKEY4OL_B
OKEY4OL_C: LCALL DISPLAY
JNB KEY_1,OKEY4FH_A
JNB KEY_2,OKEY4OL_D
AJMP OKEY4OL_C
OKEY4OL_D: MOV R7,OUT4ON_L
LCALL ADD1
MOV OUT4ON_L,A
CJNE A,#60H,OKEY4OL_E
MOV OUT4ON_L,#00H
OKEY4OL_E: MOV DS1302_ADDR,#0EEH
MOV DS1302_DATA,OUT4ON_L
LCALL WRITE
OKEY4OL_J: LCALL DISPLAY
JNB KEY_2,OKEY4OL_J
AJMP OKEY4OL_C
OKEY4FH_A: SETB 1DH ;OUT 4 OFF
OKEY4FH_B: LCALL DISPLAY
JNB KEY_1,OKEY4FH_B
OKEY4FH_C: LCALL DISPLAY
JNB KEY_1,OKEY4FL_A
JNB KEY_2,OKEY4FH_D
AJMP OKEY4FH_C
OKEY4FH_D: MOV R7,OUT4OFF_H
LCALL ADD1
MOV OUT4OFF_H,A
CJNE A,#24H,OKEY4FH_E
MOV OUT4OFF_H,#00H
OKEY4FH_E: MOV DS1302_ADDR,#0F0H
MOV DS1302_DATA,OUT4OFF_H
LCALL WRITE
OKEY4FH_J: LCALL DISPLAY
JNB KEY_2,OKEY4FH_J
AJMP OKEY4FH_C
OKEY4FL_A: SETB 1EH
OKEY4FL_B: LCALL DISPLAY
JNB KEY_1,OKEY4FL_B
OKEY4FL_C: LCALL DISPLAY
JNB KEY_1,SETGOUT
JNB KEY_2,OKEY4FL_D
AJMP OKEY4FL_C
OKEY4FL_D: MOV R7,OUT4OFF_L
LCALL ADD1
MOV OUT4OFF_L,A
CJNE A,#60H,OKEY4FL_E
MOV OUT4OFF_L,#00H
OKEY4FL_E: MOV DS1302_ADDR,#0F2H
MOV DS1302_DATA,OUT4OFF_L
LCALL WRITE
OKEY4FL_J: LCALL DISPLAY
JNB KEY_2,OKEY4FL_J
AJMP OKEY4FL_C
LCALL DISPLAYRU
SETGOUT: LCALL DISPLAY
JNB KEY_1,SETGOUT
MOV DS1302_ADDR,#80H
MOV DS1302_DATA,#00H ;1302晶振开始振荡
LCALL WRITE
MOV DS1302_ADDR,#8EH
MOV DS1302_DATA,#80H ;禁止写入1302
LCALL WRITE
MOV DIS_4A,#1
CLR 00H
CLR 01H
CLR 02H
CLR 03H
CLR 04H
CLR 05H
CLR 06H
CLR 07H
CLR 08H
CLR 09H
CLR 0AH
CLR 0BH
CLR 0CH
CLR 0DH
CLR 0EH
CLR 0FH
CLR 10H
CLR 11H
CLR 12H
CLR 13H
CLR 14H
CLR 15H
CLR 16H
CLR 17H
CLR 18H
CLR 19H
CLR 1AH
CLR 1BH
CLR 1CH
CLR 1DH
CLR 1EH
CLR 1FH
CLR TR1 ;关闪中断
CLR ET1
LJMP MAIN1
;*********************************
;* 加1程序 *
;*********************************
ADD1: MOV A,R7
ADD A,#01H
DA A
RET
;*********************************
;* 写1302程序 *
;*********************************
WRITE: CLR SCLK
NOP
SETB RST
NOP
MOV A,DS1302_ADDR
MOV R4,#8
WRITE1: RRC A ;送地址给1302
NOP
NOP
CLR SCLK
NOP
NOP
NOP
MOV IO,C
NOP
NOP
NOP
SETB SCLK
NOP
NOP
DJNZ R4,WRITE1
CLR SCLK
NOP
MOV A,DS1302_DATA
MOV R4,#8
WRITE2: RRC A
NOP ;送数据给1302
CLR SCLK
NOP
NOP
MOV IO,C
NOP
NOP
NOP
SETB SCLK
NOP
NOP
DJNZ R4,WRITE2
CLR RST
RET
;*******************************
;* 读1302程序 *
;*******************************
READ: CLR SCLK
NOP
NOP
SETB RST
NOP
MOV A,DS1302_ADDR
MOV R4,#8
READ1: RRC A
NOP
MOV IO,C
NOP
NOP
NOP
SETB SCLK
NOP
NOP
NOP
CLR SCLK
NOP
NOP
DJNZ R4,READ1
MOV R4,#8
READ2: CLR SCLK
NOP
NOP
NOP
MOV C,IO
NOP
NOP
NOP
NOP
NOP
RRC A
NOP
NOP
NOP
NOP
SETB SCLK
NOP
DJNZ R4,READ2
MOV DS1302_DATA,A
CLR RST
RET
;********************************;
;* COMPARE
;********************************;
COMPARE: MOV A,ALARM1ON_H
CJNE A,#24H,CA_1
AJMP CA_2
CA_1: MOV A,HOUR
CJNE A,ALARM1ON_H,CA_2
MOV A,MINTUE
CJNE A,ALARM1ON_L,CA_2
AJMP CA_ON
CA_2: MOV A,ALARM2ON_H
CJNE A,#24H,CA_3
AJMP CA_4
CA_3: MOV A,HOUR
CJNE A,ALARM2ON_H,CA_4
MOV A,MINTUE
CJNE A,ALARM2ON_L,CA_4
AJMP CA_ON
CA_4: MOV A,ALARM3ON_H
CJNE A,#24H,CA_5
AJMP CA_6
CA_5: MOV A,HOUR
CJNE A,ALARM3ON_H,CA_6
MOV A,MINTUE
CJNE A,ALARM3ON_L,CA_6
AJMP CA_ON
CA_6: MOV A,ALARM4ON_H
CJNE A,#24H,CA_7
AJMP CO_0
CA_7: MOV A,HOUR
CJNE A,ALARM4ON_H,CO_0
MOV A,MINTUE
CJNE A,ALARM4ON_L,CO_0
CA_ON: SETB TR0 ;ON ALARM
SETB ET0
CO_0: MOV A,OUT1ON_H
CJNE A,#24H,CO_1
AJMP CO_2
CO_1: MOV A,HOUR
CJNE A,OUT1ON_H,CO_2
MOV A,MINTUE
CJNE A,OUT1ON_L,CO_2
AJMP CO_ON
CO_2: MOV A,OUT2ON_H
CJNE A,#24H,CO_3
AJMP CO_4
CO_3: MOV A,HOUR
CJNE A,OUT2ON_H,CO_4
MOV A,MINTUE
CJNE A,OUT2ON_L,CO_4
AJMP CO_ON
CO_4: MOV A,OUT3ON_H
CJNE A,#24H,CO_5
AJMP CO_6
CO_5: MOV A,HOUR
CJNE A,OUT3ON_H,CO_6
MOV A,MINTUE
CJNE A,OUT3ON_L,CO_6
AJMP CO_ON
CO_6: MOV A,OUT4ON_H
CJNE A,#24H,CO_7
AJMP COF_1
CO_7: MOV A,HOUR
CJNE A,OUT4ON_H,COF_1
MOV A,MINTUE
CJNE A,OUT4ON_L,COF_1
CO_ON: SETB OUT ;ON OUT
COF_1: MOV A,HOUR
CJNE A,OUT1OFF_H,COF_2
MOV A,MINTUE
CJNE A,OUT1OFF_L,COF_2
AJMP COF_OFF
COF_2: MOV A,HOUR
CJNE A,OUT2OFF_H,COF_3
MOV A,MINTUE
CJNE A,OUT2OFF_L,COF_3
AJMP COF_OFF
COF_3: MOV A,HOUR
CJNE A,OUT3OFF_H,COF_4
MOV A,MINTUE
CJNE A,OUT3OFF_L,COF_4
AJMP COF_OFF
COF_4: MOV A,HOUR
CJNE A,OUT4OFF_H,COFRET
MOV A,MINTUE
CJNE A,OUT4OFF_L,COFRET
COF_OFF: CLR OUT ;OFF OUT
COFRET: RET
;********************************
;* DISPLAY *
;********************************
DISPLAYRU: MOV A,DIS_4A
CJNE A,#01H,PLAYRU_B
MOV DIS_4,WEEK
MOV A,DIS_4
CJNE A,#07H,PLAYRU_A
MOV DIS_4,#08H
PLAYRU_A: MOV DIS_1,YEARH
MOV DIS_2,YEAR
MOV DIS_3,MONTH
MOV DIS_5,DAY
MOV DIS_6,HOUR
MOV DIS_7,MINTUE
MOV DIS_8,SECOND
MOV DIS_9,NMONTH
MOV DIS_10,NDAY
PLAYRU_B: RET
DISPLAY: CLR C
MOV R0,#80H
MOV R1,#3CH
PLAY_A: MOV A,@R1
MOV P0,A
MOV A,R0
MOV P2,A
LCALL DL1MS
INC R1
MOV A,R0
RRC A
MOV R0,A
JC PLAY_B
AJMP PLAY_A
PLAY_B: MOV P2,#00H
MOV R1,#44H
MOV A,@R1
MOV P0,A
SETB P1.1
LCALL DL1MS
CLR P1.1
INC R1
MOV A,@R1
MOV P0,A
SETB P1.0
LCALL DL1MS
CLR P1.0
RET
DL1MS: MOV R6,#14H
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
READ_START: MOV DS1302_ADDR,#0C3H
LCALL READ
MOV ALARM1ON_H,DS1302_DATA
MOV DS1302_ADDR,#0C5H
LCALL READ
MOV ALARM1ON_L,DS1302_DATA
MOV DS1302_ADDR,#0C7H
LCALL READ
MOV ALARM2ON_H,DS1302_DATA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -