色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

          作者: 時間:2012-12-05 來源:網(wǎng)絡 收藏

          /************************************************
          *
          * 名稱: uc_BurstR1302R
          * 說明: 先寫地址,后讀命令/數(shù)據(jù)(寄存器多字節(jié)方式)
          * 功能: 讀取DS1302寄存器數(shù)據(jù)
          * 調用: v_RTInputByte() , uc_RTOutputByte()
          * 輸入: pReDa: 寄存器數(shù)據(jù)地址
          * 返回值: 無
          ***************************************************/
          /*void v_BurstR1302R(uchar *pReDa)
          {
          uchar i;
          T_RST = 0;
          T_CLK = 0;
          T_RST = 1;
          v_WTInputByte(0xff); //* 0xbf:時鐘多字節(jié)讀命令
          for (i=31; i>0; i--) //*31Byte 寄存器數(shù)據(jù)
          {
          *pReDa = uc_RTOutputByte(); //* 讀1Byte數(shù)據(jù)
          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 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉