新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)控制ds1302的時(shí)鐘C程序

        單片機(jī)控制ds1302的時(shí)鐘C程序

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

        /**************************************************/
        /* 實(shí)時(shí) */
        /*51hei.com會(huì)員經(jīng)典作品已經(jīng)測(cè)試成功/
        /**************http://www.51hei.com/ziliao/file/c.rar點(diǎn)此鏈接下載本例的代碼*****/

        #include reg52.h>
        #include intrins.h>

        #define uchar unsigned char

        sbit T_CLK = P3^4; /*實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 */
        sbit T_IO = P3^3; /*實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳 */
        sbit T_RST = P3^2; /*實(shí)時(shí)時(shí)鐘復(fù)位線引腳 */
        //sbit OE=P3^6;
        sbit ACC0=ACC^0;
        sbit ACC7=ACC^7;

        uchar time[8]=" : : ";
        uchar min,hou,day,mon,yea;

        void Init1302(void);
        void v_W1302(uchar ucAddr, uchar ucDa);
        uchar uc_R1302(uchar ucAddr);
        void v_BurstW1302T(uchar *pSecDa);
        void v_BurstR1302T(uchar *pSecDa);
        void v_BurstW1302R(uchar *pReDa);
        void v_BurstR1302R(uchar *pReDa);
        void v_Set1302(uchar *pSecDa);
        void v_Get1302(uchar ucCurtime[]);
        void donetime(void);
        void bcd_int(uchar i);
        void bcdtoInt(void);
        void SetTime(void);
        /****************************************
        *
        * 名稱: v_RTInputByte
        * 說(shuō)明:
        * 功能: 往DS1302寫(xiě)入1Byte數(shù)據(jù)
        * 調(diào)用:
        * 輸入: ucDa 寫(xiě)入的數(shù)據(jù)
        * 返回值: 無(wú)
        ****************************************************/
        void v_WTInputByte(uchar ucDa)
        {
        uchar i;
        //OE=0;
        ACC= ucDa;
        for(i=8; i>0; i--)
        {
        T_IO = ACC0; //*相當(dāng)于匯編中的 RRC
        T_CLK = 1;
        T_CLK = 0;
        ACC =ACC>> 1;
        }
        //OE=1;
        }
        /***************************************************
        *
        * 名稱: uchar uc_RTOutputByte
        * 說(shuō)明:
        * 功能: 從DS1302讀取1Byte數(shù)據(jù)
        * 調(diào)用:
        * 輸入:
        * 返回值: ACC
        ****************************************************/
        uchar uc_RTOutputByte(void)
        {
        uchar i;
        //OE=0;
        for(i=8; i>0; i--)
        {
        ACC = ACC>>1; //*相當(dāng)于匯編中的 RRC
        ACC7 = T_IO;
        T_CLK = 1;
        T_CLK = 0;
        }
        //OE=1;
        return(ACC);
        }
        /***************************************************
        *
        * 名稱: v_W1302
        * 說(shuō)明: 先寫(xiě)地址,后寫(xiě)命令/數(shù)據(jù)
        * 功能: 往DS1302寫(xiě)入數(shù)據(jù)
        * 調(diào)用: v_RTInputByte()
        * 輸入: ucAddr: DS1302地址, ucDa: 要寫(xiě)的數(shù)據(jù)
        * 返回值: 無(wú)
        *******************************************************/
        void v_W1302(uchar ucAddr, uchar ucDa)
        {
        //OE=0;
        T_RST = 0;
        T_CLK = 0;
        T_RST = 1;
        v_WTInputByte(ucAddr); /* 地址,命令 */
        v_WTInputByte(ucDa); /* 寫(xiě)1Byte數(shù)據(jù)*/
        T_CLK = 1;
        T_RST =0;
        //OE=1;
        }


        上一頁(yè) 1 2 3 下一頁(yè)

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 特克斯县| 锡林郭勒盟| 宜良县| 沈丘县| 大石桥市| 廊坊市| 蓝山县| 广河县| 宣城市| 九寨沟县| 孝昌县| 奉节县| 江川县| 合江县| 都江堰市| 元阳县| 剑河县| 义马市| 建瓯市| 武义县| 云和县| 克东县| 荃湾区| 理塘县| 清流县| 阿坝| 屯昌县| 通化县| 鲁甸县| 遂平县| 榆社县| 海南省| 达拉特旗| 成都市| 北川| 古交市| 柘城县| 汉源县| 镇坪县| 德令哈市| 游戏|