在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > SPI時(shí)鐘芯片DS1302的應(yīng)用

            SPI時(shí)鐘芯片DS1302的應(yīng)用

            作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
            DS1302 是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線(xiàn)接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。采用普通32.768kHz晶振!RST是復(fù)位/片選線(xiàn),通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫(xiě)入DS1302,數(shù)據(jù)輸入從低位即位0開(kāi)始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。SCLK始終是輸入端。

            //======================================驅(qū)動(dòng)
            sbit SDA_1302=P1^0;//數(shù)據(jù)輸入輸出腳
            sbit SCL_1302=P1^1;//串行時(shí)鐘輸入
            sbit RST =P1^2;//復(fù)位腳
            void send_data(unsigned char ch)
            {
            unsigned char i;
            SCL_1302=0;
            _nop_();
            RST=1;
            for(i=0;i<8;i++)
            {
            SCL_1302=0;
            SDA_1302=(bit)(ch&0x01);
            SCL_1302=1;
            ch=ch>>1;
            }
            SCL_1302=0;
            RST=0;
            }
            unsigned char receive_data()
            {
            unsigned char i,data;
            SCL_1302=0;
            _nop_();
            RST=1;
            for(i=0;i<8;i++)
            {
            data>>=1;
            SCL_1302=0;
            if(SDA_1302) data|=0x80;
            elsedata&=0x7f;
            SCL_1302=1;
            }
            SCL_1302=0;
            RST=0;
            return data;
            }
            ================================================//
            //=======================================應(yīng)用
            sbit SDA_1302=P1^0;
            sbit SCL_1302=P1^1;
            sbit RST=P1^2;
            #define WSEC0x80
            #define RSEC0x81
            #define WMIN0x82
            #define RMIN0x83
            #define WHOU0x84
            #define RHOU0x85
            #define WDAY0x86
            #define RDAY0x87
            #define WMON0x88
            #define RMON0x89
            #define WWEEK 0X8a
            #define RWEEK 0X8b
            #define WYEAR 0x8c
            #define RYEAR 0x8d
            #define EWOK0X8e //
            #define EW0X8F //
            #define CDOK0X90 // 涓流充電寫(xiě)
            #define CD0X91 // 讀

            void delay(void)
            {
            _nop_();
            _nop_();
            _nop_();
            _nop_();
            _nop_();
            }
            void write_ds1302(unsigned char addr,unsigned char tempdata)
            {
            unsigned char i=0;
            SCL_1302=0;
            delay();
            RST=1;
            delay();
            for(i=0;i<8;i++)
            {
            SCL_1302=0;
            SDA_1302=(bit)(addr&0x01);
            SCL_1302=1;
            addr>>=1;
            }
            for(i=0;i<8;i++)
            {
            SCL_1302=0;
            SDA_1302=(bit)(tempdata&0x01);
            SCL_1302=1;
            addr>>=1;
            }
            RST=0;
            delay();
            SCL_1302=0;
            }
            unsigned char read_ds1302(unsigned char addr)
            {
            unsigned char i=0;
            unsigned char temp=0;
            SCL_1302=0;
            delay();
            RST=1;
            delay();
            for(i=0;i<8;i++)
            {
            SCL_1302=0;
            SDA_1302=(bit)(addr&0x01);
            SCL_1302=1;
            addr>>=1;
            }
            SDA_1302=1;
            for(i=0;i<8;i++)
            {
            temp>>=1;
            SCL_1302=1;
            if(SDA_1302)
            temp|=0x80;
            else
            temp&=0x7f;
            SCL_1302=0;
            }
            RST=0;
            delay();
            SCL_1302=0;
            return (temp);
            }
            void write_initial(void) //寫(xiě)入初始時(shí)間 2009年 1月1日1時(shí)0分0秒
            {
            SCL_1302=0;
            RST=0;
            write_ds1302(EWOK,0x00);
            write_ds1302(WSEC,0X00);
            write_ds1302(WMIN,0X00);
            write_ds1302(WHOU,0X81);
            write_ds1302(WDAY,0X01);
            write_ds1302(WMON,0X01);
            write_ds1302(WWEEK,0X04);
            write_ds1302(WYEAR,0X09);
            }
            void read(void)
            {
            DAY=read_ds1302(RDAY);
            MONTH=read_ds1302(RMON);
            YEAR=read_ds1302(RYEAR);
            }


            關(guān)鍵詞: SPI時(shí)鐘芯片DS130

            評(píng)論


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

            關(guān)閉