新聞中心

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

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

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

        /************************************************
        *
        * 名稱: uc_BurstR1302R
        * 說明: 先寫地址,后讀命令/數據(寄存器多字節方式)
        * 功能: 讀取DS1302寄存器數據
        * 調用: v_RTInputByte() , uc_RTOutputByte()
        * 輸入: pReDa: 寄存器數據地址
        * 返回值: 無
        ***************************************************/
        /*void v_BurstR1302R(uchar *pReDa)
        {
        uchar i;
        T_RST = 0;
        T_CLK = 0;
        T_RST = 1;
        v_WTInputByte(0xff); //* 0xbf:時鐘多字節讀命令
        for (i=31; i>0; i--) //*31Byte 寄存器數據
        {
        *pReDa = uc_RTOutputByte(); //* 讀1Byte數據
        pReDa++;
        }
        T_CLK = 1;
        T_RST =0;
        }*/
        /************************************************
        *
        * 名稱: v_Set1302
        * 說明:
        * 功能: 設置初始時間
        * 調用: v_W1302()
        * 輸入: pSecDa: 初始時間地址。初始時間格式為: 秒 分 時 日 月 星期 年
        * 7Byte (BCD碼) 1B 1B 1B 1B 1B 1B 1B
        * 返回值: 無
        *****************************************************/
        /*void v_Set1302(uchar *pSecDa)
        {
        uchar i;
        uchar ucAddr = 0x80;
        v_W1302(0x8e,0x00); // 控制命令,WP=0,寫操作?
        for(i =7;i>0;i--)
        {
        v_W1302(ucAddr,*pSecDa); //秒 分 時 日 月 星期 年
        pSecDa++;
        ucAddr +=2;
        }
        v_W1302(0x8e,0x80); // 控制命令,WP=1,寫保護?
        }*/
        /**********************************************
        *
        * 名稱: v_Get1302
        * 說明:
        * 功能: 讀取DS1302當前時間
        * 調用: uc_R1302()
        * 輸入: ucCurtime: 保存當前時間地址。當前時間格式為: 秒 分 時 日 月 星期 年
        * 7Byte (BCD碼) 1B 1B 1B 1B 1B 1B 1B
        * 返回值: 無
        *****************************************************/
        /*void v_Get1302(uchar ucCurtime[])
        {
        uchar i;
        uchar ucAddr = 0x81;
        for (i=0;i7;i++)
        {
        ucCurtime[i] = uc_R1302(ucAddr);//*格式為: 秒 分 時 日 月 星期 年
        ucAddr += 2;
        }
        } */
        /**************************************************
        * 名稱: Init1302
        * 說明:
        * 功能: 初始化DS1302
        * 調用:
        * 輸入:
        * 返回值: 無
        *********************************************************/
        void Init1302(void)
        {
        v_W1302(0x8e,0x00); //控制寫入WP=0
        v_W1302(0x90,0xa5);
        v_W1302(0x80,0x00); //秒
        v_W1302(0x82,0x59); //分
        v_W1302(0x84,0x10); //時
        v_W1302(0x86,0x01); //日
        v_W1302(0x88,0x08); //月
        v_W1302(0x8a,0x03); //星期
        v_W1302(0x8c,0x07); //年*/
        v_W1302(0x8e,0x80);
        }
        /******************************************************
        * 名稱: donetime
        * 說明:
        * 功能: 時間處理
        * 調用:
        * 輸入:
        * 返回值: 無
        **************************************************************/
        void donetime(void)
        {
        uchar d;
        d=uc_R1302(0x81);
        time[6]=d/16+48;
        time[7]=d%16+48;
        d=uc_R1302(0x83);
        time[3]=d/16+48;
        time[4]=d%16+48;
        d=uc_R1302(0x85);
        time[0]=d/16+48;
        time[1]=d%16+48;
        //bcd_int(d);
        }

        //
        /*void bcd_int(uchar i)
        {
        uchar j;
        time[0]=(i0x0f)+48;
        j=i>>4;
        time[1]=(j0x0f)+48;
        } */
        //
        /*void bcdtoInt(void)
        {
        uchar i;
        for(i=0;i7;i++)
        bcd_int(ucCurtm[i]);
        }*/
        //
        void SetTime(void)
        {
        v_W1302(0x8e,0x00);
        v_W1302(0x80,0x80);
        v_W1302(0x82,min);
        v_W1302(0x84,hou);
        v_W1302(0x86,day);
        v_W1302(0x88,mon);
        v_W1302(0x8c,yea);
        v_W1302(0x80,0x00);
        v_W1302(0x8e,0x80);
        }


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 旬邑县| 太康县| 沁水县| 东乡| 洪雅县| 晋中市| 新平| 肇东市| 东平县| 盐城市| 禹州市| 五常市| 清河县| 普兰县| 宜宾市| 宝山区| 五寨县| 秀山| 忻城县| 南和县| 胶南市| 夏河县| 慈利县| 岫岩| 阿城市| 建宁县| 邛崃市| 新巴尔虎左旗| 赤壁市| 绿春县| 巧家县| 香港 | 通辽市| 襄樊市| 巩留县| 游戏| 阳泉市| 饶河县| 长海县| 高阳县| 武安市|