19位数码管万年历

[复制链接]
查看3838 | 回复11 | 2014-5-22 09:07:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
                                      ;*****************************
                                      ;*        万年历程序         *
                                      ;*****************************
                          ;67H(高两位年)66H(低两位年)65H(月)64H(星期)
                          ;63H(日)62H(小时)61H(分)60H(秒)57H(农历月)56H(农历日)
                          ;显示缓冲单元7CH~7BH(4CH~4BH)年低位,7AH~79H(4AH~49H)月,
                          ;78H(48H)星期,77H~76H(47H~46H)日,75H~74H(45H~44H)时,
                          ;73H72H(43H~42H)分,71H~70H(41H~40H)秒,5EH~5DH(55H~54H)农历年
                          ;5CH~5BH(53H~52H)农历月,5AH~59H(51H~50H)农历日
                          ;闰年标志为F0,定时器T1为调整时候闪烁用
                          ;
                          ;
                                         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
                                        MINUTE DATA 61H
                                       SECOND  DATA 60H
                                   DS1302_ADDR DATA 32H
                                   DS1302_DATA DATA 31H
                                          ORG  0000H
                                          AJMP START
                                          ORG  0003H
                                          RETI
                                          ORG  000BH
                                          RETI
                                          ORG  0013H
                                          RETI
                                          ORG  001BH
                                          LJMP INTT1
                                          ORG  0023H
                                          RETI
                                          ORG  002BH
                                          RETI

                             ;************************************
                             ;*            主程序                *
                             ;************************************
                                 START:   SETB EA
                                          MOV SCON,#00H    ;串行输出,方式0
                                          MOV TMOD,#10H    ;计数器1,方式1
                                          MOV TL1,#00H
                                          MOV TH1,#00H
                                          MOV DS1302_ADDR,#8EH
                                          MOV DS1302_DATA,#00H       ;允许写1302
                                          LCALL WRITE
                                          MOV DS1302_ADDR,#90H
                                          MOV DS1302_DATA,#0A6H       ;1302充电,充电电流1.1mA
                                          LCALL WRITE
                              MAIN1:      MOV DS1302_ADDR,#8DH         ;READ OUT YEAR
                                          LCALL READ
                                          MOV YEAR,DS1302_DATA
                                          MOV DS1302_ADDR,#8BH        ;READ OUT WEEK
                                          LCALL READ
                                          MOV WEEK,DS1302_DATA
                                          MOV DS1302_ADDR,#89H          ;READ OUT MONTH
                                          LCALL READ
                                          MOV MONTH,DS1302_DATA
                                          MOV DS1302_ADDR,#87H          ;READ OUT DAY
                                          LCALL READ
                                          MOV DAY,DS1302_DATA
                                          MOV DS1302_ADDR,#85H       ;READ OUT HOUR
                                          LCALL READ
                                          MOV HOUR,DS1302_DATA
                                          MOV DS1302_ADDR,#83H       ;READ OUT MINTUE
                                          LCALL READ
                                          MOV MINUTE,DS1302_DATA
                                          MOV DS1302_ADDR,#81H       ;READ OUT SECOND
                                          LCALL READ
                                          MOV SECOND,DS1302_DATA
                                          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,MINUTE                ;分分离,送显示缓存
                                          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
                                          LCALL DISPLAY
                                          LCALL GENGXIN            ;更新农历程序
                                          JNB P1.1,SETG
                                          JNB F0,SSS
                                          CLR P1.3                 ;闰月,则p1.3清0,指示灯亮
                                          LJMP MAIN1
                                SSS:      SETB P1.3                 ;非闰月,则p1.3置位,指示灯灭
                                          LJMP MAIN1
                                ;*******************************
                                ;*       公历设置程序          *
                                ;*******************************
                                   SETG:  SETB TR1
                                          SETB ET1
                                          CLR 08H
                                          CLR 09H
                                          CLR 0AH
                                          CLR 0BH
                                          CLR 0CH
                                          CLR 0DH
                                          CLR 0EH
                                          CLR 0FH
                                          MOV DS1302_ADDR,#8EH
                                          MOV DS1302_DATA,#00H            ;允许写1302
                                          LCALL WRITE
                                          MOV DS1302_ADDR,#80H
                                          MOV DS1302_DATA,#80H            ;1302停止振荡
                                          LCALL WRITE
                                 GWAIT:   LCALL DISPLAY
                                          JNB P1.1,GWAIT
                                 SETG1:   LCALL DISPLAY
                                          JNB P1.1,SETG2
                                          JNB P1.2,GADDYEAR
                                          AJMP SETG1
                             GADDYEAR:    MOV R7,66H                ;年加1
                                          LCALL ADD1
                                          MOV 66H,A
                                          CJNE A,#51H,GADDYEAR1
                                          MOV 66H,#01H
                             GADDYEAR1:   MOV DS1302_ADDR,#8CH        ;年值送1302
                                          MOV DS1302_DATA,66H
                                          LCALL WRITE
                                          MOV R0,66H
                                          LCALL DIVIDE             ;年分离送显示缓冲
                                          MOV 4BH,R1
                                          MOV 7BH,R1
                                直接上传超过5000字节所以附件
19位万年历源码.txt (97 KB, 下载次数: 4)
回复

使用道具 举报

thanky0u58 | 2014-5-22 09:10:22 | 显示全部楼层
回复

使用道具 举报

randy1022 | 2014-5-22 09:13:15 | 显示全部楼层
回复

使用道具 举报

longxuekai | 2014-5-22 09:17:23 | 显示全部楼层
回复

使用道具 举报

小明爱研发 | 2014-5-22 09:56:54 | 显示全部楼层
哎!我的汇编语言,我的大学,我的微机原理老师,我对不起你a
回复

使用道具 举报

szdzjs | 2014-5-25 14:29:27 | 显示全部楼层
回复

使用道具 举报

thanky0u58 | 2014-5-25 15:33:34 | 显示全部楼层
回复

使用道具 举报

匿名 834492956 | 2015-1-25 19:17:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

阴前后我 | 2015-11-16 19:17:10 | 显示全部楼层
回复

使用道具 举报

雨中漫步 | 2016-10-14 19:49:52 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则