导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→;;;;;;;;;;;;;;;;;;

我把主程序和调整


* 33637: 请教!

   我是一条鱼 
我是一条鱼发表的帖子 

 
;;;;;;;;;;;;;;;;;;

我把主程序和调整程序给你参考吧,其它的程序因硬件电路不同而不同。

                              ;;;;主程序;;;;
                             ;;;;;;;;;;;;;;;;;;;
                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   ;读出年
                          LCALL  READ
                          MOV   year,DS1302_DATA
                          MOV   DS1302_ADDR,#8BH  ;读出星期
                          LCALL  READ
                          MOV    week ,DS1302_DATA
                          MOV   DS1302_ADDR,#89H   ;读出月
                          LCALL  READ
                          MOV    month,DS1302_DATA
                          MOV    DS1302_ADDR,#87H  ;读出日
                          LCALL  READ
                          MOV    day,DS1302_DATA
                          MOV    DS1302_ADDR,#85H  ;读出小时
                          LCALL   READ
                          MOV     hour,DS1302_DATA
                          MOV    DS1302_ADDR,#83H  ;读出分钟
                          LCALL   READ
                          MOV    mintue,DS1302_DATA
                          MOV    DS1302_ADDR,#81H  ;读出秒
                          LCALL  READ
                          MOV   second,DS1302_DATA


  ;;公历设置程序;;;
                   ;;;;;;;;;;;;;;;;;
                  SETG : SETB TR1
                           SETB ET1
                           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      ;年加一
                           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
                           MOV 4CH,R2
                           MOV 7CH,R2
                  WAITT1:LCALL DISPLAY
                           JNB P1.2,WAITT1
                           AJMP SETG1
                  SETG2: SETB 0AH      ;调月时闪标志
                GWAIT2:  LCALL DISPLAY
                           JNB P1.1,GWAIT2
                  SETG3: LCALL DISPLAY
                           JNB P1.1,SETG4
                           JNB P1.2,GADDMONTH
                           AJMP SETG3
            GADDMONTH:MOV R7,65H     ;月加一
                           LCALL ADD1
                           MOV 65H,A
                           CJNE A,#13H,GADDMONTH1
                           MOV 65H,#01H
         GADDMONTH1:  MOV DS1302_ADDR,#88H  ;月值送人1302
                           MOV DS1302_DATA,65H
                           LCALL WRITE
                           MOV R0,65H
                           LCALL DIVIDE  ;月分离,送显示缓存
                           MOV 79H,R1
                           MOV 49H,R1
                           MOV 7AH,R2
                           MOV 4AH,R2
               WAITT2:  LCALL DISPLAY
                           JNB P1.2,WAITT2
                           AJMP SETG3
                SETG4:   SETB 0BH    ;调日时闪标志
                GWAIT4:  LCALL DISPLAY
                           JNB P1.1,GWAIT4
                SETG5:   LCALL DISPLAY
                           JNB P1.1,SETG6
                           JNB P1.2,GADDDAY
                           AJMP SETG5
             GADDDAY:  MOV R7,63H     ;日加一
                           LCALL ADD1
                           MOV 63H,A
                           CJNE A,#32H,GADDDAY1
                           MOV  63H,#01H
             GADDDAY1: MOV DS1302_ADDR,#86H ;日值送人1302
                           MOV DS1302_DATA,63H
                           LCALL WRITE
                           MOV R0,63H
                           LCALL DIVIDE  ;日分离,送显示缓存
                           MOV 76H,R1
                           MOV 46H,R1
                           MOV 77H,R2
                           MOV 47H,R2
                  WAITT3:LCALL DISPLAY
                           JNB P1.2,WAITT3
                           AJMP SETG5
                SETG6:   SETB 0CH    ;调星期时闪标志
               GWAIT6:   LCALL DISPLAY
                           JNB P1.1,GWAIT6
                SETG7:   LCALL DISPLAY
                           JNB P1.1,SETG8
                           JNB P1.2,GADDWEEK
                           AJMP SETG7
            GADDWEEK:  MOV R7,64H  ;星期加一
                           LCALL ADD1
                           MOV 64H,A
                           CJNE A,#08H,GADDWEEK1
                           MOV  64H,#01H
          GADDWEEK1:  MOV DS1302_ADDR,#8AH
                           MOV DS1302_DATA,64H  ;星期值送人1302
                           LCALL WRITE
                           MOV R0,64H
                           LCALL DIVIDE  ;星期值分离送显示缓存
                           MOV 48H,R1
                           MOV 78H,R1
                  WAITT4:LCALL DISPLAY
                           JNB P1.2,WAITT4
                           AJMP SETG7
                SETG8:   SETB 0DH   ;调小时时闪标志
                GWAIT8:  LCALL DISPLAY
                           JNB P1.1,GWAIT8
                 SETG9:  LCALL DISPLAY
                           JNB P1.1,SETG10
                           JNB P1.2,GADDHOUR
                           AJMP SETG9
            GADDHOUR:  MOV R7,62H  ;小时加一
                           LCALL ADD1
                           MOV 62H,A
                           CJNE A,#24H,GADDHOUR1
                           MOV 62H,#00H
          GADDHOUR1:  MOV DS1302_ADDR,#84H ;小时值送人1302
                           MOV DS1302_DATA,62H
                           LCALL WRITE
                           MOV R0,62H
                           LCALL DIVIDE ;小时值分离送显示缓存
                           MOV 74H,R1
                           MOV 44H,R1
                           MOV 75H,R2
                           MOV 45H,R2
                 WAITT5: LCALL DISPLAY
                           JNB P1.2,WAITT5
                           AJMP SETG9
               SETG10:   SETB 0EH   ;调分时候闪标志
              GWAIT10:   LCALL DISPLAY
                           JNB P1.1,GWAIT10
               SETG11:   LCALL DISPLAY
                           JNB P1.1,SETGOUT
                           JNB P1.2,GADDMINTUE
                           AJMP SETG11
        GADDMINTUE:   MOV R7,61H    ;分钟加一
                           LCALL ADD1
                           MOV 61H,A
                           CJNE A,#60H,GADDMINTUE1
                           MOV 61H,#00H
       GADDMINTUE1:   MOV DS1302_ADDR,#82H ;分钟值送人1302
                           MOV DS1302_DATA,61H
                           LCALL WRITE
                           MOV R0,61H
                           LCALL DIVIDE ;分钟值分离送显示缓存
                           MOV 72H,R1
                           MOV 42H,R1
                           MOV 73H,R2
                           MOV 43H,R2
                 WAITT6: LCALL DISPLAY
                           JNB P1.2,WAITT6
                           AJMP SETG11
              SETGOUT:  LCALL DISPLAY
                           JNB P1.1,SETGOUT
                           LCALL GENGXIAN
                           MOV    DS1302_ADDR,#80H
                           MOV    DS1302_DATA,#00H ;1302晶振开始振荡
                           LCALL  WRITE
                           MOV    DS1302_ADDR,#8EH
                           MOV    DS1302_DATA,#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



发表时间:2003年6月7日22:01:59

  
回复该帖

本主题共有 8 帖,分页:>>>>>该主题的所有内容[8]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  50510.[详细]你的程序可读性太差,太冗长。
摘要:你的程序可读性太差,太冗长。......(28字)
- [guest][1109次] 2004年3月13日

[上一篇帖子]:没人理我就自己回!
[下一篇帖子]:Atmel 89系列的不错