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

📄 wannieli.asm

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