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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MSP430與DS1302之1602顯示

          MSP430與DS1302之1602顯示

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

          /*******************************************
          函數(shù)名稱:Reset_DS1302
          功 能:對DS1302進行復(fù)位操作
          ********************************************/
          void Reset_DS1302(void)
          {
          DS_RST_OUT; //RST對應(yīng)的IO設(shè)置為輸出狀態(tài)
          DS_SCL_OUT; //SCLK對應(yīng)的IO設(shè)置為輸出狀態(tài)
          DS_SCL0; //SCLK=0
          DS_RST0; //RST=0
          delay(10);
          DS_SCL1; //SCLK=1
          }
          /*******************************************
          函數(shù)名稱:Write1Byte
          功 能:對DS1302寫入1個字節(jié)的數(shù)據(jù)
          ********************************************/
          void Write_Byte(uchar wdata)
          {
          uchar i;
          DS_SDA_OUT; //SDA對應(yīng)的IO設(shè)置為輸出狀態(tài)
          DS_RST1; //REST=1;
          for(i = 8; i > 0; i--)
          {
          if(wdata&0x01)
          DS_SDA1;
          else
          DS_SDA0;
          DS_SCL0;
          delay(10);
          DS_SCL1;
          delay(10);
          wdata>>= 1;
          }
          }
          /*******************************************
          函數(shù)名稱:Read1Byte
          功 能:從DS1302讀出1個字節(jié)的數(shù)據(jù)
          ********************************************/
          uchar Read_Byte()
          {
          uchar i;
          uchar rdata = 0X00;
          DS_SDA_IN; //SDA對應(yīng)的IO設(shè)置為輸入狀態(tài)
          DS_RST1; //REST=1;
          for(i = 8; i > 0; i--)
          {
          DS_SCL1;
          delay(10);
          DS_SCL0;
          delay(10);
          rdata >>= 1;
          if(DS_SDA_BIT)
          rdata |= 0x80;
          }

          return(rdata);
          }
          /*******************************************
          函數(shù)名稱:Write_dat
          功 能:向某個寄存器寫入一個字節(jié)數(shù)據(jù)
          參 數(shù):add--寄存器地址
          dat--寫入的數(shù)據(jù)
          ********************************************/
          void Write_dat(uchar add, uchar dat)
          {
          DS_RST0;
          DS_SCL0;
          _NOP();
          DS_RST1;
          Write_Byte(add); //寫入地址
          Write_Byte(dat); //寫入數(shù)據(jù)
          DS_SCL1;
          DS_RST0;
          }
          /*******************************************
          函數(shù)名稱:Read_dat
          功 能:從某個寄存器讀出一個字節(jié)數(shù)據(jù)
          參 數(shù):addr--寄存器地址
          返回值 :讀出的數(shù)據(jù)
          ********************************************/
          uchar read_1302add(uchar add)
          {
          uchar rdata;
          DS_RST0;
          DS_SCL0;
          _NOP();
          DS_RST1;
          Write_Byte(add); //寫入地址
          rdata = Read_Byte(); //讀出數(shù)據(jù)
          DS_SCL1;
          DS_RST0;

          return(rdata);
          }
          /***********初始化1302*************/
          void init_1302()
          {
          flag=read_1302add(0x81);//讀秒寄存器最高位,讀出時鐘狀態(tài)
          if(flag&0x80);//判斷時鐘是否關(guān)閉,若內(nèi)部關(guān)閉,則初始化,否則繼續(xù)走
          {
          Write_dat(0x8e,0x00);
          Write_dat(0x80,((55/10)<<4|(55%10)));//寫秒寄存器,并寫入初值55
          Write_dat(0x82,((59/10)<<4|(59%10)));//寫分寄存器,并寫入初值59
          Write_dat(0x84,((22/10)<<4|(22%10)));//寫小時寄存器,并寫入初值23
          Write_dat(0x86,((24/10)<<4|(24%10)));//寫日寄存器,并寫入初值18
          Write_dat(0x88,((2/10)<<4|(2%10)));//寫月寄存器,并寫入初值2
          Write_dat(0x8a,((5/10)<<4|(5%10)));//寫周寄存器,并寫入初值5
          Write_dat(0x8c,((12/10)<<4|(12%10)));//寫年寄存器,并寫入初值12,不能寫2012年
          Write_dat(0x90,0xa5);//寫充電方式
          Write_dat(0x8e,0x80);//加上寫保護

          }
          }
          /*****************讀出秒的十進制數(shù)***************************/

          本文引用地址:http://www.ex-cimer.com/article/201612/324673.htm

          uchar readsecond()
          {
          uchar dat;
          dat=read_1302add(0x81);
          second=((dat&0x70)>>4)*10+(dat&0x0f);
          return second;
          }

          /*****************讀出分的十進制數(shù)***************************/

          uchar readminute()
          {
          uchar dat;
          dat=read_1302add(0x83);
          minute=((dat&0x70)>>4)*10+(dat&0x0f);
          return minute;
          }

          /*****************讀出小時的十進制數(shù)***************************/

          uchar readhour()
          {
          uchar dat;
          dat=read_1302add(0x85);
          hour=((dat&0x70)>>4)*10+(dat&0x0f);
          return hour;
          }
          /*****************讀出天的十進制數(shù)***************************/

          uchar readday()
          {
          uchar dat;
          dat=read_1302add(0x87);
          day=((dat&0x70)>>4)*10+(dat&0x0f);
          returnday;
          }

          /*****************讀出月的十進制數(shù)***************************/

          uchar readmonth()
          {
          uchar dat;
          dat=read_1302add(0x89);
          month=((dat&0x70)>>4)*10+(dat&0x0f);
          return month;
          }
          /*****************讀出周的十進制數(shù)***************************/

          uchar readweek()
          {
          uchar dat;
          dat=read_1302add(0x8b);
          week=((dat&0x70)>>4)*10+(dat&0x0f);
          return week;
          }



          關(guān)鍵詞: MSP430DS13021602顯

          評論


          技術(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); })();