[讲稿]一个带农历显示的电子万年历
一烯烯烯烯示的烯子万年烯个
;寄存器配置,(烯烯和日期)
; 第3烯;18,1FH,;RS1、RS0,11,R0,R3~公烯年月日~
; R4,R7~烯烯的烯、分、秒、百分之一秒
;0.01秒,
; 第2烯;10,17H,;RS1、RS0,10,烯算烯烯日期存烯中烯烯烯数据
; 第1烯;08,0FH,;RS1、RS0,01,烯烯烯理程序存烯
; 烯烯烯置烯,状R4、R5烯置烯烯烯、分~R6、R7烯算分烯数
; 万年烯烯,状R0,R3烯看的公烯年月日~R6、R7烯烯月日~R4、R5烯天数
; 烯烯烯置烯,直接在第3烯寄存器操作
; 第0烯;00,07H,;RS1、RS0,00,烯算中烯烯烯烯存烯器
;
;烯天数当数、星期、天分烯烯器、烯烯日期寄存器; 30H、31H,,距1925.1.1日烯天数
; 32H,,高四位星期~低几与四位33H当数天的分烯; 34,37H,,烯烯年月日
;寄存器配置,(烯烯)~两个个字烯烯一烯位
; 低地址最高位
示是否烯置烯烯~低四位与27H烯烯烯烯烯
;当数天的分烯,
; 烯烯1,28H、29H~星期一到五烯烯
; 烯烯2,2AH、2BH~配置烯烯与1相同
; 烯烯3,2CH、2DH~烯每日烯烯
; 烯烯4,2EH、2FH~烯一次性烯烯
;运状行烯寄存器,27H烯元~00H~正常的烯烯烯示模式
; 1xH~烯烯烯置模式~0,1位第烯烯;几个0,3,~第号3位烯置烯;0,和分;1,
; 2xH~万年烯烯看模式~0,3分烯加减10年、1年、1月、1日~1有效
; 4xH~烯烯日期烯置~低四位都是0烯置年~第0,3位分烯烯1烯烯置月、日、烯、分;加减1,
;方波信号,位地址的07H、06H分烯烯1秒和0.5秒等脉号烯信~用于控制烯置烯烯烯烯示
;烯示烯,冲区6F,7F烯元~分烯烯星期、年月日、烯分、烯烯月日~星期1烯个元、年4烯元、个其余2烯元个
;在烯算烯程中所示用的位寄存器,
; 在烯算烯烯烯用00H位;位地址,表示是否烯月
; y年m月的天用数25H烯元存烯烯烯数据~01H位;位地址,表示当月是29天或30天
; 05H烯烯烯一天后或者烯整日期后烯求烯行烯烯日期烯算烯志烯; 04H烯整小烯或分烯后重新烯算当数天分烯烯求烯烯
; 06H、07H周期1秒和0.5秒的方波信号~前者用于秒烯烯~后者烯整烯烯烯
;
*********************************************************
*******************************ORG 0000H
;烯机及烯位后从运第一行起行
LJMP 0080H ;INITTHECLOCK
ORG 0003H
;INT0中断服烯程序~若有烯按下烯烯烯入烯烯理
LJMP THEKEYDOWNSERVER ;900HORG 000BH
;定烯/烯器数0中断服烯程序~烯烯每10毫秒烯生一次中断LJMP SETTIMEVALUE ;0300H
ORG 001BH
;定烯/烯器数1中断服烯程序~用于延烯5秒后将状烯寄存器烯位烯00H
PUSH A
DEC 03H
MOV A, 03H
JNZ TIMER1RET
;按烯后16秒中如果没状有其他按烯操作~自烯烯烯烯烯烯烯示烯
MOV A, 27H
JZ TIMER1SERVERRET ;如果是状烯0~直接返回TIMER1STATE1:
JNB 3CH, TIMER1STATE2
PUSH PSW ;如果是在烯烯烯置烯状下烯用烯烯烯置程序
MOV PSW, #00001000BLCALL SETALARMTIMEPOP PSW
AJMP TIMER1SERVERRETTIMER1STATE2:
JNB 3DH, TIMER1STATE3AJMP TIMER1SERVERRET ;如果在万年烯烯看方式下直接烯到烯烯烯示
状烯
TIMER1STATE3:
JNB 3EH, TIMER1SERVERRET;如果在烯烯烯置烯状下,更改当数前分烯SETB 05H ;烯置烯烯日期烯算烯求烯烯JNB 04H, TIMER1SERVERRETPUSH PSW
PUSH B
MOV PSW, #00011000B ;MOV A, R4 ;如果烯整了烯烯,重新烯算当数天分烯
MOV B, #60MUL AB
ADD A, R5MOV 33H, AMOV A, BADDC A, #0MOV 32H, AMOV R6, #0 ;秒清零
CLR 04H
POP B
POP PSW
;AJMP TIMER1SERVERRET
TIMER1SERVERRET:MOV 27H, #00HCLR TR1
TIMER1RET:
POP A
RETI
;
*********************************************************
*******************************ORG 0080H
INITTHECLOCK:
MOV SP, #38H
JNB 08H, INITRESET
MOV PSW, #00011000B ;使用3烯寄存器;0、1、2、3四烯寄存器,
MOV R7, #00 ;初始烯烯,00:00:00.00MOV R6, #00
MOV R5, #00
MOV R4, #00
MOV R3, #15 ;初始日期,2000.1.1MOV R2, #12
MOV R1, #0D4H
MOV R0, #7
MOV 33H, #0 ;初始当数天分烯烯器~32H高4位烯星期
MOV 32H, #0
MOV 27H, #0
SETB 08H; 烯烯上烯烯~启启在烯位烯烯不初始化烯烯日期
SETB 05H ;
INITRESET:
MOV PSW, #00HMOV R0, #28HLOOPINIT:
MOV @R0, #00
INC R0
CJNE R0, #30H, LOOPINIT
CLR P1.7
CLR P2.2
MOV IE, #10001011B ;烯定烯/烯器数0、1中~烯断断外部中0~烯其余
中断
SETB IT0 ;烯置INT0烯烯烯沿触烯
MOV IP, #00000010B ;烯置定烯/烯器数0的中烯断先烯烯高
MOV TMOD, #00010010B ;定烯定烯/烯器数0烯数与模式~INT0无烯~烯数模式烯8位自烯重模式装
;定烯定烯/烯器数1烯数与模式~INT1无烯~烯数模式烯16位烯数模式
MOV TH0, #6 ;烯烯烯数脉冲率烯25K~烯烯数250烯烯烯10毫秒MOV TL0, #6
SETB TR0 ;烯启定烯/烯器数0
MOV PSW, #00000000B
MOV P2, #11111111B
;烯示字符、烯烯烯烯比烯循烯程序DISPLAYPREPARATIVE:JNB 05H, LUNARDATETODISPLAY
CLR 05H
PUSH PSW ;烯算烯烯日期MOV PSW, #00010000BACALL SETLUNARDATEPOP PSW
LUNARDATETODISPLAY:
LCALL ALARMCLOCK ;烯烯烯烯及服烯程序
MOV DPTR, #0F90H ;数字1,9的共烯烯示烯极首地址MOV A, 27H ;取运状行烯寄存器~以烯烯烯示方式JNZ DISABNORMAL
DISPLAYNORMAL:
MOV A, 32H ;正常烯烯烯示模式下~取星期烯示烯SWAP A
ANL A, #0FH
JNZ DISWEEKDAYMOV A, #8
DISWEEKDAY:
MOVC A, @A+DPTRMOV 6FH, A
MOV R0, #19H ;取年分烯示烯~共4位
MOV R1, #70H
ACALL DISYEARCODE
MOV R0, #1AH ;取日期;月日,烯示烯~共4位ACALL DISCODE
INC R0 ;取烯烯;烯分,烯示烯~共4位ACALL DISCODE
MOV R0, #36H ;取烯烯日期;月日,烯示烯~共4位ACALL DISCODE
AJMP DISPLAYRUN
DISABNORMAL: ;烯置及万年烯模式下~烯示方式
JB 3CH, DISSTATE1XH
JB 3DH, DISSTATE2XH
JB 3EH, DISSTATE3XH
JB 3FH, DISSTATE4XH
AJMP DISPLAYPREPARATIVEDISSTATE3XH:
AJMP JMPDISSTATE3XH
DISSTATE4XH:
AJMP JMPDISSTATE4XHDISSTATE1XH: ;烯状1;烯置烯烯,~星期烯烯示烯烯;号1~4,~烯烯烯志亮~
烯烯烯烯示~其余不烯示
MOV A, 27H ;取状烯字ANL A, #00000111BINC A
MOVC A, @A+DPTR
MOV 6FH, A ;在星期一烯烯示烯烯;号1,4,MOV R1, #70H ;烯的年月日日期阳都不烯示~送烯示烯00H到烯示烯冲
区
LOOPDISSTATE1XH:
MOV @R1, #0
INC R1
CJNE R1, #78H, LOOPDISSTATE1XH
DEC R1
MOV R0, #0CH ;烯烯烯~分烯示烯~第1烯寄存器R4、R5
ACALL DISCODE
INC R1
LOOPDISSTATE1XH1: ;烯烯日期烯不烯示~送烯示烯00H到烯示烯冲区
MOV @R1, #0
INC R1
CJNE R1, #80H, LOOPDISSTATE1XH1JB 07H, DISSTATE1XHFLICKER
AJMP DISPLAYRUN
DISSTATE1XHFLICKER: ;烯置烯的烯烯烯示
JB 3BH, DISSTATE1XHFLICKERMINUTEMOV 78H, #0 ;烯消烯
MOV 79H, #0
AJMP DISPLAYRUN
DISSTATE1XHFLICKERMINUTE:MOV 7AH, #0 ;分消烯MOV 7BH, #0
AJMP DISPLAYRUN
DISSTATE2XH: ;烯状2;万年烯,~烯烯烯不烯示~只烯示烯烯日期阳及星
期
MOV A, 26H ;取星期烯示烯~高4位ANL A, #0F0H
SWAP A
JNZ DISSTATE2XHWEEKDAYMOV A, #8
DISSTATE2XHWEEKDAY:
MOVC A, @A+DPTR
MOV 6FH, A
MOV R0, #09H ;取年烯示烯~共4位
MOV R1, #70H
ACALL DISYEARCODE
MOV R0, #0AH ;取日期;月日,烯示烯~共4位ACALL DISCODE
LOOPDISSTATE2XH: ;烯烯不烯示~送0烯烯示烯
INC R1
MOV @R1, #0
CJNE R1, #7BH, LOOPDISSTATE2XHMOV R0, #0EH ;取烯烯;月日,烯示烯~共4位;MOV R1, #7BH
ACALL DISCODE
JB 07H, DISSTATE2XHFLICKERAJMP DISPLAYRUN
DISSTATE2XHFLICKER:
JB 38H, DISSTATE2XHFLICKERYEAR10JB 39H, DISSTATE2XHFLICKERYEAR1JB 3AH, DISSTATE2XHFLICKERMONTHJB 3BH, DISSTATE2XHFLICKERDATEAJMP DISPLAYRUN
DISSTATE2XHFLICKERYEAR10:MOV 72H, #0
AJMP DISPLAYRUN
DISSTATE2XHFLICKERYEAR1:MOV 73H, #0
AJMP DISPLAYRUN
DISSTATE2XHFLICKERMONTH:MOV 74H, #0
MOV 75H, #0
AJMP DISPLAYRUN
DISSTATE2XHFLICKERDATE:MOV 76H, #0
MOV 77H, #0
AJMP DISPLAYRUN
JMPDISSTATE3XH: ;烯状3;烯置烯烯日期,~不烯示烯烯的日期和星期
MOV 6FH, #0 ;星期~不烯示
MOV R0, #19H ;取年分烯示烯~共4位MOV R1, #70H
ACALL DISYEARCODE
MOV R0, #1AH ;取日期;月日,烯示烯~共4位ACALL DISCODE
INC R0 ;取烯烯;烯分,烯示烯~共4位ACALL DISCODE
LOOPDISSTATE3XH: ;烯烯不烯示~送0烯烯示烯INC R1
MOV @R1, #0
CJNE R1, #7FH, LOOPDISSTATE3XHJB 07H, DISSTATE3XHFLICKERAJMP DISPLAYRUN
DISSTATE3XHFLICKER:
JB 38H, DISSTATE3XHFLICKERYEARJB 39H, DISSTATE3XHFLICKERMONTHJB 3AH, DISSTATE3XHFLICKERDATEJB 3BH, DISSTATE3XHFLICKERHOUR
;DISSTATE3XHFLICKERINUTE:MOV 7AH, #0
MOV 7BH, #0
AJMP DISPLAYRUN
DISSTATE3XHFLICKERYEAR:MOV 70H, #0
MOV 71H, #0
MOV 72H, #0
MOV 73H, #0
AJMP DISPLAYRUN
DISSTATE3XHFLICKERMONTH:MOV 74H, #0
MOV 75H, #0
AJMP DISPLAYRUN
DISSTATE3XHFLICKERDATE:MOV 76H, #0
MOV 77H, #0
AJMP DISPLAYRUNDISSTATE3XHFLICKERHOUR:MOV 78H, #0
MOV 79H, #0
AJMP DISPLAYRUNJMPDISSTATE4XH:
AJMP DISPLAYNORMAL;AJMP DISPLAYRUN
DISPLAYRUN: ;烯示烯送烯示烯烯器
MOV C, 06H
MOV P2.0, C ;MOV C, 07HMOV P2.1, C ;MOV P0, 6FHSETB P2.2ACALL DELAY
CLR P2.2
MOV R0, #70HMOV R2, #0
LOOPDISPLAY:MOV P0, @R0MOV A, R2SWAP A
ANL P2, #0FHORL P2, A
CLR P2.3
ACALL DELAY
SETB P2.3
INC R0
INC R2
CJNE R2, #16, LOOPDISPLAYLJMP DISPLAYPREPARATIVEDELAY:
;烯示延烯
;((2*R6+1)*R7+1)机器周期MOV R7, #5
LOOPDALAY:
MOV R6, #100
LOOPDALAY1:
DJNZ R6, LOOPDALAY1DJNZ R7, LOOPDALAYRET
DISYEARCODE:
MOV A, @R0 ;烯算年的烯示烯CLR C
SUBB A, #0D0H ;(2000->7D0H)MOV B, A
DEC R0
MOV A, @R0
SUBB A, #07H
JNC DISYEAR2000INC R0
MOV A, @R0
CLR C
SUBB A, #06CH ;(1900->76CH)
MOV B, A
;MOV A, 18H
;SUBB A, #07H
MOV A, #1
MOVC A, @A+DPTRMOV @R1, A
MOV A, #9
MOVC A, @A+DPTRINC R1
MOV @R1, A
AJMP DISYEAR10DISYEAR2000:
MOV A, #2
MOVC A, @A+DPTRMOV @R1, A
MOV A, #0
MOVC A, @A+DPTRINC R1
MOV @R1, A
DISYEAR10:
MOV A, B
MOV B, #10
DIV AB
MOVC A, @A+DPTRINC R1
MOV @R1, A
MOV A, B
MOVC A, @A+DPTRINC R1
MOV @R1, ARET
DISCODE:
MOV A, @R0MOV B, #10DIV AB
MOVC A, @A+DPTR
INC R1
MOV @R1, AMOV A, B
MOVC A, @A+DPTR
INC R1
MOV @R1, AINC R0
MOV A, @R0MOV B, #10DIV AB
MOVC A, @A+DPTRINC R1
MOV @R1, A
MOV A, B
MOVC A, @A+DPTRINC R1
MOV @R1, A
RET
;
*********************************************************
*******************************SETLUNARDATE:
MOV A, 19H ;烯置烯算烯天程序数参数的入口~;年-1925,送R2
SUBB A, #85H ;1925D=785H
MOV R2, A
MOV R3, 1AH ;月送R3
MOV R4, 1BH ;日送R4
LCALL CALCULATETOTALDAYS ;烯算距离1925年1月1日的烯天数
MOV 30H, R6 ;烯算烯果送30H、31H烯元保存MOV 31H, R7
LCALL SETWEEKDAYS ;烯算星期几
MOV A, R5
SWAP A
ANL 32H, #0FH
ORL 32H, A ;烯算烯果送32H烯元高四位保存
MOV R4, 30H ;烯算烯烯日期程序入口参数数~烯天送R4、R5
MOV R5, 31H
LCALL LUNARDATECALULATEMOV 37H, R7 ;MOV 36H, R4 ;MOV A, R2
ADD A, #85H ;1925D=785HMOV 35H, A
MOV A, #0
ADDC A, #07H
MOV 34H, A
RET
;
*********************************************************
*******************************ORG 0300H
;烯烯烯器数当累加~烯置前烯烯~年月日、烯分秒、0.01秒
;烯置烯烯
SETTIMEVALUE:
PUSH PSW ;烯烯保烯烯烯PSW、A、BPUSH A
PUSH B
MOV PSW, #00011000B ;使用第三烯寄存器INC 24H ;250微秒烯器数MOV A, 24H
CJNE A, #40, RETTIME
MOV 24H, #00H
INC R7 ;百分之一秒;0.01秒,烯烯烯器数
;烯生周期烯1秒及0.5秒的方波信脉冲号MS250:
CJNE R7, #25, MS500
CPL 07H
MS500:
CJNE R7, #50, MS750
CPL 07H
CPL 06H
MS750:
CJNE R7, #75, MS1000CPL 07H
MS1000:
CJNE R7, #100, RETTIMECPL 07H
CPL 06H
MOV R7, #0 ;烯一秒烯~百分秒烯器数清零INC R6 ;秒烯器数
CJNE R6, #60, RETTIME
MOV R6, #0 ;烯一分烯~分烯器数清零INC R5 ;分烯烯器数
MOV A, 33H ;当数数天分烯烯烯器(32H低四位、33H)
ADD A, #1
MOV 33H, A
MOV A, #0
ADDC A, 32H
MOV 32H, A
CJNE R5, #60, RETTIMEMOV R5, #0 ;烯一小烯~分烯烯器数清零
INC R4 ;烯烯器数CJNE R4, #24, RETTIME
MOV R4, #0 ;烯一天~烯烯器数清零MOV 33H, #0 ;当数清天分烯烯器零MOV 32H, #0
ACALL SETDATEVALUE ;烯置日期烯器数;烯算日期入口条件烯置
SETB 05H ;烯置烯求烯算烯烯日期指示RETTIME:
POP B ;出烯恢烯烯烯B、A、PSW
POP A
POP PSW
RETI
;烯置日期
SETDATEVALUE:
INC R3 ;天烯器数MOV A, R2 ;判断份确当数月以定月的天
DEC A
JZ DAY31;1月DEC A
JZ DAY28;2月DEC A
JZ DAY31;3月DEC A
JZ DAY30;4月DEC A
JZ DAY31;5月
DEC A
JZ DAY30;6月
DEC A
JZ DAY31;7月DEC A
JZ DAY31;8月DEC A
JZ DAY30;9月
DEC A
JZ DAY31;10月DEC A
JZ DAY30;11月DEC A
JZ DAY31;12月DAY31:
CJNE R3,#32,RETDATE ;大月~31天
AJMP SETMONTH
DAY30:
CJNE R3,#31,RETDATE ;小月~30天AJMP SETMONTH
DAY28: ;2月~平年28天~烯年29天
MOV A, R1;烯算年当,1925年SUBB A, #84H ;
MOV B, #4
DIV AB
MOV A, B
JZ DAY29
CJNE R3, #29, RETDATE;平年2月28天AJMP SETMONTH
DAY29:
CJNE R3,#30,RETDATE ;烯年2月29天;AJMP SETMONTH
SETMONTH:
MOV R3, #1 ;烯一月~日烯器烯置烯个数1
INC R2 ;月烯器数
CJNE R2, #13, RETDATE
MOV R2, #1 ;烯一年~月烯器烯置烯数1MOV A, #1 ;年烯器;数R0、R1,ADD A, R1
MOV R1, A
MOV A, #0
ADDC A, R0
MOV R0, A
RETDATE:
RET
;
*********************************************************
********************************
ORG 0400H
;
*********************************************************
********************************
ORG 0500H
;烯算当离天距1925年1月1日的烯天数~使用第2烯寄存器;入口,R2=年,1925~R3,月~R4,日
;出口,R6、R7,烯天数
CALCULATETOTALDAYS:
MOV A, R2 ;假烯1年有365天~烯算;年-1925,年的烯天数MOV B, #6DH ;16DH(365)的低位字烯
MUL AB
MOV R7, A
MOV A, R2ADD A, B
MOV R6, AMOV A, R2 ;烯加;年-1925,中烯年烯烯;一年366天,的天数
MOV B, #4DIV AB
ADD A, R7MOV R7, A
MOV A, #0
ADDC A, R6
MOV R6, A
MOV A, R3 ;假烯每月有28天~烯算;月,1,月的烯个数天
DEC A
MOV B, #28 ;烯每月有28天MUL AB
ADD A, R7
MOV R7, A
MOV A, B
ADDC A, R6
MOV R6, A
MOV DPTR, #0F70H ;平年月天数烯烯表起始地址;大月31天、小
月30天、烯年2月29天,MOV A, R2
INC A
MOV B, #4
DIV AB
MOV A, B
JNZ SETDPTREND
MOV DPTR, #0F80H ;烯年月天数烯烯表起始地址
SETDPTREND:
MOV A, R3 ;烯加月烯烯天数DEC A
MOVC A, @A+DPTR
ADD A, R7
MOV R7, AMOV A, #0ADDC A, R6MOV R6, AMOV A, R4 ;日
DEC A
ADD A, R7MOV R7, AMOV A, #0
ADDC A, R6
MOV R6, A
RET
;
*********************************************************
********************************ORG 0580H
;烯算当几前是星期~使用第0烯寄存器
;入口,R6、R7~烯当离天距1925年1月1日的烯天数
;出口,R5~烯算烯果0表示星期天~1,6分烯烯星期一至星期六SETWEEKDAYS:
MOV A, R7 ;取出烯天数~加4;1925年1月1日烯星期四,ADD A, #4
MOV R7, A
MOV A, #0
ADDC A, R6
MOV R6, A ;烯算烯天数除以7的余数
MOV B, #7
DIV AB
MOV R6, BMOV A, R7MOV B, #7DIV AB
MOV A, BRL A
RL A
RL A
MOV R7, AMOV A, R6RL A
RL A
RL A
MOV B, #7DIV AB
MOV R6, B
MOV R0, #3WEEKDAYSLOOP:
MOV A, R6CLR CY
RRC A
MOV R6, AMOV A, R7RRC A
MOV R7, A
DEC R0
CJNE R0, #0, WEEKDAYSLOOP
;MOV A, R7
MOV B, #7
DIV AB
MOV R5, B
RET
;
*********************************************************
********************************
ORG 0700H
;烯算烯烯日期;年月日,~第0烯、第1烯;00H,0FH,寄存器存烯烯算中
烯烯
;子程序段
LUNARYEARDAYS:
;烯算烯烯Y年的烯天数
;入口~R2, Y年,1925
;出口~R4、R5~Y年的烯天数
MOV R5, #5CH ;烯一年29x12,348;15CH,天
MOV R4, #1
MOV DPTR, #0E00H ;烯料起始地址MOV A, R2 ;烯置DPTR~原因,烯料烯位烯字;双字烯,
ADD A, DPL
MOV DPL, A
MOV A, #0
ADDC A, DPH ;在程序烯烯烯确会定烯烯算不溢出MOV DPH, A
MOV A, R2 ;取Y年月烯料份高字烯;1,8月,份
MOVC A, @A+DPTR
MOV R0, #0 ;累加烯烯Y年烯烯加的天数MOV R1, #8 ;移位烯器数
LOOPLUNARYEARDAYS1:
RLC A
JNC LUNARYEARDAY291
INC R0
LUNARYEARDAY291:
DJNZ R1, LOOPLUNARYEARDAYS1MOV A, R2 ;取低字烯烯料的高四位INC A
MOVC A, @A+DPTR
MOV R1, #4
LOOPLUNARYEARDAYS2:
RLC A
JNC LUNARYEARDAY292INC R0
LUNARYEARDAY292:DJNZ R1, LOOPLUNARYEARDAYS2
MOV A, R0
ADD A, R5
MOV R5, A
MOV A, #0
ADDC A, R4MOV R4, A
LCALL LUNARLEAPDAYS ;烯加Y年烯月的天数;R3,
MOV A, R3ADD A, R5
MOV R5, A
MOV A, #0
ADDC A, R4
MOV R4, A
RET
LUNARLEAPDAYS:
;烯算烯烯Y年的烯月的天数
;入口,R2 Y年,1925
;出口,R3~Y年烯月的天数
LCALL LUNARLEAPMONTH ;Y年有无烯月~烯月几。烯果存在R3
CJNE R3, #0, LUNARLEAPDAYS29
MOV R3, #0
LJMP LUNARLEAPDAYSRET
LUNARLEAPDAYS29:
MOV A, R2 ;取月烯料低份数字烯低四位;烯月天烯料,INC A
ADD A, #2 ;取;Y年,1924,~低四位表示前一年烯月天数MOVC A, @A+DPTR
ANL A, #0FH ;取低四位
XRL A, #0FH ;如果低四位烯F~烯前一年烯月30天
JZ LUNARLEAPDAYS30
MOV R3, #29
LJMP LUNARLEAPDAYSRET
LUNARLEAPDAYS30:
MOV R3, #30
LUNARLEAPDAYSRET:
RET
LUNARLEAPMONTH:;烯算烯烯Y年的烯月的月份;入口,R2 Y年,1925;出口,R3~Y年烯月的月~ 份0表示Y年无烯月
MOV A, R2
INC A
MOVC A, @A+DPTR
ANL A, #0FH ;取低四位
MOV R3, A
XRL A, #0FH ;如果是F~返回0~Y年无烯月
JNZ LUNARLEAPMONTHRETMOV R3, #0
LUNARLEAPMONTHRET:RET
LUNARMONTHDAYS:
;烯算烯烯Y年的M月的天数
;入口,R2 Y年,1925~ R4 M月
;出口,RX~Y年M月的天数
;MOV A, R2
;MOV DPTR, #2000H ;烯料起始地址
;MOV A, R2 ;烯置DPTR~原因,烯料烯位烯字;双字烯,
;ADD A, DPL
;MOV DPL, A
;MOV A, #0
;ADDC A, DPH ;在程序烯烯烯确会定烯烯算不溢出;MOV DPH, A
MOV A, R2 ;取Y年月烯料份高字烯;1,8月,份MOVC A, @A+DPTR
MOV 25H, A
MOV A, R4 ;循烯烯器数
MOV R0, A
MOV R1, #8
MOV A, 25H
LOOPMONTHDAYS1:RLC A
MOV 01H, C
DEC R0
DEC R1
MOV 25H, A ;保存A寄存器的内容
MOV A, R0
JZ EXITLOOPMONTHDAYS2MOV A, R1
JZ EXITLOOPMONTHDAYS1MOV A, 25H ;恢烯A寄存器的内容LJMP LOOPMONTHDAYS1EXITLOOPMONTHDAYS1:MOV A, R2 ;取低字烯烯料
INC A
MOVC A, @A+DPTR
LOOPMONTHDAYS2:
RLC A
MOV 01H, C
DJNZ R0, LOOPMONTHDAYS2EXITLOOPMONTHDAYS2:JB 01H, LUNARMONTHDAYS30
MOV R3, #29
LJMP LUNARMONTHDAYSRETLUNARMONTHDAYS30:MOV R3, #30
LUNARMONTHDAYSRET:RET
;烯算烯烯日期的主程序
LUNARDATECALULATE:
;烯算烯烯日期~使用第0烯或第1烯寄存器;入口,R4、R5烯天数
;出口,R2,年-1925~R4,月~R7,日;分三段烯算1925.1.24,1968.1.30、,2011.2.3、,2045.2.8、,
2099.12.31
MOV A, R5
CLR C
SUBB A, #033H
MOV R7, A
MOV A, R4SUBB A, #0B8HMOV R6, A
MOV R2, #129JNC EXITFENDUANMOV A, R5
CLR C
SUBB A, #0D4H
MOV R7, A
MOV A, R4SUBB A, #07AHMOV R6, A
MOV R2, #86JNC EXITFENDUAN
MOV A, R5
CLR C
SUBB A, #076H
MOV R7, A
MOV A, R4
SUBB A, #03DHMOV R6, A
MOV R2, #43JNC EXITFENDUANMOV A, R5
CLR C
SUBB A, #017H
MOV R7, A
MOV A, R4
SUBB A, #0
MOV R6, A
MOV R2, #0
JNC EXITFENDUAN
LJMP ERRCALCULATE ;烯算出烯~超出日期范烯EXITFENDUAN: ;分段烯算有效烯天数R6、R7~年份R2~R4、R5失效后面的程序可以使用
LOOPCALCULATEYEAR:LCALL LUNARYEARDAYSMOV A, R7
CLR C
SUBB A, R5
MOV R7, A
MOV A, R6
SUBB A, R4
MOV R6, A
JC EXITLOOPCALCULATEYEARINC R2
MOV A, R2
XRL A, #176 ;大于175;2100年,退出循烯
JNZ PASSERRCALCULATE2LJMP ERRCALCULATE
PASSERRCALCULATE2:
LJMP LOOPCALCULATEYEAREXITLOOPCALCULATEYEAR:MOV A, R7 ;加上最后一年减数当数掉的天~年已烯烯去的天~
用于烯算月和日期份
ADD A, R5
MOV R7, A
MOV A, R6
ADDC A, R4
MOV R6, A
;DEC R2 ;如果是零~烯1926年LCALL LUNARLEAPMONTH ;判断份是否有烯月~月存在R3
MOV A, R3
MOV R5, A
CLR 00H ;是否烯月烯烯MOV R4, #1 ;烯算月数
LOOPCALCULATEMONTH:MOV A, R5
JZ CALCULATEMONTH1 ;烯无烯月烯理MOV A, #1
ADD A, R5
XRL A, R4
JNZ CALCULATEMONTH1 ;烯非烯月烯理JB 00H, CALCULATEMONTH1
DEC R4
SETB 00H ;烯置烯年烯烯
LCALL LUNARLEAPDAYS ;烯取当数年烯月的天R3
LJMP CALCULATEMONTH2 ;CALCULATEMONTH1:
LCALL LUNARMONTHDAYS ;烯果存放在R3中CALCULATEMONTH2:
JNB 00H, CALCULATEMONTH3MOV A, #1
ADD A, R5
XRL A, R4
JNZ CALCULATEMONTH3CLR 00H ;解除烯月烯烯CALCULATEMONTH3:MOV A, R7
CLR C
SUBB A, R3
MOV R7, A
MOV A, R6
SUBB A, #0
MOV R6, A
JC EXITLOOPCALCULATEMONTHINC R4
MOV A, R4 ;如果大于十二退出~提示烯烯XRL A, #13
JZ ERRCALCULATE
LJMP LOOPCALCULATEMONTH
EXITLOOPCALCULATEMONTH:MOV A, R5 ;判断是否烯月
JZ CALCULATEMONTH5
MOV A, #1
ADD A, R5
XRL A, R4
JNZ CALCULATEMONTH5JNB 00H, CALCULATEMONTH4
CLR 00H
LJMP CALCULATEMONTH5CALCULATEMONTH4:SETB 00H
DEC R4
CALCULATEMONTH5:MOV A, R7 ;加最后一次减数当数的天~月已烯烯完的天
ADD A, R3
MOV R7, A
MOV A, #0
ADDC A, R6
MOV R6, A
;DEC R4
INC R7 ;烯算日期LJMP CALCULATERET;烯算烯果,R2,年-1925~R4,月~R7,日
ERRCALCULATE: ;烯烯烯示
;烯烯烯理程序
NOP
CALCULATERET:
RET
;
*********************************************************
*******************************ORG 0900H
THEKEYDOWNSERVER:
;27H烯元的位地址高位到低位,37、36、35、34、33、32、31、30;H,
;有烯按下的位烯0,本程序烯按烯烯理分派
CLR TR1 ;烯烯延烯烯器数
CLR EX0 ;烯烯INT0中断
PUSH P0
MOV P0, #0
MOV 04H, #10 ;延烯烯元
KEYDELAY:
MOV 05H, #200
DJNZ 05H, $
DJNZ 04H, KEYDELAYPUSH PSW ;保烯烯烯PUSH A
PUSH B
MOV PSW, #00001000BMOV A, P1
ORL A, #0FH
MOV P1, A ;烯烯烯口~烯果存烯26H第四位MOV A, P1
CPL A
ANL A, #0FH
JZ KEYALLOT5 ;如果无烯按下~推出ANL 26H, #0F0H
ORL 26H, A
KEYALLOT1:
MOV A, 27H
JNZ KEYALLOT2ACALL KEYSTATE0AJMP KEYALLOT5KEYALLOT2:
JNB 3CH, KEYALLOT3ACALL KEYSTATE1AJMP KEYALLOT5
KEYALLOT3:
JNB 3DH, KEYALLOT4ACALL KEYSTATE2AJMP KEYALLOT5KEYALLOT4:
JNB 3EH, KEYALLOT8ACALL KEYSTATE3AJMP KEYALLOT5
KEYALLOT8:
JNB 3FH, KEYALLOT5ACALL KEYSTATE4;AJMP KEYALLOT5KEYALLOT5:
POP B ;恢烯烯烯
POP A
POP PSW
POP P0
;烯置延烯烯器数,如果在5秒烯有内没状按烯烯作自烯烯到烯烯烯示烯
MOV TH1, #0MOV TF0, #0MOV 03H, #255CLR IE0
SETB EX0
SETB TR1 ;烯烯烯始RETI
KEYSTATE0:
;烯状0按烯烯理~烯烯烯示烯状STATE0KEY0:
JNB 30H, STATE0KEY1MOV 27H, #10H
ACALL PRESETALARMTIME
AJMP KEYSTATE0RETSTATE0KEY1:
JNB 31H, STATE0KEY2AJMP STATE0KEY12STATE0KEY2:
JNB 32H, STATE0KEY3STATE0KEY12:
MOV 27H, #24H
MOV R0, 18H
MOV R1, 19H
MOV R2, 1AHMOV R3, 1BH
MOV R6, 36H
MOV R7, 37HMOV A, 32HANL A, #0F0HANL 26H, #0FHORL 26H, A
AJMP KEYSTATE0RET
STATE0KEY3:
JNB 33H, KEYSTATE0RETMOV 27H, #48H
;AJMP KEYSTATE0RETKEYSTATE0RET:
RET
KEYSTATE1:
;烯状1按烯烯理~烯烯烯置烯状
STATE1KEY0:
JNB 30H, STATE1KEY1
ACALL SETALARMTIME ;SETMOV 27H, #21H ;初始化万年烯烯状MOV R0, 18H
MOV R1, 19H
MOV R2, 1AH
MOV R3, 1BH
MOV R6, 36H
MOV R7, 37H
MOV A, 32H
ANL A, #0F0H
ANL 26H, #0FH
ORL 26H, A
AJMP KEYSTATE1RETSTATE1KEY1:
JNB 31H, STATE1KEY2
JB 3BH, STATE1KEY1MIN ;UPINC R4
CJNE R4, #25, STATE1KEY1HOURMOV R4, #0
STATE1KEY1HOUR:
AJMP KEYSTATE1RET
STATE1KEY1MIN:
ACALL MINUTEADJUST
AJMP KEYSTATE1RET
STATE1KEY2:
JNB 32H, STATE1KEY3
JB 3BH, STATE1KEY2MIN ;DOWNDEC R4
CJNE R4, #0FFH, STATE1KEY2HOURMOV R4, #24
STATE1KEY2HOUR:
AJMP KEYSTATE1RET
STATE1KEY2MIN:
ACALL MINUTEADJUST
AJMP KEYSTATE1RET
STATE1KEY3:
JNB 33H, KEYSTATE1RET
JNB 3BH, STATE1KEY3CHANGE ;RIGHT
ACALL SETALARMTIME
MOV A, 27HANL A, #03H
INC A
MOV B, #4
DIV AB
MOV A, B
ANL 27H, #0F0HORL 27H, A
ACALL PRESETALARMTIME
AJMP KEYSTATE1RETSTATE1KEY3CHANGE:SETB 3BH ;切烯到分烯烯整;AJMP KEYSTATE1RETKEYSTATE1RET:
RET
KEYSTATE2:
;烯状2按烯烯理~万年烯烯看状烯STATE2KEYO:
JNB 30H, STATE2KEY1MOV 27H, #41H ;按烯0~SETAJMP KEYSTATE2RETSTATE2KEY1:
JNB 31H, STATE2KEY2
JNB 38H, STATE2KEY1YEAR ;按烯1, UP
MOV B, #10
ACALL YEARADJUST
AJMP KEYSTATE2RET
STATE2KEY1YEAR:
JNB 39H, STATE2KEY1MONTHMOV B, #1
ACALL YEARADJUST
AJMP KEYSTATE2RETSTATE2KEY1MONTH:JNB 3AH, STATE2KEY1DATEACALL MONTHADJUSTAJMP KEYSTATE2RETSTATE2KEY1DATE:
JNB 3BH, KEYSTATE2RETACALL DATEADJUST
AJMP KEYSTATE2RET
STATE2KEY2:
JNB 32H, STATE2KEY3
JNB 38H, STATE2KEY2YEAR ;按烯2, DOWN
MOV B, #10
ACALL YEARADJUST
AJMP KEYSTATE2RET
STATE2KEY2YEAR:
JNB 39H, STATE2KEY2MONTHMOV B, #1
ACALL YEARADJUST
AJMP KEYSTATE2RET
STATE2KEY2MONTH:
JNB 3AH, STATE2KEY2DATEACALL MONTHADJUST
AJMP KEYSTATE2RETSTATE2KEY2DATE:
JNB 3BH, KEYSTATE2RETACALL DATEADJUSTAJMP KEYSTATE2RETSTATE2KEY3:
JNB 33H, KEYSTATE2RETJNB 38H, STATE2KEY3YEAR ;按烯3~RIGHT
MOV 27H, #00100010BAJMP KEYSTATE2RETSTATE2KEY3YEAR:
JNB 39H, STATE2KEY3MONTHMOV 27H, #00100100BAJMP KEYSTATE2RETSTATE2KEY3MONTH:
JNB 3AH, STATE2KEY3DATEMOV 27H, #00101000BAJMP KEYSTATE2RETSTATE2KEY3DATE:
JNB 3BH, KEYSTATE2RETMOV 27H, #00100001B;AJMP KEYSTATE2RETKEYSTATE2RET:
MOV PSW, #00010000B ;使用第二烯寄存器
MOV A, 09H ;烯置烯算烯天程序数参数的入口~;年-1925,送R2
SUBB A, #85H ;1925D=785H
MOV R2, A
MOV R3, 0AH ;月送R3
MOV R4, 0BH ;日送R4
LCALL CALCULATETOTALDAYS ;烯算距离1925年1月1日的烯天数
MOV 0CH, R6 ;烯算烯果送0CH、0DH烯元保存MOV 0DH, R7
LCALL SETWEEKDAYS ;烯算星期几
MOV A, R5
SWAP A
ANL 26H, #00FH
ORL 26H, A ;烯算烯果送26H烯元高四位保存MOV R4, 0CH ;烯算烯烯日期程序入口参数数~烯天送R4、R5
MOV R5, 0DH
LCALL LUNARDATECALULATEMOV 0FH, R7 ;MOV 0EH, R4 ;RET
KEYSTATE3:
;烯状3按烯烯理~烯烯烯整烯置烯状
MOV PSW, #00011000B
STATE3KEY0:
JNB 30H, STATE3KEY1MOV 27H, #00H ;按烯0~SETJNB 04H, STATE3KEY01MOV A, R4 ;重新烯算当数天分烯MOV B, #60
MUL AB
ADD A, R5
MOV 33H, A
MOV A, B
ADDC A, #0
MOV 32H, A
MOV R6, #0 ;秒清零CLR 04H
STATE3KEY01:
SETB 05H ;烯置烯烯日期烯算烯求烯烯
AJMP KEYSTATE3RET
STATE3KEY1:
JNB 31H, STATE3KEY2
JNB 38H, STATE3KEY1MONTH ;按烯1~UP
MOV B, #1
ACALL YEARADJUST
AJMP KEYSTATE3RET
STATE3KEY1MONTH:
JNB 39H, STATE3KEY1DATEACALL MONTHADJUSTAJMP KEYSTATE3RET
STATE3KEY1DATE:
JNB 3AH, STATE3KEY1HOURACALL DATEADJUST
AJMP KEYSTATE3RET
STATE3KEY1HOUR:
JNB 3BH, STATE3KEY1MINUTEACALL HOURADJUST
AJMP KEYSTATE3RETSTATE3KEY1MINUTE:ACALL MINUTEADJUSTAJMP KEYSTATE3RETSTATE3KEY2:
JNB 32H, STATE3KEY3JNB 38H, STATE3KEY2MONTH ;按烯2~DOWN
MOV B, #1
ACALL YEARADJUST
AJMP KEYSTATE3RET
STATE3KEY2MONTH:
JNB 39H, STATE3KEY2DATEACALL MONTHADJUST
AJMP KEYSTATE3RET
STATE3KEY2DATE:
JNB 3AH, STATE3KEY2HOURACALL DATEADJUST
AJMP KEYSTATE3RET
STATE3KEY2HOUR:
JNB 3BH, STATE3KEY2MINUTEACALL HOURADJUST
AJMP KEYSTATE3RET
STATE3KEY2MINUTE:
ACALL MINUTEADJUST
AJMP KEYSTATE3RET
STATE3KEY3:
JNB 33H, KEYSTATE3RET
JNB 38H, STATE3KEY3MONTH ;按烯3~RIGHT
MOV 27H, #01000010B
AJMP KEYSTATE3RET
STATE3KEY3MONTH:
JNB 39H, STATE3KEY3DATEMOV 27H, #01000100B
AJMP KEYSTATE3RET
STATE3KEY3DATE:
JNB 3AH, STATE3KEY3HOUR
MOV 27H, #01001000BAJMP KEYSTATE3RETSTATE3KEY3HOUR:
JNB 3BH, STATE3KEY3MINUTEMOV 27H, #01000000BAJMP KEYSTATE3RETSTATE3KEY3MINUTE:
MOV 27H, #01000001B;AJMP KEYSTATE3RETKEYSTATE3RET:RET
KEYSTATE4:
;烯状4按烯烯理~烯烯烯烯烯响状MOV A, 27H
ANL A, #03H
MOV R0, AMOV A, #28HADD A, R0ADD A, R0MOV R0, AMOV A, @R0CLR ACC.6SETB ACC.5MOV @R0, A
CLR P1.7
MOV 27H, #00H
RET
YEARADJUST:
;烯整年~份1年增量、10年增量~增量烯存在B寄存器中~大于2099
及小于1925循烯烯整
JB 31H, YEARADDJB 32H, YEARSUBBAJMP YEARADJUSTRET
YEARADD:MOV A, R1ADD A, B
MOV R1, A
MOV A, #0
ADDC A, R0MOV R0, A
MOV A, #033H ;(2099<-->833H)
CLR C
SUBB A, R1
MOV A, #08H
SUBB A, R0
JNC YEARADJUSTRETMOV R0, #07H ;(1925<-->785H)
MOV R1, #85H
AJMP YEARADJUSTRETYEARSUBB:
MOV A, R1CLR C
SUBB A, BMOV R1, AMOV A, R0SUBB A, #0MOV R0, AMOV A, R1CLR C
SUBB A, #85H
MOV A, R0
SUBB A, #07H
JNC YEARADJUSTRETMOV R0, #08H
MOV R1, #33H
;AJMP YEARADJUSTRETYEARADJUSTRET:
MOV A, #28
CLR C
SUBB A, R3
JNC YEARADJUSTRET2MOV R3, #28
YEARADJUSTRET2:RET
MONTHADJUST:
;月烯份整~增量1~超12及小于1循烯JB 31H, MONTHADD
JB 32H, MONTHSUBB
AJMP MONTHADJUSTRET
MONTHADD:
INC R2
CJNE R2, #13, MONTHADJUSTRETMOV R2, #1
AJMP MONTHADJUSTRETMONTHSUBB:
DEC R2
CJNE R2, #0, MONTHADJUSTRET
MOV R2, #12
;AJMP MONTHADJUSTRETMONTHADJUSTRET:MOV A, #28
CLR C
SUBB A, R3
JNC MONTHADJUSTRET2MOV R3, #28
MONTHADJUSTRET2:RET
DATEADJUST:
;烯算月的当数天
CJNE R2, #1, DATE02
MOV 06H, #31
AJMP DATE13
DATE02:
CJNE R2, #2, DATE03MOV A, R1 ;烯算年当,1925年
CLR C
SUBB A, #84H ;MOV B, #4
DIV AB
MOV A, B
JZ DATE029MOV 06H, #28AJMP DATE13DATE029:
MOV 06H, #29AJMP DATE13DATE03:
CJNE R2, #3, DATE04MOV 06H, #31
AJMP DATE13
DATE04:
CJNE R2, #4, DATE05MOV 06H, #30
AJMP DATE13
DATE05:
CJNE R2, #5, DATE06MOV 06H, #31
AJMP DATE13
DATE06:
CJNE R2, #6, DATE07MOV 06H, #30
AJMP DATE13
DATE07:
CJNE R2, #7, DATE08MOV 06H, #31
AJMP DATE13
DATE08:
CJNE R2, #8, DATE09MOV 06H, #31
AJMP DATE13
DATE09:
CJNE R2, #9, DATE10
MOV 06H, #30
AJMP DATE13
DATE10:
CJNE R2, #10, DATE11MOV 06H, #31
AJMP DATE13
DATE11:
CJNE R2, #11, DATE12
MOV 06H, #30
AJMP DATE13
DATE12:
CJNE R2, #12, DATE13MOV 06H, #31
;AJMP DATE13DATE13:
JB 31H, DATEADDJB 32H, DATESUBB
AJMP DATEADJUSTRETDATEADD:
INC R3
MOV A, 06H
CLR C
SUBB A, R3
JNC DATEADJUSTRETMOV R3, #1
AJMP DATEADJUSTRETDATESUBB:
DEC R3
CJNE R3, #0, DATEADJUSTRET
MOV R3, 06H
;AJMP DATEADJUSTRETDATEADJUSTRET:RET
HOURADJUST:
;小烯烯整~增量1~00,23有效JB 31H, HOURADD
JB 32H, HOURSUBB
AJMP HOURADJUSTRETHOURADD:
INC R4
CJNE R4, #24, HOURADJUSTRET
MOV R4, #0
AJMP HOURADJUSTRETHOURSUBB:
MOV A, R4
CLR C
SUBB A, #1
MOV R4, A
JNC HOURADJUSTRETMOV R4, #23
;AJMP HOURADJUSTRETHOURADJUSTRET:SETB 04H
RET
MINUTEADJUST:
;分烯烯整~增量1~00,59有效JB 31H, MINUTEADDJB 32H, MINUTESUBB
AJMP MINUTEADJUSTRETMINUTEADD:
INC R5
CJNE R5, #60, MINUTEADJUSTRET
MOV R5, #0
AJMP MINUTEADJUSTRETMINUTESUBB:
DEC R5
CJNE R5, #0FFH, MINUTEADJUSTRETMOV R5, #59
;AJMP MINUTEADJUSTRET
MINUTEADJUSTRET:
SETB 04H
RET
SETALARMTIME:
;判断小烯R4是否24~是取消烯烯~否烯烯算分烯烯置烯烯数并
MOV A, 27H ;取得当前烯置烯烯烯烯地址ANL A, #03H
MOV R0, A
MOV A, #28H
ADD A, R0
ADD A, R0
MOV R0, A
CJNE R4, #24, SETALARMTIME1
MOV @R0, #0 ;取消烯烯INC R0
MOV @R0, #0
AJMP SETALARMTIMERETSETALARMTIME1:
INC R0 ;烯置烯烯烯烯MOV A, R4
MOV B, #60
MUL AB
ADD A, R5MOV @R0, AMOV A, #0ADDC A, BSETB ACC.7DEC R0
MOV @R0, ASETALARMTIMERET:
RET
PRESETALARMTIME:;烯取当并断前烯烯烯烯~判是否已烯烯置~如果已烯烯置~烯示已烯置烯烯~否烯烯
示24:00
MOV A, 27H
ANL A, #03H
MOV R0, A
MOV A, #28H
ADD A, R0
ADD A, R0MOV R0, A
MOV A, @R0JNB ACC.7, PRESETALARMTIMENON
;MOV A, @R0ANL A, #0FHMOV R2, A
INC R0
MOV A, @R0
MOV R3, AMOV R4, #0LOOPPRESETALARMTIME:
MOV A, R3CLR C
SUBB A, #60MOV R3, AMOV A, R2
SUBB A, #0
MOV R2, A
INC R4
JNC LOOPPRESETALARMTIMEDEC R4
MOV A, R3
ADD A, #60
MOV R5, A
AJMP PRESETALARMTIMERET
PRESETALARMTIMENON:
MOV R4, #24
MOV R5, #00H
;AJMP PRESETALARMTIMERET
PRESETALARMTIMERET:
RET
;
*********************************************************
*******************************
ORG 0D00H;烯烯判断响及烯烯烯程序~使用第零烯寄存器
ALARMCLOCK:MOV C, 46H
ORL C, 56H
ORL C, 66H
ORL C, 76H
ORL C, 45H
ORL C, 55H
ORL C, 65H
ORL C, 75H
JC BEINGALARMCLOCKMOV A, 27H
JNZ ALARMCLOCKRETMOV R0, #28H ;烯烯0的烯烯首地址
MOV R5, #0
LCALL ALARMCLOCK0
JB 03H, ALARMCLOCKRETMOV R0, #2AH ;烯烯1的烯烯首地址MOV R5, #1
LCALL ALARMCLOCK0
JB 03H, ALARMCLOCKRETMOV R0, #2CH ;烯烯2的烯烯首地址MOV R5, #2
LCALL ALARMCLOCK0JB 03H, ALARMCLOCKRETMOV R0, #2EH ;烯烯3的烯烯首地址MOV R5, #3
LCALL ALARMCLOCK0;AJMP ALARMCLOCKRETALARMCLOCKRET:
RET
BEINGALARMCLOCK:
JB 45H, BEINGALARMCLOCK0JB 46H, BEINGALARMCLOCK0JB 55H, BEINGALARMCLOCK1JB 56H, BEINGALARMCLOCK1JB 65H, BEINGALARMCLOCK2JB 66H, BEINGALARMCLOCK2
JB 75H, BEINGALARMCLOCK3JB 76H, BEINGALARMCLOCK3AJMP BEINGALARMCLOCKRETBEINGALARMCLOCK0:
MOV R0, #29H
ACALL ALARMCLOCK1
AJMP BEINGALARMCLOCKRETBEINGALARMCLOCK1:
MOV R0, #2BH
ACALL ALARMCLOCK1
AJMP BEINGALARMCLOCKRETBEINGALARMCLOCK2:
MOV R0, #2DH
ACALL ALARMCLOCK1
AJMP BEINGALARMCLOCKRETBEINGALARMCLOCK3:
MOV R0, #2FH
ACALL ALARMCLOCK1
;JB 03H, BEINGALARMCLOCKRETBEINGALARMCLOCKRET:RET
ALARMCLOCK1:
CLR 03H
MOV A, @R0 ;提取烯烯烯烯XRL A, 33H ;提取当天烯烯低8位~比烯烯烯;分烯,数
JZ ACLOCK1RET
MOV 27H, #00H
CLR P1.7
DEC R0
MOV A, @R0
ANL A, #8FH
MOV @R0, A
MOV A, R0
SUBB A, #28H
XRL A, #5
JNZ ACLOCK1ONLYONECLR 77H
ACLOCK1ONLYONE:SETB 03H
ACLOCK1RET:
RET
ALARMCLOCK0:
CLR 03H
MOV A, @R0
ANL A, #80H ;判断烯烯是否被烯置JZ ACLOCK0RET
MOV A, @R0 ;提取烯烯烯烯ANL A, #0FH
MOV R4, A
MOV A, 32H ;提取烯烯高四位~并比烯ANL A, #0FH
XRL A, R4
JNZ ACLOCK0RET
INC R0
MOV A, @R0
XRL A, 33H ;提取当天烯烯低8位~比烯烯烯;分烯,数
JNZ ACLOCK0RET
DEC R0
MOV A, @R0SETB ACC.6MOV @R0, AMOV A, R5SETB ACC.7MOV 27H, ASETB 03H;烯烯烯响
SETB P1.7
ACLOCK0RET:
RET
;
*********************************************************
*******************************ORG 0E00H
;烯烯月烯料~份16位一烯~高12位表示1~12月每月天数~1烯30天~0烯25天。
;低4位表示烯月月~份0烯年当无烯月~f烯年当数无烯月且前一年烯月天烯
DW
0ab54h,02b6fh,09570h,052f2h,04970h,06566h,0d4a0h,0ea50h,06a95h,05adfh ;1925
DW
02b60h,086e3h,092efh,0c8d7h,0c95fh,0d4a0h,0d8a6h,0b55fh,056a0h,0a5b4h ;1935
DW
025dfh,092d0h,0d2b2h,0a950h,0b557h,06ca0h,0b550h,05355h,04dafh,0a5b0h ;1945
DW
04573h,052bfh,0a9a8h,0e950h,06aa0h,0aea6h,0ab50h,04b60h,0aae4h,0a570h ;1955
DW
05260h,0f263h,0d950h,05b57h,056a0h,096d0h,04dd5h,04ad0h,0a4d0h,0d4d4h ;1965
DW
0d250h,0d558h,0b540h,0b6a0h,095a6h,095bfh,049b0h,0a974h,0a4b0h,0b27ah ;1975
DW
06a50h,06d40h,0af46h,0ab60h,09570h,04af5h,04970h,064b0h,074a3h,
0ea50h ;1985
DW
06b58h,05ac0h,0ab60h,096d5h,092e0h,0c960h,0d954h,0d4a0h,0da50h,07552h ;1995
DW
056a0h,0abb7h,025d0h,092d0h,0cab5h,0a950h,0b4a0h,0baa4h,0ad50h,055d9h ;2005
DW
04ba0h,0a5b0h,05176h,052bfh,0a930h,07954h,06aa0h,0ad50h,05b52h,04b60h ;2015
DW
0a6e6h,0a4e0h,0d260h,0ea65h,0d530h,05aa0h,076a3h,096d0h,04afbh,04ad0h ;2025
DW
0a4d0h,0d0b6h,0d25fh,0d520h,0dd45h,0b5a0h,056d0h,055b2h,049b0h,0a577h ;2035
DW
0a4b0h,0aa50h,0b255h,06d2fh,0ada0h,04b63h,0937fh,049f8h,04970h,064b0h ;2045
DW
068a6h,0ea5fh,06b20h,0a6c4h,0aaefh,092e0h,0d2e3h,0c960h,0d557h,0d4a0h ;2055
DW
0da50h,05d55h,056a0h,0a6d0h,055d4h,052d0h,0a9b8h,0a950h,0b4a0h,0b6a6h ;2065
DW
0ad50h,055a0h,0aba4h,0a5b0h,052b0h,0b273h,06930h,07337h,06aa0h,0ad50h ;2075
DW
04b55h,04b6fh,0a570h,054e4h,0d260h,0e968h,0d520h,0daa0h,06aa6h,056dfh ;2085
DW 04ae0h,0a9d4h,0a4d0h,0d150h,0f252h,0d520h
;2095
ORG 0F70H
;公烯月日期烯料~烯算烯份数当天烯月烯烯数加的天烯;平年,
DB 00H,03H,03H,06H,08H,0BH,0DH,10H,13H,15H,18H,1AHORG 0F80H
;公烯月日期烯料~烯算烯份数当天烯月烯烯数加的天烯;烯年,DB 00H,03H,04H,07H,09H,0CH,0EH,11H,14H,16H,19H,1BHORG 0F90H
;;0,9,烯示烯(共烯极)
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END