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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ATmega16L-EEPROM讀寫操作實(shí)驗(yàn)

          ATmega16L-EEPROM讀寫操作實(shí)驗(yàn)

          作者: 時(shí)間:2012-08-22 來源:網(wǎng)絡(luò) 收藏
          /***************************************
          讀寫AVR單片機(jī)實(shí)驗(yàn)。
          先向單片機(jī)寫入254,然后讀出254,
          并在數(shù)碼管上顯示出來
          ***************************************/
          #includeiom16v.h>
          const unsigned char duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
          const unsigned char weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

          unsigned char shu[8];
          unsigned int num;
          /****************************************
          延時(shí)函數(shù)
          ****************************************/
          void delay(unsigned char t)
          {
          unsigned char x,y;
          for(x=t;x>0;x--)
          for(y=100;y>0;y--);
          }

          /****************************************
          顯示函數(shù)
          ****************************************/
          void display(void)
          {
          unsigned char i;
          for(i=0;i4;i++)
          {
          PORTB =0X00;
          PORTA|=0X01;
          PORTA=0XFE;

          PORTB =weima[i];
          PORTA|=0x02;
          PORTA=0XFD;

          PORTB=shu[i];
          PORTA|=0X01;
          PORTA=0XFE;

          delay(4);
          }
          }

          /***************************************

          ***************************************/
          void write_eep(unsigned int add,unsigned int data)
          { //data為待寫數(shù)據(jù),add為某單元地址
          while(EECR(1EEWE)); //等待前一次寫操作完成
          EEAR=add; //設(shè)定單元地址
          EEDR=data; //將數(shù)據(jù)寫入EEDR
          EECR|=(1EEMWE); //允許EEPROM操作
          EECR|=(1EEWE); //開始EEPROM操作
          }

          /***************************************
          讀EEPROM
          ***************************************/
          unsigned char read_eep(unsigned int add)
          { //add為某單元地址
          while(EECR(1EEWE));//等待前一次寫操作完成
          EEAR=add; //設(shè)定單元地址
          EECR|=(1EERE); //開始EEPROM寫操作
          return EEDR; //返回讀出的數(shù)據(jù)
          }

          /***************************************
          數(shù)據(jù)轉(zhuǎn)換子函數(shù)
          ***************************************/
          void change(unsigned int i)
          {
          shu[0]=duanma[i/1000];
          shu[1]=duanma[i/100%10];
          shu[2]=duanma[i%100/10];
          shu[3]=duanma[i%10];
          }


          /***************************************
          端口初始化
          ***************************************/
          void init_port(void)
          {
          PORTA=0XFF;
          DDRA=0XFF;
          PORTB=0XFF;
          DDRB=0XFF;
          }

          /***************************************
          MAIN
          ***************************************/
          void main(void)
          {
          init_port();
          write_eep(488,254);
          delay(20);
          num=read_eep(488);
          delay(20);
          change(num);

          while(1)
          {
          display();
          }
          }


          關(guān)鍵詞: ATmega16L EEPROM 讀寫操作

          評(píng)論


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