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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AT240C02中EEPROM保存數(shù)據(jù)

          AT240C02中EEPROM保存數(shù)據(jù)

          作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏
          /***********************

          程序功能:
          利用定時(shí)器產(chǎn)生一個(gè)0~99秒變化的秒表,并且顯示在數(shù)碼管上,
          每過(guò)一秒將這個(gè)變化的數(shù)寫(xiě)入板上AT24C02內(nèi)部。當(dāng)關(guān)閉電源,
          并再次打開(kāi)電源時(shí),單片機(jī)先從AT24C02中將原來(lái)寫(xiě)入的數(shù)讀取出來(lái),
          接著此數(shù)繼續(xù)變化并顯示在數(shù)碼管上。
          ************************/

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

          /************************
          CODE:
          ************************/
          #include
          #define uint unsigned int
          #define uchar unsigned char
          #define AT024C02 0xa0
          sbit sda=P2^0;
          sbit scl=P2^1;
          sbit LS138A=P2^2;
          sbit LS138B=P2^3;
          sbit LS138C=P2^4;
          uchar led[8];
          uchar code dutable[]={
          0x3f,0x06,0x5b,0x4f,
          0x66,0x6d,0x7d,0x07,
          0x7f,0x6f};//段選
          uchar sec,count;
          /***********************
          I2C總線控制
          ***********************/
          void delay()
          {;;}
          void delay_1ms(uint z)
          {
          uint x,y;
          for(x=z;x>0;x--)
          {
          for(y=0;y<=110;y++)
          {
          }
          }
          }
          void i2cinit()
          {
          sda=1;
          delay();
          scl=1;
          delay();
          }
          void start()
          {
          sda=1;
          delay();
          scl=1;
          delay();
          sda=0;
          }
          void stop()
          {
          sda=0;
          delay();
          scl=1;
          delay();
          sda=1;
          }
          void respons()
          {
          uchar i=0;
          scl=1;
          delay();
          while((sda==1)&&(i<250))//等待應(yīng)答信號(hào)
          {
          i++;
          }
          scl=0;
          delay();
          }
          void write_byte(uchar date)
          {
          uchar i,temp;
          temp=date;
          for(i=0;i<8;i++)
          {
          scl=0;
          delay();
          temp=temp<<1;
          sda=CY;
          delay();
          scl=1;
          delay();
          }
          scl=0;
          delay();
          sda=1;
          delay();
          }
          uchar read_byte()
          {
          uchar i,k;
          scl=0;
          delay();
          sda=1;
          delay();
          for(i=0;i<8;i++)
          {
          scl=1;
          delay();
          k=(k<<1)|sda;
          delay();
          scl=0;
          delay();
          }
          scl=0;
          delay();
          sda=1;
          delay();
          return k;
          }
          void write_address(uchar address,uchar date)
          {
          start();
          write_byte(AT024C02);
          respons();
          write_byte(address);
          respons();
          write_byte(date);
          respons();
          stop();
          }
          uchar read_address(uchar address)
          {
          uchar date;
          start();
          write_byte(AT024C02);
          respons();
          write_byte(address);
          respons();

          start();
          write_byte(AT024C02+1);
          respons();
          date=read_byte();
          stop();
          return date;
          }
          /***********************
          定時(shí)器中斷
          ***********************/
          void time0uint()
          {
          sec=0;
          count=0;
          TMOD=0x01;
          TH0=(65536-50000)/256;
          TL0=(65536-50000)%256;
          EA=1;
          ET0=1;
          TR0=1;
          }
          void display()
          {
          uchar i;
          sec=read_address(1);
          led[0]=dutable[sec/1000];
          led[1]=dutable[sec%1000/100];
          led[2]=dutable[sec%100/10];
          led[3]=dutable[sec%10];
          for(i=0;i<4;i++)
          {
          P0=led[i];
          switch(i)
          {
          case 0:LS138A=0; LS138B=0; LS138C=0; break;
          case 1:LS138A=1; LS138B=0; LS138C=0; break;
          case 2:LS138A=0; LS138B=1; LS138C=0; break;
          case 3:LS138A=1; LS138B=1; LS138C=0; break;
          }
          delay_1ms(2);
          }
          P0=0X00;
          }
          void main()
          {
          i2cinit();
          time0uint();
          while(1)
          {
          display();
          }
          }
          void time0() interrupt 1
          {
          TH0=(65536-50000)/256;
          TL0=(65536-50000)%256;
          count++;
          if(count==20)
          {
          count=0;
          sec++;
          if(sec>=100)
          {
          sec=0;
          }
          write_address(1,sec);
          }
          }



          關(guān)鍵詞: AT240C02EEPROM保存數(shù)

          評(píng)論


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