附录二:系统程序清单
CONFIG12 EQU 7FH TEMPH EQU 21H TEMPL EQU 20H REG2 EQU 22H REG3 EQU 23H REG4 EQU 24H DAT EQU P0.7 SCLK EQU P3.2 IO EQU P3.3 RST EQU P3.4 year DATA 66H month DATA 65H week DATA 64H day DATA 63H hour DATA 62H mintue DATA 61H second DATA 60H ORG 0000H LJMP START ORG 001BH LJMP INTT1
START: ; LCALL ZJ SETB EA
初值 MOV SCON,#00H ; 串行输出,方式0
MOV TMOD,#10H ;计数器1,方式1 MOV TL1,#00H MOV TH1,#00H MOV 32H,#8EH
MOV 31H,#00H ;允许写1302 LCALL WRITE MOV 32H,#90H
MOV 31H,#0A6H ;1302充电,充电电流1.1MA LCALL WRITE
;主程序~~~~~~~~~~~~~~~~~~~~~ MAIN1:
MOV 32H,#8DH ;读出年 LCALL READ MOV year,31H
MOV 32H,#8BH ;读出星期 LCALL READ MOV week,31H
MOV 32H,#89H ;读出月 LCALL READ MOV month,31H MOV 32H,#87H ;读出日
LCALL READ MOV day,31H
MOV 32H,#85H ;读出小时 LCALL READ MOV hour,31H
MOV 32H,#83H ;读出分钟 LCALL READ MOV mintue,31H MOV 32H,#81H ;读出秒 LCALL READ MOV second,31H
;~~~~~~~~~~~~分离缓存~~~~~~~~ MOV R0,year ;年分离,送显示缓存
LCALL DIVIDE MOV 7BH,R1 MOV 4BH,R1 MOV 7CH,R2 MOV 4CH,R2 MOV 78H,week MOV 48H,week
MOV R0,month ;月分离,送显示缓存 LCALL DIVIDE MOV 79H,R1 MOV 49H,R1
MOV 7AH,R2 MOV 4AH,R2
MOV R0,day ;日分离,送显示缓存 LCALL DIVIDE MOV 76H,R1 MOV 46H,R1 MOV 77H,R2 MOV 47H,R2
MOV R0,hour ;小时分离,送显示缓存 LCALL DIVIDE MOV 74H,R1 MOV 44H,R1 MOV 75H,R2 MOV 45H,R2
MOV R0,mintue ;分钟分离,送显示缓存
LCALL DIVIDE MOV 72H,R1 MOV 42H,R1 MOV 73H,R2 MOV 43H,R2
MOV R0,second ;秒分离,送显示缓存
LCALL DIVIDE MOV 70H,R1
MOV 40H,R1 MOV 71H,R2 MOV 41H,R2 CLR EA LCALL TOUTOU SETB EA LCALL DISPLAY
LCALL GENGXIAN ;更新农历程序 JNB P0.1,SETG111 JNB F0,SSS
setb P0.4 ;非闰月,则p0.4清零,指示灯亮 LJMP MAIN1 SETG111: LJMP SETG SSS:
clr P0.4 ;闰月,则p0.4置位,指示灯不亮 LJMP MAIN1
;~~~~~~~~~~~~~~ 温度 TOUTOU: LCALL CHUSHI LCALL RDTEMP MOV A,TEMPL ANL A,# B
MOV TEMPL,A MOV A,TEMPH ANL A,# B ORL A,TEMPL SWAP A MOV 25H,A MOV A,25H MOV B,#64H DIV AB MOV A,B MOV B,#0AH DIV AB SWAP A ORL A,B MOV 10H,A RET CHUSHI: LCALL RESET MOV A,#0CCH LCALL WRITE111 MOV A,#4EH LCALL WRITE111 MOV A,#CONFIG12 LCALL WRITE111 RET