<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > AVR單片機的DS1302操作程序

          AVR單片機的DS1302操作程序

          作者: 時間:2011-02-18 來源:網(wǎng)絡(luò) 收藏

          變成浪子
          //mega16 7.3728MHz石英晶體 iccavr6.31a
          //相關(guān)定義:
          #define uint unsigned int
          #define uchar unsigned char
          #define DS1302_RST 0 //pc0
          #define DS1302_SDA 1 //pc1
          #define DS1302_SCLK 6 //pc6
          //ds1302相關(guān)
          //DS1302_RST=1
          #define Set_DS1302_RST() PORTC|=1//DS1302_RST=0
          #define Clr_DS1302_RST() PORTC=~(1//DS1302_SDA=1
          #define Set_DS1302_SDA() PORTC|=1//DS1302_SDA=0
          #define Clr_DS1302_SDA() PORTC=~(1//DS1302_SCLK=1
          #define Set_DS1302_SCLK() PORTC|=1//DS1302_SCLK=0
          #define Clr_DS1302_SCLK() PORTC=~(1//DS1302的SDA置為輸出腳
          #define Set_DS1302_DDRSDA() DDRC|=1//DS1302的SDA置為輸入腳
          #define Clr_DS1302_DDRSDA() DDRC=~(1#define DS1302_SEC_Reg 0x80
          #define DS1302_MIN_Reg 0x82
          #define DS1302_HR_Reg 0x84
          #define DS1302_DATE_Reg 0x86
          #define DS1302_MONTH_Reg 0x88
          #define DS1302_DAY_Reg 0x8a
          #define DS1302_YEAR_Reg 0x8c
          #define DS1302_CONTROL_Reg 0x8e
          #define DS1302_CHARGER_Reg 0x90
          #define DS1302_CLKBURST_Reg 0xbe
          //全局變量
          //為了方便,我把個位和十位分開了
          uchar year1=0x88;
          uchar year0=0x88;
          uchar month1=0x88;
          uchar month0=0x88;
          uchar date0=0x88;
          uchar date1=0x88;
          uchar day=0x88;
          uchar hour1=0x88;
          uchar hour0=0x88;
          uchar minute1=0x88;
          uchar minute0=0x88;
          uchar second1=0x88;
          uchar second0=0x88;
          //自程序開始
          void DS1302_Write(uchar reg,uchar data)
          {
          uchar i;
          Set_DS1302_DDRSDA();
          Clr_DS1302_RST();
          asm("nop");
          asm("nop");
          Clr_DS1302_SCLK();
          asm("nop");
          asm("nop");
          Set_DS1302_RST();
          asm("nop");
          asm("nop");
          for(i=8;i>0;i--)
          {
          if(reg0x01) Set_DS1302_SDA();
          else Clr_DS1302_SDA();
          asm("nop");
          asm("nop");
          Set_DS1302_SCLK();
          asm("nop");
          asm("nop");
          Clr_DS1302_SCLK();
          asm("nop");
          asm("nop");
          reg>>=1;
          }
          for(i=8;i>0;i--)
          {
          if(data0x01) Set_DS1302_SDA();
          else Clr_DS1302_SDA();
          asm("nop");
          asm("nop");
          Set_DS1302_SCLK();
          asm("nop");
          asm("nop");
          Clr_DS1302_SCLK();
          asm("nop");
          asm("nop");
          data>>=1;
          }
          Clr_DS1302_RST();
          asm("nop");
          asm("nop");
          Clr_DS1302_DDRSDA();
          }
          uchar DS1302_Read(uchar reg)
          {
          uchar data=0,i;
          reg+=1;//讀標志
          Set_DS1302_DDRSDA();
          Clr_DS1302_RST();
          asm("nop");
          asm("nop");
          Clr_DS1302_SCLK();
          asm("nop");
          asm("nop");
          Set_DS1302_RST();
          asm("nop");
          asm("nop");
          for(i=8;i>0;i--)
          {

          if(reg0x01) Set_DS1302_SDA();
          else Clr_DS1302_SDA();
          asm("nop");
          asm("nop");
          Set_DS1302_SCLK();
          asm("nop");
          asm("nop");
          Clr_DS1302_SCLK();
          asm("nop");
          asm("nop");
          reg>>=1;
          }
          Clr_DS1302_DDRSDA();
          for(i=8;i>0;i--)
          {
          data>>=1;
          if((PINC(1Set_DS1302_SCLK();
          asm("nop");
          asm("nop");
          Clr_DS1302_SCLK();
          asm("nop");
          asm("nop");
          }
          Clr_DS1302_RST();
          asm("nop");
          asm("nop");
          return(data);
          }
          uchar Check_DS1302(void)
          {
          DS1302_Write(DS1302_CONTROL_Reg,0x80);
          if(DS1302_Read(DS1302_CONTROL_Reg)==0x80) return 1;
          return 0;
          }
          void DS1302_Init(void)
          {
          DS1302_Write(DS1302_CONTROL_Reg,0x00);//關(guān)閉寫保護
          DS1302_Write(DS1302_SEC_Reg,0x80);//暫停
          DS1302_Write(DS1302_CHARGER_Reg,0xa9);//涓流充電
          DS1302_Write(DS1302_YEAR_Reg,0x04); //年
          DS1302_Write(DS1302_MONTH_Reg,0x12); //月
          DS1302_Write(DS1302_DATE_Reg,0x09); //日
          DS1302_Write(DS1302_DAY_Reg,0x04); //周
          DS1302_Write(DS1302_HR_Reg,0x10); //時
          DS1302_Write(DS1302_MIN_Reg,0x25); //分
          DS1302_Write(DS1302_SEC_Reg,0x00); //秒

          DS1302_Write(DS1302_CONTROL_Reg,0x80);//打開寫保護
          }
          void ReadTime(void)
          {
          uchar data;
          data=DS1302_Read(DS1302_YEAR_Reg);//年
          year0=data0x0f;
          year1=data>>4;
          data=DS1302_Read(DS1302_MONTH_Reg);//月
          month0=data0x0f;
          month1=(data>>4)0x01;
          data=DS1302_Read(DS1302_DATE_Reg);//日
          date0=data0x0f;
          date1=(data>>4)0x03;
          data=DS1302_Read(DS1302_DAY_Reg);//周
          day=data0x07;
          data=DS1302_Read(DS1302_HR_Reg);//時
          hour0=data0x0f;
          hour1=(data>>4)0x03;
          data=DS1302_Read(DS1302_MIN_Reg);//分
          minute0=data0x0f;
          minute1=(data>>4)0x07;
          data=DS1302_Read(DS1302_SEC_Reg);//秒
          second0=data0x0f;
          second1=(data>>4)0x07;
          }



          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();