• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機控制ds1302的時鐘C程序

    單片機控制ds1302的時鐘C程序

    作者: 時間:2012-12-05 來源:網絡 收藏

    /**************************************************/
    /* 實時 */
    /*51hei.com會員經典作品已經測試成功/
    /**************http://www.51hei.com/ziliao/file/c.rar點此鏈接下載本例的代碼*****/

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

    #define uchar unsigned char

    sbit T_CLK = P3^4; /*實時時鐘時鐘線引腳 */
    sbit T_IO = P3^3; /*實時時鐘數據線引腳 */
    sbit T_RST = P3^2; /*實時時鐘復位線引腳 */
    //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
    * 說明:
    * 功能: 往DS1302寫入1Byte數據
    * 調用:
    * 輸入: ucDa 寫入的數據
    * 返回值: 無
    ****************************************************/
    void v_WTInputByte(uchar ucDa)
    {
    uchar i;
    //OE=0;
    ACC= ucDa;
    for(i=8; i>0; i--)
    {
    T_IO = ACC0; //*相當于匯編中的 RRC
    T_CLK = 1;
    T_CLK = 0;
    ACC =ACC>> 1;
    }
    //OE=1;
    }
    /***************************************************
    *
    * 名稱: uchar uc_RTOutputByte
    * 說明:
    * 功能: 從DS1302讀取1Byte數據
    * 調用:
    * 輸入:
    * 返回值: ACC
    ****************************************************/
    uchar uc_RTOutputByte(void)
    {
    uchar i;
    //OE=0;
    for(i=8; i>0; i--)
    {
    ACC = ACC>>1; //*相當于匯編中的 RRC
    ACC7 = T_IO;
    T_CLK = 1;
    T_CLK = 0;
    }
    //OE=1;
    return(ACC);
    }
    /***************************************************
    *
    * 名稱: v_W1302
    * 說明: 先寫地址,后寫命令/數據
    * 功能: 往DS1302寫入數據
    * 調用: v_RTInputByte()
    * 輸入: ucAddr: DS1302地址, ucDa: 要寫的數據
    * 返回值: 無
    *******************************************************/
    void v_W1302(uchar ucAddr, uchar ucDa)
    {
    //OE=0;
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    v_WTInputByte(ucAddr); /* 地址,命令 */
    v_WTInputByte(ucDa); /* 寫1Byte數據*/
    T_CLK = 1;
    T_RST =0;
    //OE=1;
    }


    上一頁 1 2 3 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 蓝田县| 确山县| 嘉善县| 大洼县| 贵港市| 西乌珠穆沁旗| 隆尧县| 会昌县| 辽中县| 松桃| 大宁县| 万荣县| 米泉市| 额敏县| 年辖:市辖区| 澜沧| 白玉县| 包头市| 威远县| 高阳县| 白玉县| 镇赉县| 海伦市| 易门县| 曲松县| 定兴县| 合肥市| 罗定市| 华坪县| 乐陵市| 莱阳市| 泗洪县| 沙田区| 永川市| 桓仁| 尖扎县| 肥城市| 仁寿县| 沙雅县| 威海市| 观塘区|