<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)讀寫時鐘芯片DS1302匯編程序

          PIC單片機(jī)讀寫時鐘芯片DS1302匯編程序

          作者: 時間:2011-02-24 來源:網(wǎng)絡(luò) 收藏

          #INCLUDE
          CBLOCK 20H
          SEC ;秒
          MIN ;分
          HOU ;小時
          DATE ;日期
          MON ;月
          DAY ;日
          YERR ;年
          DDD ;寫使能位
          TIME_TX ;1302發(fā)送寄存器
          TIME_RX ;1302接收寄存器
          COUNT1 ;
          COUNT2 ;
          DELAY1
          DELAY2
          ENDC
          *******************************
          ; ; 1302子程序說明
          ; ;******************************
          ; DS1302INI ;1302初始化,先禁止RST,設(shè)定充電方式
          ; SET_TIME ;一次發(fā)送7個數(shù)據(jù)設(shè)定時間,包含寫使能寄存器,8個數(shù)據(jù)
          ; GET_TIME ;一次接收7個數(shù)據(jù)顯示時間
          ; TIME_WRITE_1;一次寫入1302一個字節(jié)
          ; TIME_READ_1 ;一次接收一個字節(jié)數(shù)據(jù)
          ; ;******* 1302定義**************
          ; ;******************************
          #DEFINE I_O PORTC,7 ;1302I_O
          #DEFINE SCLK PORTC,6 ;1302時鐘
          #DEFINE RST PORTA,0 ;1302使能位
          #DEFINE RX_ADD 40H ;保存接受的7個數(shù)據(jù)
          #DEFINE TX_ADD 20H ;開始保存7個要寫入的時間數(shù)據(jù)
          BANK1 MACRO
          BSF STATUS,RP0
          ENDM
          BANK0 MACRO
          BCF STATUS,RP0
          ENDM

          ORG 000H
          NOP
          GOTO MAIN
          MAIN

          CALL CLR_RAM 清除RAN
          CALL PORT_INI 端口定義
          CALL DS1302_INI
          CALL SET_TIME 一次寫入7個時間數(shù)據(jù)
          CALL GET_TIME ; 一次讀回7個時間數(shù)據(jù)
          GOTO $


          ;; 寫入秒,可以寫任意的7個時間數(shù)據(jù),單字節(jié)
          MOVLW B'10000000'
          MOVWF TIME_TX
          BSF RST
          CALL TIME_WRITE_1
          MOVLW B'00100101'
          MOVWF TIME_TX
          CALL TIME_WRITE_1
          BCF RST

          讀秒,可以讀任意7個時間,單字節(jié)


          MOVLW B'10000001'
          MOVWF TIME_TX
          BSF RST
          CALL TIME_WRITE_1
          CALL TIME_READ_1
          BCF RST

          GOTO $

          :子程序

          **************************************************
          ; DS1302_INI
          ; 作用:初始化1302,先禁止RST,允許寫使能
          ;**************************************************
          DS1302_INI
          BCF SCLK
          BCF RST ;先禁止
          MOVLW B'10001110' ;寫使能寄存器
          MOVWF TIME_TX
          BSF RST
          CALL TIME_WRITE_1
          MOVLW B'0' ;允許寫使能
          MOVWF TIME_TX
          CALL TIME_WRITE_1;發(fā)送一個字節(jié)的數(shù)據(jù)
          BCF RST

          ;設(shè)定充電方式

          沒有設(shè)定
          RETURN

          ;**************************************************
          ; SET_TIME
          ; 作用:一次輸入7個數(shù)據(jù)來一次性的設(shè)定時間,同時使能寫寄存器
          ; 突發(fā)模式寫入,必須寫入8個數(shù)據(jù),不是7個
          ; INPUT:要設(shè)定的8個數(shù)據(jù)已經(jīng)寫入到TIME_TX_ADD開始的8個字節(jié)里面
          ;**************************************************
          SET_TIME
          MOVLW B'10111110' ;標(biāo)志位
          MOVWF TIME_TX
          BSF RST
          CALL TIME_WRITE_1
          ;TIME_WRITE_8 ;發(fā)送8個數(shù)據(jù)
          MOVLW TIME_TX_ADD ;發(fā)送數(shù)據(jù)的起始地址
          MOVWF FSR
          MOVLW D'8'
          MOVWF COUNT2
          TW1
          MOVF INDF,W
          MOVWF TIME_TX
          CALL TIME_WRITE_1
          INCF FSR,F
          DECFSZ COUNT2,F
          GOTO TW1
          BCF RST
          RETURN
          ;***********************************************
          ; GET_TIME
          ; 作用:一次接受7個字節(jié)的時間數(shù)據(jù),突發(fā)模式讀取
          ; INPUT:NONE
          ; OUTPUT:把7個時間數(shù)據(jù)保存在TIME_RX_ADD開始的7個寄存器里面
          ;***********************************************
          GET_TIME
          MOVLW B'10111111'
          MOVWF TIME_TX
          BSF RST
          CALL TIME_WRITE_1
          ;TIME_READ_7 ;接收7個數(shù)據(jù)
          MOVLW TIME_RX_ADD ;保存數(shù)據(jù)的起始地址
          MOVWF FSR
          MOVLW D'7'
          MOVWF COUNT2
          TR2
          CALL TIME_READ_1
          MOVF TIME_RX,W
          MOVWF INDF
          INCF FSR,F
          DECFSZ COUNT2,F
          GOTO TR2
          BCF RST
          RETURN
          ;************************************************
          ; TIME_WRITE_1
          ; 作用:一次發(fā)送一個字節(jié)的數(shù)據(jù),用于發(fā)送1302的
          ; 控制字或者發(fā)送一個數(shù)據(jù)
          ; INPUT: TIME_TX
          ;************************************************
          TIME_WRITE_1
          MOVLW D'8'
          MOVWF COUNT1
          TLOP
          BCF I_O ;初始值是低電平
          BCF SCLK
          BTFSC TIME_TX,0
          BSF I_O
          RRF TIME_TX,F
          BSF SCLK ;高電平發(fā)送數(shù)據(jù)
          DECFSZ COUNT1,F
          GOTO TLOP
          BCF SCLK ;恢復(fù)
          RETURN
          ;************************************************
          ; TIME_READ_1
          ; 作用:讀取1302一個字節(jié)的數(shù)據(jù)
          ; INPUT: NONE
          ; OUTPUT:接收數(shù)據(jù)保存在TIME_RX里面
          ; 原理:在SCLK下降沿接收數(shù)據(jù),低字節(jié)在前,根據(jù)I_O的
          ; 的電平的高低,采取帶進(jìn)位和不帶進(jìn)位右移.
          ;***********************************************
          TIME_READ_1
          BANK1
          BSF TRISC,7 ;I_O IS INPUT
          BANK0
          MOVLW D'8'
          MOVWF COUNT1 ;讀取8個字節(jié)
          TR1
          BCF SCLK ;下降沿讀取
          BCF STATUS,C
          BTFSC I_O
          BSF STATUS,C
          RRF TIME_RX,F
          BSF SCLK ;恢復(fù)高電平
          DECFSZ COUNT1,F
          GOTO TR1
          BANK1
          BCF TRISC,7 ;OUTPUT
          BANK0
          BCF SCLK ;恢復(fù)
          RETURN
          NOP

           

          PORT_INI
          BANK1
          MOVLW B'00000000'
          MOVWF TRISC
          MOVLW B'0'
          MOVWF TRISB
          MOVLW B'00000111'
          MOVWF ADCON1
          MOVLW B'00000000'
          MOVWF TRISA
          BANK0
          MOVLW 18H
          MOVWF 20H
          MOVLW 19H
          MOVWF 21H
          MOVLW 05H
          MOVWF 22H
          MOVLW 13H
          MOVWF 23H
          MOVLW 14H
          MOVWF 24H
          MOVLW 15H
          MOVWF 25H
          MOVLW 16H
          MOVWF 26H
          RETURN
          CLR_RAM
          MOVLW 20H
          MOVWF FSR
          LOOP
          CLRF INDF
          INCF FSR,F
          BTFSS FSR,7
          GOTO LOOP ;清除32個
          RETURN
          END

          51單片機(jī)相關(guān)文章:51單片機(jī)教程


          單片機(jī)相關(guān)文章:單片機(jī)教程


          單片機(jī)相關(guān)文章:單片機(jī)視頻教程


          單片機(jī)相關(guān)文章:單片機(jī)工作原理




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();