日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

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

          時(shí)鐘芯片DS1302的PIC程序

          作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏

          include

          本文引用地址:http://yuyingmama.com.cn/article/201611/316531.htm

          CBLOCK 20H
          SEC ;秒
          MIN ;分
          HOU ;小時(shí)
          DATE ;日期
          MON ;月
          DAY ;日
          YERR ;年
          DDD ;寫(xiě)使能位
          TIME_TX ;1302發(fā)送寄存器
          TIME_RX ;1302接收寄存器
          COUNT1 ;
          COUNT2 ;
          DELAY1
          DELAY2
          ENDC

          ;=================================
          ;1302子程序說(shuō)明
          ; DS1302INI ;1302初始化,先禁止RST,設(shè)定充電方式
          ; SET_TIME ;一次發(fā)送7個(gè)數(shù)據(jù)設(shè)定時(shí)間,包含寫(xiě)使能寄存器,8個(gè)數(shù)據(jù)
          ; GET_TIME ;一次接收7個(gè)數(shù)據(jù)顯示時(shí)間
          ; TIME_WRITE_1 ;一次寫(xiě)入1302一個(gè)字節(jié)
          ; TIME_READ_1 ;一次接收一個(gè)字節(jié)數(shù)據(jù)

          ;============== 1302定義 ===================
          #DEFINE I_O PORTC,7 ;1302I_O
          #DEFINE SCLK PORTC,6 ;1302時(shí)鐘
          #DEFINE RST PORTA,0 ;1302使能位
          #DEFINE RX_ADD 40H ;保存接受的7個(gè)數(shù)據(jù)
          #DEFINE TX_ADD 20H ;開(kāi)始保存7個(gè)要寫(xiě)入的時(shí)間數(shù)據(jù)
          BANK1 MACRO
          BSF STATUS,RP0
          ENDM
          BANK0 MACRO
          BCF STATUS,RP0
          ENDM

          ;======================================
          ORG 00H
          NOP
          GOTO MAIN
          MAIN
          CALL CLR_RAM ;清除RAN
          CALL PORT_INI ;端口定義
          CALL DS1302_INI
          CALL SET_TIME ; 一次寫(xiě)入7個(gè)時(shí)間數(shù)據(jù)
          CALL GET_TIME ; 一次讀回7個(gè)時(shí)間數(shù)據(jù)
          GOTO $


          ;寫(xiě)入秒,可以寫(xiě)任意的7個(gè)時(shí)間數(shù)據(jù),單字節(jié)
          MOVLW B10000000
          MOVWF TIME_TX
          BSF RST
          CALL CMD
          MOVLW B00100101
          MOVWF TIME_TX
          CALL CMD
          BCF RST

          ;讀秒,可以讀任意7個(gè)時(shí)間,單字節(jié)
          MOVLW B10000001
          MOVWF TIME_TX
          BSF RST
          CALL CMD
          CALL TIME_READ_1
          BCF RST
          GOTO $

          ;**************************************************
          ; DS1302_INI:子程序
          ; 作用:初始化1302,先禁止RST,允許寫(xiě)使能
          ;**************************************************
          DS1302_INI
          BCF SCLK
          BCF RST ;先禁止
          MOVLW B10001110 ;寫(xiě)使能寄存器
          MOVWF TIME_TX
          BSF RST
          CALL CMD
          MOVLW B0 ;允許寫(xiě)使能
          MOVWF TIME_TX
          CALL CMD ;發(fā)送一個(gè)字節(jié)的數(shù)據(jù)
          BCF RST

          ;設(shè)定充電方式 沒(méi)有設(shè)定
          RETURN

          ;**************************************************
          ; SET_TIME
          ; 作用:一次輸入7個(gè)數(shù)據(jù)來(lái)一次性的設(shè)定時(shí)間,同時(shí)使能寫(xiě)寄存器
          ; 突發(fā)模式寫(xiě)入,必須寫(xiě)入8個(gè)數(shù)據(jù),不是7個(gè)
          ; INPUT:要設(shè)定的8個(gè)數(shù)據(jù)已經(jīng)寫(xiě)入到TIME_TX_ADD開(kāi)始的8個(gè)字節(jié)里面
          ;**************************************************
          SET_TIME
          MOVLW B10111110 ;標(biāo)志位
          MOVWF TIME_TX
          BSF RST
          CALL CMD
          ;TIME_WRITE_8 ;發(fā)送8個(gè)數(shù)據(jù)
          MOVLW TX_ADD ;//發(fā)送數(shù)據(jù)的起始地址
          MOVWF FSR
          MOVLW D8
          MOVWF COUNT2
          TW1
          MOVF INDF,W
          MOVWF TIME_TX
          CALL CMD
          INCF FSR,F
          DECFSZ COUNT2,F
          GOTO TW1
          BCF RST
          RETURN

          ;***********************************************
          ; GET_TIME
          ; 作用:一次接受7個(gè)字節(jié)的時(shí)間數(shù)據(jù),突發(fā)模式讀取
          ; INPUT:NONE
          ; OUTPUT:把7個(gè)時(shí)間數(shù)據(jù)保存在TIME_RX_ADD開(kāi)始的7個(gè)寄存器里面
          ;***********************************************
          GET_TIME
          MOVLW B10111111
          MOVWF TIME_TX
          BSF RST
          CALL CMD
          ;TIME_READ_7 ;接收7個(gè)數(shù)據(jù)
          MOVLW RX_ADD ;保存數(shù)據(jù)的起始地址
          MOVWF FSR
          MOVLW D7
          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ā)送一個(gè)字節(jié)的數(shù)據(jù),用于發(fā)送1302的
          ; 控制字或者發(fā)送一個(gè)數(shù)據(jù)
          ; INPUT: TIME_TX
          ;************************************************
          CMD
          MOVLW D8
          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一個(gè)字節(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 D8
          MOVWF COUNT1 ;讀取8個(gè)字節(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

          ;======================================
          PORT_INI
          BANK1
          MOVLW B00000000
          MOVWF TRISC
          MOVLW B0
          MOVWF TRISB
          MOVLW B00000111
          MOVWF ADCON1
          MOVLW B00000000
          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個(gè)
          RETURN
          ;==========================
          END



          關(guān)鍵詞: 時(shí)鐘芯片DS1302PIC程

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉