资讯详情

电子万年历-汇编程序(DS18B20温度采集、DS1302时钟、动态扫描显示、农历转换)

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 MAIN1SETG111:  LJMP SETGSSS:  clr P0.4  ;闰月,则p0.4置位,指示灯不亮  LJMP MAIN1 ;~~~~~~~~~~~~~~  温度TOUTOU:  LCALL CHUSHI  LCALL RDTEMP  MOV A,TEMPL  ANL A,#11110000B  MOV TEMPL,A  MOV A,TEMPH  ANL A,#00000111B  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  RETCHUSHI:  LCALL RESET  MOV A,#0CCH  LCALL WRITE111  MOV A,#4EH  LCALL WRITE111  MOV A,#CONFIG12  LCALL WRITE111  RETRDTEMP:  LCALL RESET  MOV A,#0CCH  LCALL WRITE111  MOV A,#44H  LCALL WRITE111  LCALL DL1MS  LCALL RESET  MOV A,#0CCH  LCALL WRITE111  MOV A,#0BEH  LCALL WRITE111  LCALL ERAD111  MOV TEMPL,A  LCALL ERAD111  MOV TEMPH,A  RETRESET:LA:  SETB DAT  MOV 52H,#200LB:  CLR DAT  DJNZ 52H,LB  SETB DAT  MOV 52H,#30LC:  DJNZ 52H,LC  CLR C  ORL C,DAT  JC LB  MOV 58H,#80LD:  ORL C,DAT  JC LP  DJNZ 58H,LD  SJMP LALP:  MOV 52H,#250LF:  DJNZ 52H,LF  RETWRITE111:  MOV 53H,#8W51HA:  SETB DAT  MOV 54H,#8  RRC A  CLR DATW52HA:  DJNZ 54H,W52HA  MOV DAT,C  MOV 54H,#30W53HA:  DJNZ 54H,W53HA  DJNZ 53H,W51HA  SETB DAT  RETERAD111:  CLR EA  MOV 58H,#8RD1A:  CLR DAT  MOV 54H,#6  NOP  SETB DATRD2A:  DJNZ 54H,RD2A  MOV C,DAT  RRC A  MOV 55H,#30RD3A:  DJNZ 55H,RD3A  DJNZ 58H,RD1A  SETB DAT  RET ;公历设置程序~~~~~~~~~~~~~~~~~~~~~SETG :  SETB TR1  SETB ET1  MOV 32H,#8EH  MOV 31H,#00H      ;允许写1302  LCALL WRITE  MOV 32H,#80H  MOV 31H,#80H      ;1302停止振荡  LCALL WRITEGWAIT:   ;~~~~~~~~~~~~~~~~~~  LCALL DISPLAY  JNB P0.1,GWAITSETG1:  LCALL DISPLAY  JNB P0.1,SETG2  JNB P0.2,GADDYEAR  JNB P0.3,JIANYEAR  AJMP SETG1GADDYEAR:  MOV R7,66H      ;年加一  LCALL ADD1  MOV 66H,A  CJNE A,#51H,GADDYEAR1  MOV 66H,#00H  AJMP GADDYEAR1JIANYEAR:  MOV R7,66H      ;年减一  LCALL JIAN1  MOV 66H,A  CJNE A,#00H,GADDYEAR1  MOV 66H,#51HGADDYEAR1:  MOV 32H,#8CH    ;年值送人1302  MOV 31H,66H  LCALL WRITE  MOV R0,66H  LCALL DIVIDE    ;年分离送显示缓存  MOV 4BH,R1  MOV 7BH,R1  MOV 4CH,R2  MOV 7CH,R2WAITT1:     ;~~~~~~~~~~~~~~~~  LCALL DISPLAY  JNB P0.2,WAITT1  JNB P0.3,WAITT1  AJMP SETG1SETG2:  SETB 0AH         ;调月时闪标志GWAIT2:  LCALL DISPLAY  JNB P0.1,GWAIT2SETG3:  LCALL DISPLAY  JNB P0.1,SETG4  JNB P0.2,GADDMONTH  JNB P0.3,JIANMONTH  AJMP SETG3GADDMONTH:  MOV R7,65H    ;月加一  LCALL ADD1  MOV 65H,A  CJNE A,#13H,GADDMONTH1  MOV 65H,#01H  AJMP GADDMONTH1JIANMONTH:  MOV R7,65H    ;月减一  LCALL JIAN1  MOV 65H,A  CJNE A,#00H,GADDMONTH1  MOV 65H,#12HGADDMONTH1:  MOV 32H,#88H ;月值送人1302  MOV 31H,65H  LCALL WRITE  MOV R0,65H  LCALL DIVIDE ;月分离,送显示缓存  MOV 79H,R1  MOV 49H,R1  MOV 7AH,R2  MOV 4AH,R2WAITT2:  ;~~~~~~~~~~~~~~~~~~~~  LCALL DISPLAY  JNB P0.2,WAITT2  JNB P0.3,WAITT2  AJMP SETG3SETG4:  SETB 0BH   ;调日时闪标志GWAIT4:  LCALL DISPLAY  JNB P0.1,GWAIT4SETG5:  LCALL DISPLAY  JNB P0.1,SETG6  JNB P0.2,GADDDAY  JNB P0.3,JIANDAY  AJMP SETG5GADDDAY:  MOV R7,63H    ;日加一  LCALL ADD1  MOV 63H,A  CJNE A,#32H,GADDDAY1  MOV 63H,#01HJIANDAY:  MOV R7,63H    ;日减一  LCALL JIAN1  MOV 63H,A  CJNE A,#00H,GADDDAY1  MOV 63H,#31HGADDDAY1:  MOV 32H,#86H ;日值送人1302  MOV 31H,63H  LCALL WRITE  MOV R0,63H  LCALL DIVIDE ;日分离,送显示缓存  MOV 76H,R1  MOV 46H,R1  MOV 77H,R2  MOV 47H,R2WAITT3:    ;~~~~~~~~~~~~~~~~~  LCALL DISPLAY  JNB P0.2,WAITT3  JNB P0.3,WAITT3  AJMP SETG5SETG6:  SETB 0CH   ;调星期时闪标志GWAIT6:  LCALL DISPLAY  JNB P0.1,GWAIT6SETG7:  LCALL DISPLAY  JNB P0.1,SETG8  JNB P0.2,GADDWEEK  JNB P0.3,JIANWEEK  AJMP SETG7GADDWEEK:  MOV R7,64H       ;星期加一  LCALL ADD1  MOV 64H,A  CJNE A,#07H,GADDWEEK1  MOV 64H,#00H  AJMP GADDWEEK1JIANWEEK:  MOV R7,64H       ;星期减一  LCALL JIAN1  MOV 64H,A  CJNE A,#00H,GADDWEEK1  MOV 64H,#06HGADDWEEK1:  MOV 32H,#8AH  MOV 31H,64H     ;星期值送人1302  LCALL WRITE  MOV R0,64H  LCALL DIVIDE  ;星期值分离送显示缓存  MOV 48H,R1  MOV 78H,R1WAITT4:       ;~~~~~~~~~~~~~~~ ~~~~~  LCALL DISPLAY  JNB P0.2,WAITT4  JNB P0.3,WAITT4  AJMP SETG7SETG8:  SETB 0DH      ;调小时时闪标志GWAIT8:  LCALL DISPLAY  JNB P0.1,GWAIT8SETG9:  LCALL DISPLAY  JNB P0.1,SETG10  JNB P0.2,GADDHOUR  JNB P0.3,JIANHOUR  AJMP SETG9GADDHOUR:  MOV R7,62H        ;小时加一  LCALL ADD1  MOV 62H,A  CJNE A,#24H,GADDHOUR1  MOV 62H,#00H  AJMP GADDHOUR1JIANHOUR:  MOV R7,62H        ;小时减一  LCALL JIAN1  MOV 62H,A  CJNE A,#00H,GADDHOUR1  MOV 62H,#23HGADDHOUR1:  MOV 32H,#84H     ;小时值送人1302  MOV 31H,62H  LCALL WRITE  MOV R0,62H  LCALL DIVIDE      ;小时值分离送显示缓存  MOV 74H,R1  MOV 44H,R1  MOV 75H,R2  MOV 45H,R2WAITT5:  ;~~~~~~~~~~~~~~~~~~~~~~~~~  LCALL DISPLAY  JNB P0.2,WAITT5  JNB P0.3,WAITT5  AJMP SETG9SETG10:  SETB 0EH        ;调分时候闪标志GWAIT10:  LCALL DISPLAY  JNB P0.1,GWAIT10SETG11:  LCALL DISPLAY  JNB P0.1,SETGOUT  JNB P0.2,GADDMINTUE  JNB P0.3,JIANMINTUE  AJMP SETG11GADDMINTUE:  MOV R7,61H      ;分钟加一  LCALL ADD1  MOV 61H,A  CJNE A,#60H,GADDMINTUE1  MOV 61H,#00H  AJMP GADDMINTUE1JIANMINTUE:  MOV R7,61H      ;分钟减一  LCALL JIAN1  MOV 61H,A  CJNE A,#00H,GADDMINTUE1  MOV 61H,#59HGADDMINTUE1:  MOV 32H,#82H    ;分钟值送人1302  MOV 31H,61H  LCALL WRITE  MOV R0,61H  LCALL DIVIDE    ;分钟值分离送显示缓存  MOV 72H,R1  MOV 42H,R1  MOV 73H,R2  MOV 43H,R2WAITT6:  LCALL DISPLAY  JNB P0.2,WAITT6  JNB P0.3,WAITT6  AJMP SETG11SETGOUT:  LCALL DISPLAY  JNB P0.1,SETGOUT  LCALL GENGXIAN  MOV 32H,#80H  MOV 31H,#00H     ;1302晶振开始振荡  LCALL WRITE  MOV 32H,#8EH  MOV 31H,#80H     ;禁止写入1302  LCALL WRITE  CLR 08H  CLR 09H  CLR 0AH  CLR 0BH  CLR 0CH  CLR 0DH  CLR 0EH  CLR 0FH  CLR ET1                 ;关闪中断  CLR TR1  LJMP MAIN1 ;;闪动调时程序~~~~~~~~~~~~~~~~INTT1:  PUSH ACC  PUSH PSWGFLASH:  CPL 0FH  JB 0FH,GFLASH1  MOV 7CH,4CH ;全部显示  MOV 7BH,4BH  MOV 7AH,4AH  MOV 79H,49H  MOV 78H,48H  MOV 77H,47H  MOV 76H,46H  MOV 75H,45H  MOV 74H,44H  MOV 73H,43H  MOV 72H,42H  MOV 71H,41H  MOV 70H
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台