⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wannieli.asm

📁 19位万年历程序(带8个定时器
💻 ASM
📖 第 1 页 / 共 5 页
字号:
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 + -