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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > IIC記憶單片機(jī)開(kāi)機(jī)次數(shù)

          IIC記憶單片機(jī)開(kāi)機(jī)次數(shù)

          作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏
          IIC具有記憶功能,其實(shí)之前沒(méi)有體會(huì)好為什么會(huì)記憶,因?yàn)榫幍某绦蚴亲専糸W爍的,所以理解不出它可以所謂記憶的原理,今天通過(guò)數(shù)碼管讓其記憶單片機(jī)開(kāi)機(jī)次數(shù),終于明天了它的真正原理,其實(shí)是單片機(jī)控制它的時(shí)候,程序不斷運(yùn)行,把程序運(yùn)行得到的數(shù)據(jù)不斷地寫入IIC寄存器中,而寄存器是掉電后不數(shù)據(jù)不會(huì)丟失的,所以當(dāng)我們把程序關(guān)了,也就是掉電了以后數(shù)據(jù)被保存了下來(lái),下次再開(kāi)機(jī)運(yùn)行的時(shí)候,程序是從頭開(kāi)始的,但是地址是從我們上次我們寄存器儲(chǔ)存地址開(kāi)始的,所以就達(dá)到了記憶的功能。這個(gè)的應(yīng)用在數(shù)據(jù)的存儲(chǔ)和保護(hù)是很大的,比如交通燈記憶違章車輛,賬戶儲(chǔ)存,數(shù)據(jù)累積等可以靠它進(jìn)行儲(chǔ)存。

          下面是IIC記憶單片機(jī)開(kāi)機(jī)次數(shù)的程序:

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

          程序如下:
          //版權(quán)所有:單片機(jī)網(wǎng)http://www.51hei.com
          #include
          #include
          #define uchar unsigned char//宏定義
          #define uint unsigned int
          sbit scl=P2^0;//這兩個(gè)位定義是控制IIC的引腳
          sbit sda=P2^1;
          uchar number[10]={ //數(shù)碼管數(shù)組定義
          0x3f,
          0x06,
          0x5b,
          0x4f,
          0x66,
          0x6d,
          0x7d,
          0x07,
          0x7f,
          0x6f
          };
          void delayt(void)//數(shù)碼管的延時(shí)
          {
          uint x,y;
          for(x=0;x<5;x++)
          for(y=0;y<120;y++);
          }
          void delay(void)//IIC的適應(yīng)延時(shí)
          {
          _nop_();_nop_();_nop_();_nop_();
          _nop_();_nop_();_nop_();_nop_();
          }
          void start()//開(kāi)始
          {
          sda=1;
          delay();
          scl=1;
          delay();
          sda=0;
          delay();
          }
          void stop()//停止
          {
          sda=0;
          delay();
          scl=1;
          delay();
          sda=1;
          delay();
          }
          void init()//初始化設(shè)置
          {
          sda=1;
          scl=1;
          }
          void answer()//應(yīng)答
          {
          uchar i;
          scl=1;
          while((sda==1)&&(i<250))i++;
          scl=0;
          delay();
          }
          void noanser()//非應(yīng)答
          {
          scl=1;
          delay();
          sda=1;
          delay();
          scl=0;
          delay();
          }
          void writebyte(uchar dat)//寫字節(jié)
          {
          uchar i;
          scl=0;
          delay();
          for(i=0;i<8;i++)
          {
          if(dat&0x80)
          {
          sda=1;
          }
          else
          {
          sda=0;
          }
          dat=dat<<1;
          delay();
          scl=1;
          delay();
          scl=0;
          delay();
          }
          sda=1;

          }

          uchar readbyte()//讀字節(jié)
          {
          uchar i,dat;
          scl=0;
          delay();
          sda=1;
          delay();
          for(i=0;i<8;i++)
          {
          scl=1;
          delay();
          dat=dat<<1;
          if(sda)
          {
          dat++;
          }
          scl=0;
          delay();
          }
          return dat;
          }


          void write_byte(uchar add,uchar dat)//寫字節(jié)的封裝
          {
          init();
          start();
          writebyte(0xae);
          answer();
          writebyte(add);
          answer();
          writebyte(dat);
          answer();
          stop();
          }
          uchar read_byte(uchar add)//讀字節(jié)的封裝
          {
          uchar value;
          init();
          start();
          writebyte(0xae);
          answer();
          writebyte(add);
          answer();
          start();
          writebyte(0xaf);
          answer();
          value=readbyte();
          noanser();
          stop();
          return value;
          }
          void main()
          {


          uchar temp,k,j;

          temp=read_byte(0x10);//數(shù)碼管個(gè)位和十們的操作
          k=temp/10;
          j=temp%10;
          temp++;
          write_byte(0x10,temp);
          delay();
          while(1)//數(shù)碼管顯示
          {
          P1=number[k];
          P0=0;
          delayt();
          P1=number[j];
          P0=1;
          delayt();
          }
          }



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