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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于24C08帶掉電記憶功能的兩路電子跑表

          基于24C08帶掉電記憶功能的兩路電子跑表

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

          #include
          #define uchar unsigned char
          #define uint unsigned int
          uchar tent,tent1,secbf,secbf1;sec,min,sec1,min1;

          bit write_secbf=0,write_secbf1=0;

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

          sbit scl_24=P2^6;
          sbit sda_24=P2^7;
          sbit en=P1^2;
          sbit rs=P1^0;
          sbit rw=P1^1;
          sbit gnd=P2^5;
          sbit puss=P2^3;
          sbit clear=P2^2;
          sbit puss1=P2^1;
          sbitstart=P2^0;
          void delay(int i)
          {uchar x,y;
          for (x=i;x>0;x--)
          for(y=110;y>0;y--);
          }

          /**********1602子程序****************************/

          void write_com(uchar com)
          {
          rs=0;
          P0=com;
          delay(5);
          en=1;
          delay(5);
          en=0;
          }

          void write_dat(uchar dat)
          {
          rs=1;
          P0=dat;
          delay(5);
          en=1;
          delay(5);
          en=0;

          }


          void init_1602()
          {
          en=0;
          rw=0;
          write_com(0x38);
          write_com(0x0c);//如果輸入0X0F會是什么效果
          write_com(0x06);
          write_com(0x01);
          write_com(0x80);
          }


          /**************************延時子程序***********************/


          void usdelay()
          {
          _nop_();_nop_();_nop_();
          _nop_();_nop_();_nop_();
          }

          /***************以下開始為24CXX用子程序**********************/


          void star24()//開始信號
          {//時鐘線在高電平時,數(shù)據(jù)線由高變低即為開始信號由高變低即為開始信號
          sda_24=1;
          usdelay();
          scl_24=1;
          usdelay();
          sda_24=0;//數(shù)據(jù)線由高變低即為開始信號
          usdelay();
          scl_24=0;
          }

          void stop24()//結(jié)束信號
          {//時鐘線在高電平時,數(shù)據(jù)線由低變高即為結(jié)束信號
          sda_24=0;
          usdelay();
          scl_24=1;
          usdelay();
          sda_24=1;
          usdelay();
          sda_24=0;//這句可有可無
          scl_24=0;//這句可有可無
          }

          void Ack24()
          {uchar i;
          scl_24=1;
          usdelay();
          while((sda_24==1)&&(i<200))i++;
          scl_24=0;
          usdelay();
          }
          /*
          void NoAck24() //不應(yīng)答
          {
          sda_24=1;//時鐘線高電平時,數(shù)據(jù)線高,即為不應(yīng)答
          usdelay();
          scl_24=1;
          usdelay();
          scl_24=0;
          usdelay();
          } */

          void init_24()
          {
          sda_24=1;
          usdelay();
          scl_24=1;
          usdelay();
          }


          void write_byte(uchar dat)
          {
          uchar i,temp;
          temp=dat;
          //scl_24=0;//低電平可以變數(shù)據(jù),為高時是讀,且不能變
          for(i=0;i<8;i++)
          {
          temp=temp<<1;
          scl_24=0;
          usdelay();
          sda_24=CY;//CY是PSW寄存器中的CY位,再把CY賦給SDA,再由SCL控制發(fā)出去
          //sda_24=(bit)(temp&0x80);//用這句也可以換掉上一句(bit)是強制轉(zhuǎn)換命令,把數(shù)據(jù)轉(zhuǎn)成非0即1
          usdelay();
          scl_24=1;
          usdelay();
          }
          scl_24=0;
          usdelay();
          sda_24=1;//釋放總線
          usdelay();
          }

          uchar read_byte()
          {

          uchar i,k;
          scl_24=0; //這句可有可無
          usdelay(); //這句可有可無
          sda_24=1; //釋放總線
          usdelay();
          for(i=0;i<8;i++)
          {
          scl_24=1;
          usdelay();
          k=(k<<1)|sda_24;//判斷8次,移位7次
          scl_24=0;
          usdelay();

          }
          return k;
          }

          void write_add(uchar add,uchar dat)
          {
          star24();
          write_byte(0xa0);//呼叫器件,高四位為定了的1010,即A,低四位三個接了地,所以為000,最后一個0是寫標志
          Ack24();//寫了后要馬上應(yīng)答
          write_byte(add);//寫要往哪個地址寫數(shù)據(jù)00-1023
          Ack24();//每寫一次要給一個應(yīng)答位
          write_byte(dat);//把數(shù)據(jù)寫入
          Ack24();
          stop24();//給一個停止位,結(jié)束寫數(shù)據(jù)
          }


          uchar read_add(uchar add)
          {
          uchar dat;
          star24();
          write_byte(0xa0);//呼叫器件,高四位為定了的1010,即A,低四位三個接了地,所以為000,最后一個0是寫標志
          Ack24();//寫了后要馬上應(yīng)答
          write_byte(add);//寫入要往哪個地址讀數(shù)據(jù)00-1023
          Ack24();//每寫一次要給一個應(yīng)答位
          star24();
          write_byte(0xa1);//呼叫器件,高四位為定了的1010,即A,低四位三個接了地,所以為000,最后一個1是讀標志
          Ack24();//寫了后要馬上應(yīng)答
          dat=read_byte();
          stop24();//給一個停止位,結(jié)束讀數(shù)據(jù)
          return dat;
          }

          void display_secbf(uchar dat)
          {

          write_com(0x80+13);
          write_dat(0x30+dat);

          }

          void display_secbf1(uchar dat)
          {

          write_com(0x80+0x40+13);
          write_dat(0x30+dat);

          }


          上一頁 1 2 下一頁

          關(guān)鍵詞: 24C08帶掉電記憶電子跑

          評論


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