AJMP GFLASHOUT GFLASH6:
MOV 73H,#0FH ;调分钟闪 MOV 72H,#0FH AJMP GFLASHOUT
;加一程序~~~~~~~~~~~~~~~~~~~~~~~~~
ADD1: MOV A,R7 ADD A,#1 DA A
RET
;减一程序~~~~~~~~~~~~~~~~~~~~~~~~~ JIAN1:
MOV A,R7 DEC A
CJNE A,#4FH,KK1 MOV A,#49H KK1:
CJNE A,#3FH,KK2 MOV A,#39H KK2:
CJNE A,#2FH,KK3 MOV A,#29H KK3:
CJNE A,#1FH,KK4 MOV A,#19H KK4:
CJNE A,#0FH,KK5 MOV A,#09H KK5:
RET
;分离程序~~~~~~~~~~~~~~~~~~~~~~~~~ DIVIDE: MOV A,R0 ANL A,#0FH MOV R1,A MOV A,R0 SWAP A ANL A,#0FH MOV R2,A
RET
;写1302程序~~~~~~~~~~~~~~~~~~~~~~~~~~
WRITE: CLR SCLK NOP SETB RST NOP MOV A,32H
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,31H 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,32H MOV R4,#8
READ1:
RRC A ;送地址给1302 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 ;从1302中读出数据 NOP NOP
MOV C,IO NOP NOP NOP NOP NOP RRC A NOP NOP
NOP
NOP
SETB SCLK NOP
DJNZ R4,READ2
MOV 31H,A CLR RST
RET
;BCD码转换为10进制程序~~~~~
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
;农历和公历为同一年,
;NEW此时R2中的值为FFH时,R3有值,否则为0 NEW: NOP
M1:
MOV A,R2 ;R2减一月天数 CLR C
SUBB A,#29 MOV R1,A MOV A,R6
JB ACC.6,SM11 MOV A,R2 CLR C SUBB A,#30 MOV R1,A SM11:
JC SM12
MOV A,R1 ;R2减1月天数,够减 MOV R2,A ;转二月
AJMP M2 SM12:
CJNE R3,#00H,M13 ;R2减1月天数
LJMP Y1 ;不够减,判R3为0否 M13:
MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让一月减 MOV R2,A ;还不够,则转Y1 MOV R3,#00H
AJMP M1 M2:
CLR C ;R2减一月天数,够减 MOV A,R2 ;转三月 SUBB A,#29 MOV R1,A MOV A,R6 JB ACC.5,M21 MOV A,R2 CLR C
SUBB A,#30 MOV R1,A M21:
JC M22
MOV A,R1 ;R2减2月天数,够减 MOV R2,A AJMP MM2 M22:
CJNE R3,#00H,M23 ;R2减2月天数
LJMP Y2 ;不够减,判,R3为0否 M23:
MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让二月减
MOV R2,A ;还不够,则转Y2 MOV R3,#00H
AJMP M2 MM2:
LCALL CHECKRE ;查2月,如果不为闰月 CJNE A,#02H,M3 ;转3月 RM2:
MOV A,R4 ANL A,#0FH