在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

            #INCLUDE
            CBLOCK 20H
            SEC ;秒
            MIN ;分
            HOU ;小時(shí)
            DATE ;日期
            MON ;月
            DAY ;日
            YERR ;年
            DDD ;寫使能位
            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í)間,包含寫使能寄存器,8個(gè)數(shù)據(jù)
            ; GET_TIME ;一次接收7個(gè)數(shù)據(jù)顯示時(shí)間
            ; TIME_WRITE_1;一次寫入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è)要寫入的時(shí)間數(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個(gè)時(shí)間數(shù)據(jù)
            CALL GET_TIME ; 一次讀回7個(gè)時(shí)間數(shù)據(jù)
            GOTO $


            ;; 寫入秒,可以寫任意的7個(gè)時(shí)間數(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個(gè)時(shí)間,單字節(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ā)送一個(gè)字節(jié)的數(shù)據(jù)
            BCF RST

            ;設(shè)定充電方式

            沒(méi)有設(shè)定
            RETURN

            ;**************************************************
            ; SET_TIME
            ; 作用:一次輸入7個(gè)數(shù)據(jù)來(lái)一次性的設(shè)定時(shí)間,同時(shí)使能寫寄存器
            ; 突發(fā)模式寫入,必須寫入8個(gè)數(shù)據(jù),不是7個(gè)
            ; INPUT:要設(shè)定的8個(gè)數(shù)據(jù)已經(jīng)寫入到TIME_TX_ADD開(kāi)始的8個(gè)字節(jié)里面
            ;**************************************************
            SET_TIME
            MOVLW B'10111110' ;標(biāo)志位
            MOVWF TIME_TX
            BSF RST
            CALL TIME_WRITE_1
            ;TIME_WRITE_8 ;發(fā)送8個(gè)數(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個(gè)字節(jié)的時(shí)間數(shù)據(jù),突發(fā)模式讀取
            ; INPUT:NONE
            ; OUTPUT:把7個(gè)時(shí)間數(shù)據(jù)保存在TIME_RX_ADD開(kāi)始的7個(gè)寄存器里面
            ;***********************************************
            GET_TIME
            MOVLW B'10111111'
            MOVWF TIME_TX
            BSF RST
            CALL TIME_WRITE_1
            ;TIME_READ_7 ;接收7個(gè)數(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ā)送一個(gè)字節(jié)的數(shù)據(jù),用于發(fā)送1302的
            ; 控制字或者發(fā)送一個(gè)數(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一個(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 D'8'
            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
            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個(gè)
            RETURN
            END

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


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


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


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




            評(píng)論


            相關(guān)推薦

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

            關(guān)閉