?? 萬年歷.asm
字號:
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
;*********************************
;* BCD碼轉換為十進制程序 *
;*********************************
BCD_10: MOV A,R0
ANL A,#0FH
MOV R1,A ;高位*10,加低位
MOV A,R0
SWAP A
ANL A,#0FH
MOV B,#10
MUL AB
ADD A,R1
MOV R0,A
RET
;********************************
;* 查一年數據程序 *
;********************************
CHECKMONTH: LCALL BCD_10
MOV A,R0
MOV B,#04
MUL AB
MOV R1,A
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R7,A ;第1字節送R7
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV R6,A ;第2字節送R6
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV R5,A ;第3字節送R5
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV R4,A ;第4字節送R4
RET
;******************************
;* 自動更新農歷 *
;******************************
GENGXIN: MOV R2,#00H
MOV R3,#00H
MOV A,MONTH
CJNE A,#01H,GM2
MOV R0,DAY ;當前月為1月
LCALL BCD_10 ;當前日轉換為十進制,送R2
MOV A,R0
MOV R2,A
AJMP TIAOZHENG1
GM2: CJNE A,#02H,GM3
MOV R0,DAY ;當前月為2月
LCALL BCD_10 ;當前日轉換為十進制
MOV A,R0 ;再加31送R2
ADD A,#31
MOV R2,A
AJMP TIAOZHENG1
GM3: CJNE A,#03H,GM4
MOV R0,DAY ;當前月為3月
LCALL BCD_10 ;當前日轉換為十進制
MOV A,R0 ;再加59送R2
ADD A,#59
MOV R2,A
AJMP TIAOZHENG1
GM4: CJNE A,#04H,GM5
MOV R0,DAY ;當前月為4月
LCALL BCD_10 ;當前日轉換為十進制
MOV A,R0 ;再加90送R2
ADD A,#90
MOV R2,A
AJMP TIAOZHENG1
GM5: CJNE A,#05H,GM6
MOV R0,DAY ;當前月為5月
LCALL BCD_10 ;當前日轉換為十進制
MOV A,R0 ;再加120送R2
ADD A,#120
MOV R2,A
AJMP TIAOZHENG1
GM6: CJNE A,#06H,GM7
MOV R0,DAY ;當前月為6月
LCALL BCD_10 ;當前日轉換為十進制
MOV A,R0 ;再加151送R2
ADD A,#151
MOV R2,A
AJMP TIAOZHENG1
GM7: CJNE A,#07H,GM8
MOV R0,DAY ;當前月為7月
LCALL BCD_10 ;當前日轉換為十進制
MOV A,R0 ;再加181送R2
ADD A,#181
MOV R2,A
AJMP TIAOZHENG1
GM8: CJNE A,#08H,GM9
MOV R0,DAY ;當前月為8月
LCALL BCD_10 ;當前日轉換為十進制
MOV A,R0 ;再加212送R2
ADD A,#212
MOV R2,A
AJMP TIAOZHENG1
GM9: CJNE A,#09H,GM10
MOV R0,DAY ;當前月為9月
LCALL BCD_10 ;當前日轉換為十進制
MOV A,R0 ;再加243
CLR C
ADD A,#243
JC GGG
MOV R2,A ;A沒溢出,送R2
AJMP TIAOZHENG1
GGG: MOV R3,#0FFH ;R3中送#0FFH
INC A ;A溢出,A加1送R2
MOV R2,A
AJMP TIAOZHENG1
GM10: CJNE A,#10H,GM11
MOV R0,DAY ;當前月為10月
LCALL BCD_10 ;當前日轉換為十進制
MOV A,R0 ;再加18送R2
ADD A,#18
MOV R2,A ;R3中送#0FFH
MOV R3,#0FFH
AJMP TIAOZHENG1
GM11: CJNE A,#11H,GM12
MOV R0,DAY ;當前月為11月
LCALL BCD_10 ;當前日轉換為十進制
MOV A,R0 ;再加49送R2
ADD A,#49
MOV R2,A ;R3中送#0FFH
MOV R3,#0FFH
AJMP TIAOZHENG1
GM12: MOV R0,DAY ;當前月為12月
LCALL BCD_10 ;當前日轉換為十進制
MOV A,R0 ;再加79送R2
ADD A,#79
MOV R2,A
MOV R3,#0FFH ;R3中送#0FFH
AJMP TIAOZHENG1
TIAOZHENG1: MOV A,YEAR
MOV B,#04
DIV AB
MOV A,B
JNZ GGG1
MOV A,65H ;當前月是1
CJNE A,#01H,AAAA
AJMP GGG1 ;當前月是2
AAAA: CJNE A,#02H,BBBB
AJMP GGG1
BBBB: CJNE R2,#0FFH,GGG2
MOV R3,#0FFH ;當前月不是1和2
MOV R2,#01H ;R1和R2總和加1
AJMP GGG1
GGG2: INC R2
GGG1: MOV R0,YEAR ;查意一年數據
LCALL CHECKMONTH
MOV A,R2
CLR C
SUBB A,R7
MOV P1.6,C
CJNE A,#01H,GGG3
MOV R2,#01H
MOV A,R3
CJNE A,#00H,NEW1
MOV 57H,#01H ;R2和R3總和減R7
MOV 56H,#01H ;為0,則為春節
LJMP S_PLAY
GGG3: CJNE A,#00H,GGG6
MOV R2,A
AJMP OLD
GGG6: JNB P1.6,NEW2
MOV A,R7
CLR C
SUBB A,R2
MOV R7,A
CJNE R3,#0FFH,GGG5
MOV A,R3
CLR C
SUBB A,R7
MOV R2,A
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -