📄 wannieli.asm
字号:
RYEAR EQU P1.7
ALARM EQU P1.3
OUT EQU P1.2
KEY_1 EQU P3.0
KEY_2 EQU P3.1
SCLK EQU P3.5
IO EQU P3.7
RST EQU P3.6
YEARH DATA 30H
YEAR DATA 31H
MONTH DATA 32H
WEEK DATA 33H
DAY DATA 34H
HOUR DATA 35H
MINTUE DATA 36H
SECOND DATA 37H
NMONTH DATA 38H
NDAY DATA 39H
DS1302_ADDR DATA 3AH
DS1302_DATA DATA 3BH
DIS_1 DATA 3CH
DIS_2 DATA 3DH
DIS_3 DATA 3EH
DIS_4 DATA 3FH
DIS_5 DATA 40H
DIS_6 DATA 41H
DIS_7 DATA 42H
DIS_8 DATA 43H
DIS_9 DATA 44H
DIS_10 DATA 45H
ALARM1ON_H DATA 46H
ALARM1ON_L DATA 47H
ALARM2ON_H DATA 48H
ALARM2ON_L DATA 49H
ALARM3ON_H DATA 4AH
ALARM3ON_L DATA 4BH
ALARM4ON_H DATA 4CH
ALARM4ON_L DATA 4DH
OUT1ON_H DATA 4EH
OUT1ON_L DATA 4FH
OUT1OFF_H DATA 50H
OUT1OFF_L DATA 51H
OUT2ON_H DATA 52H
OUT2ON_L DATA 53H
OUT2OFF_H DATA 54H
OUT2OFF_L DATA 55H
OUT3ON_H DATA 56H
OUT3ON_L DATA 57H
OUT3OFF_H DATA 58H
OUT3OFF_L DATA 59H
OUT4ON_H DATA 5AH
OUT4ON_L DATA 5BH
OUT4OFF_H DATA 5CH
OUT4OFF_L DATA 5DH
ALARMTIME DATA 5EH
DIS_4A DATA 5FH
TIMECA DATA 60H
TIMECB DATA 61H
TIMECC DATA 62H
TIMECD DATA 63H
TIMECE DATA 64H
ORG 0000H
AJMP START
ORG 000BH
LJMP INTT0
ORG 001BH
LJMP INTT1
ORG 0030H
START: MOV YEARH,#20H
SETB EA
CLR 20H
MOV TMOD,#11H
MOV TL1,#00H
MOV TH1,#00H
MOV TL0,#0DBH
MOV TH0,#0BH
MOV P1,#00H
MOV P2,#00H
MOV DIS_4A,#01H
MOV SP,#70H
LCALL READ_START
MAIN1: MOV DS1302_ADDR,#8DH ;READ OUT YEAR
LCALL READ
MOV YEAR,DS1302_DATA
MOV DS1302_ADDR,#8BH ;READ OUT WEEK
LCALL READ
MOV WEEK,DS1302_DATA
MOV DS1302_ADDR,#89H ;READ OUT MONTH
LCALL READ
MOV MONTH,DS1302_DATA
MOV DS1302_ADDR,#87H ;READ OUT DAY
LCALL READ
MOV DAY,DS1302_DATA
MOV DS1302_ADDR,#85H ;READ OUT HOUR
LCALL READ
MOV HOUR,DS1302_DATA
MOV DS1302_ADDR,#83H ;READ OUT MINTUE
LCALL READ
MOV MINTUE,DS1302_DATA
MOV DS1302_ADDR,#81H ;READ OUT SECOND
LCALL READ
MOV SECOND,DS1302_DATA
LCALL GENGXIN
LCALL DISPLAYRU
LCALL DISPLAY
LCALL COMPARE
JNB KEY_1,SETG_AA
JNB KEY_2,INT0_Q
LJMP MAIN1
SETG_AA: LCALL SETG
LJMP MAIN1
INT0_Q: JNB TR0,INT0_Q1
SETB 20H
INT0_Q1: LJMP MAIN1
;***********************************
;* ALARME *
;***********************************
INTT0: CLR EA
PUSH ACC
PUSH PSW
JB 20H,INT0_1
JB ALARM,INT0_1
INC TIMECA ;计数器加1
MOV A,TIMECA
CJNE A,#03H,INT0_EXIT ;计数器不到3则跳出
MOV TIMECA,#0
SETB ALARM
INT0_1: INC TIMECB
MOV A,TIMECB
CJNE A,#02H,INT0_EXIT
MOV TIMECB,#0
CLR ALARM
MOV A,TIMECE
CJNE A,#0,INT0_2
INC TIMECE
AJMP INT0_3
INT0_2: INC TIMECC
MOV A,TIMECC
CJNE A,#08H,INT0_EXIT
MOV TIMECC,#0
MOV A,TIMECD
ADD A,#1
DA A
MOV TIMECD,A
CJNE A,#60H,INT0_EXIT
MOV TIMECD,#0
MOV A,TIMECE
ADD A,#1
DA A
MOV TIMECE,A
INT0_3: MOV A,TIMECE
CJNE A,ALARMTIME,INT0_EXIT
MOV TIMECE,#0
CLR TR0
CLR ET0
CLR ALARM
CLR 20H
INT0_EXIT: POP PSW
POP ACC
SETB EA
RETI
;***********************************
;* 闪动调时程序 *
;***********************************
INTT1: CLR EA
PUSH ACC
PUSH PSW
CPL 1FH
JB 1FH,GFLASH1_Q1
AJMP GFLASH1_Q2
GFLASH1_Q1: LJMP GFLASH1
GFLASH1_Q2: MOV A,DIS_4A
CJNE A,#01H,GFLAS_Q1
MOV DIS_4,WEEK
MOV A,DIS_4
CJNE A,#07H,GFLAS_QT
MOV DIS_4,#08H
GFLAS_QT: 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,#0AAH
MOV DIS_10,#0AAH
AJMP GFLASHOUT
GFLAS_Q1: MOV A,DIS_4A
CJNE A,#02H,GFLAS_Q2
MOV A,ALARM1ON_H
CJNE A,#24H,GFLAS_Q1A
MOV DIS_1,#88H
AJMP GFLAS_Q1B
GFLAS_Q1A: MOV DIS_1,ALARM1ON_H
GFLAS_Q1B: MOV DIS_2,ALARM1ON_L
MOV A,ALARM2ON_H
CJNE A,#24H,GFLAS_Q1C
MOV DIS_3,#88H
AJMP GFLAS_Q1D
GFLAS_Q1C: MOV DIS_3,ALARM2ON_H
GFLAS_Q1D: MOV DIS_4,DIS_4A
MOV DIS_5,ALARM2ON_L
MOV A,ALARM3ON_H
CJNE A,#24H,GFLAS_Q1E
MOV DIS_6,#88H
AJMP GFLAS_Q1F
GFLAS_Q1E: MOV DIS_6,ALARM3ON_H
GFLAS_Q1F: MOV DIS_7,ALARM3ON_L
MOV DIS_8,ALARMTIME
MOV A,ALARM4ON_H
CJNE A,#24H,GFLAS_Q1G
MOV DIS_9,#88H
AJMP GFLAS_Q1H
GFLAS_Q1G: MOV DIS_9,ALARM4ON_H
GFLAS_Q1H: MOV DIS_10,ALARM4ON_L
AJMP GFLASHOUT
GFLAS_Q2: MOV A,DIS_4A
CJNE A,#03H,GFLAS_Q3
MOV A,OUT1ON_H
CJNE A,#24H,GFLAS_Q2A
MOV DIS_1,#88H
AJMP GFLAS_Q2B
GFLAS_Q2A: MOV DIS_1,OUT1ON_H
GFLAS_Q2B: MOV DIS_2,OUT1ON_L
MOV DIS_3,OUT1OFF_H
MOV DIS_4,DIS_4A
MOV DIS_5,OUT1OFF_L
MOV A,OUT2ON_H
CJNE A,#24H,GFLAS_Q2C
MOV DIS_6,#88H
AJMP GFLAS_Q2D
GFLAS_Q2C: MOV DIS_6,OUT2ON_H
GFLAS_Q2D: MOV DIS_7,OUT2ON_L
MOV DIS_8,#0AAH
MOV DIS_9,OUT2OFF_H
MOV DIS_10,OUT2OFF_L
AJMP GFLASHOUT
GFLAS_Q3: MOV A,OUT3ON_H
CJNE A,#24H,GFLAS_Q3A
MOV DIS_1,#88H
AJMP GFLAS_Q3B
GFLAS_Q3A: MOV DIS_1,OUT3ON_H
GFLAS_Q3B: MOV DIS_2,OUT3ON_L
MOV DIS_3,OUT3OFF_H
MOV DIS_4,DIS_4A
MOV DIS_5,OUT3OFF_L
MOV A,OUT4ON_H
CJNE A,#24H,GFLAS_Q3C
MOV DIS_6,#88H
AJMP GFLAS_Q3D
GFLAS_Q3C: MOV DIS_6,OUT4ON_H
GFLAS_Q3D: MOV DIS_7,OUT4ON_L
MOV DIS_8,#0AAH
MOV DIS_9,OUT4OFF_H
MOV DIS_10,OUT4OFF_L
GFLASHOUT: POP PSW
POP ACC
SETB EA
RETI
GFLASH1: JNB 1EH,GFLASH2
MOV DIS_10,#0AAH
AJMP GFLASHOUT
GFLASH2: JNB 1DH,GFLASH3
MOV DIS_9,#0AAH
AJMP GFLASHOUT
GFLASH3: JNB 1CH,GFLASH4
MOV DIS_7,#0AAH
AJMP GFLASHOUT
GFLASH4: JNB 1BH,GFLASH5
MOV DIS_6,#0AAH
AJMP GFLASHOUT
GFLASH5: JNB 1AH,GFLASH6
MOV DIS_5,#0AAH
AJMP GFLASHOUT
GFLASH6: JNB 19H,GFLASH7
MOV DIS_3,#0AAH
AJMP GFLASHOUT
GFLASH7: JNB 18H,GFLASH8
MOV DIS_2,#0AAH
AJMP GFLASHOUT
GFLASH8: JNB 17H,GFLASH9
MOV DIS_1,#0AAH
AJMP GFLASHOUT
GFLASH9: JNB 16H,GFLASH10
MOV DIS_10,#0AAH
AJMP GFLASHOUT
GFLASH10: JNB 15H,GFLASH11
MOV DIS_9,#0AAH
AJMP GFLASHOUT
GFLASH11: JNB 14H,GFLASH12
MOV DIS_7,#0AAH
AJMP GFLASHOUT
GFLASH12: JNB 13H,GFLASH13
MOV DIS_6,#0AAH
AJMP GFLASHOUT
GFLASH13: JNB 12H,GFLASH14
MOV DIS_5,#0AAH
AJMP GFLASHOUT
GFLASH14: JNB 11H,GFLASH15
MOV DIS_3,#0AAH
AJMP GFLASHOUT
GFLASH15: JNB 10H,GFLASH16
MOV DIS_2,#0AAH
AJMP GFLASHOUT
GFLASH16: JNB 0FH,GFLASH17
MOV DIS_1,#0AAH
AJMP GFLASHOUT
GFLASH17: JNB 0EH,GFLASH18
MOV DIS_10,#0AAH
AJMP GFLASHOUT
GFLASH18: JNB 0DH,GFLASH19
MOV DIS_9,#0AAH
AJMP GFLASHOUT
GFLASH19: JNB 0CH,GFLASH20
MOV DIS_8,#0AAH
AJMP GFLASHOUT
GFLASH20: JNB 0BH,GFLASH21
MOV DIS_7,#0AAH
AJMP GFLASHOUT
GFLASH21: JNB 0AH,GFLASH22
MOV DIS_6,#0AAH
AJMP GFLASHOUT
GFLASH22: JNB 09H,GFLASH23
MOV DIS_5,#0AAH
AJMP GFLASHOUT
GFLASH23: JNB 08H,GFLASH24
MOV DIS_3,#0AAH
AJMP GFLASHOUT
GFLASH24: JNB 07H,GFLASH25
MOV DIS_2,#0AAH
AJMP GFLASHOUT
GFLASH25: JNB 06H,GFLASH26
MOV DIS_1,#0AAH
AJMP GFLASHOUT
GFLASH26: JNB 05H,GFLASH27
MOV DIS_7,#0AAH
AJMP GFLASHOUT
GFLASH27: JNB 04H,GFLASH28
MOV DIS_6,#0AAH
AJMP GFLASHOUT
GFLASH28: JNB 03H,GFLASH29
MOV DIS_4,#0AAH
AJMP GFLASHOUT
GFLASH29: JNB 02H,GFLASH30
MOV DIS_5,#0AAH
AJMP GFLASHOUT
GFLASH30: JNB 01H,GFLASH31
MOV DIS_3,#0AAH
AJMP GFLASHOUT
GFLASH31: JNB 00H,GFLASH32
MOV DIS_2,#0AAH
AJMP GFLASHOUT
GFLASH32: MOV DIS_1,#0AAH
AJMP GFLASHOUT
;*******************************
;* 公历设置程序 *
;*******************************
SETG: SETB TR1
SETB ET1
CLR 00H
CLR 01H
CLR 02H
CLR 03H
CLR 04H
CLR 05H
CLR 40H
CLR 41H
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
MOV DS1302_ADDR,#8EH
MOV DS1302_DATA,#00H ;允许写1302
LCALL WRITE
MOV DS1302_ADDR,#80H
MOV DS1302_DATA,#80H ;1302停止振荡
LCALL WRITE
MOV DIS_4A,#01H
YEARH1: LCALL DISPLAY
JNB KEY_1,YEARH1
YEARH2: LCALL DISPLAY
JNB KEY_1,GWAIT
JNB KEY_2,YEARH3
AJMP YEARH2
YEARH3: MOV R7,YEARH
LCALL ADD1
MOV YEARH,A
CJNE A,#10H,YEARH4
ADD A,#10D
DA A
MOV YEARH,A
YEARH4: LCALL DISPLAY
JNB KEY_2,YEARH4
AJMP YEARH2
GWAIT: SETB 00H
LCALL DISPLAY
JNB KEY_1,GWAIT
SETG1: LCALL DISPLAY
JNB KEY_1,SETG2
JNB KEY_2,GADDYEAR
AJMP SETG1
GADDYEAR: MOV R7,YEAR ;年加1
LCALL ADD1
MOV YEAR,A
CJNE A,#10H,GADDYEAR1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -