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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > AVR單片機三種存儲器使用問題

          AVR單片機三種存儲器使用問題

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

          (2). FLASH 區(qū)數(shù)組應(yīng)用:
          定義:
          const prog_uchar flash_array[] = {0,1,2,3,4,5,6,7,8,9}; //定義
          另外一種形式
          const unsigned char flash_array[] RROGMEM = {0,1,2,3,4,5,6,7,8,9};
          讀取示例:
          unsigend char I, ram_val;
          for(I=0 ; I10 ;I ++) // 循環(huán)讀取每一字節(jié)
          {
          ram_val = pgm_read_byte(flash_array + I);
          … … //處理
          }
          (3).FLASH 區(qū)字符串常量的應(yīng)用
          全局定義形式:
          const char flash_str[] PROGMEM = “Hello, world!”;
          函數(shù)內(nèi)定義形式:
          const char *flash_str = PSTR(“Hello, world!”);
          以下為一個FLASH 字符串應(yīng)用示例
          #include avr/io.h>
          #include avr/pgmspace.h>
          #include stdio.h>
          const char flash_str1[] PROGMEM = “全局定義字符串”;
          int main(void)
          int I;
          char *flash_str2=PSTR(“函數(shù)內(nèi)定義字符串”);
          while(1)
          {
          scanf(“%d”,I);
          printf_P(flash_str1);
          printf(“”);
          printf_P(flash_str2);
          printf(“”);
          }
          }
          4. EEPROM 數(shù)據(jù)操作
          #include avr/eeprom.h>
          頭文件聲明了avr-libc 提供的操作EEPROM 的API 函數(shù)。
          這些函數(shù)有:
          eeprom_is_ready() //EEPROM 忙檢測(返回EEWE 位)
          eeprom_busy_wait() //查詢等待EEPROM 準備就緒
          uint8_t eeprom_read_byte (const uint8_t *addr) //從指定地址讀一字節(jié)
          uint16_t eeprom_read_word (const uint16_t *addr) //從指定地址一字
          void eeprom_read_block (void *buf, const void *addr, size_t n) //讀塊
          void eeprom_write_byte (uint8_t *addr, uint8_t val) //寫一字節(jié)至指定地址
          void eeprom_write_word (uint16_t *addr, uint16_t val) //寫一字到指定地址
          void eeprom_write_block (const void *buf, void *addr, size_t n)//寫塊
          在程序中對EEPROM 操作有兩種方式
          方式一:直接指定EERPOM 地址
          示例:

          #include avr/io.h>
          #include avr/eeprom.h>
          int main(void)
          {
          unsigned char val;
          eeprom_busy_wait(); //等待EEPROM 讀寫就緒
          eeprom_write_byte(0,0xaa); //將0xaa 寫入到EEPORM 0 地址處
          eeprom_busy_wait();
          val=eeprom_read_byte(0); //從EEPROM 0 地址處讀取一字節(jié)賦給 變量val
          while(1);
          }
          方式二:先定義EEPROM 區(qū)變量法
          示例:
          #include avr/io.h>
          #include avr/eeprom.h>
          unsigned char val1 __attribute__((section(".eeprom")));//EEPROM 變量定義方式
          int main(void)
          {
          unsigned char val2;
          eeprom_busy_wait();
          eeprom_write_byte (val1, 0xAA);
          eeprom_busy_wait();
          val2 = eeprom_read_byte(val1);
          while(1);
          }
          在這種方式下變量在EEPROM 內(nèi)的具體地址由編譯器自動分配。相對方式一,數(shù)據(jù)在EEPROM 中的具體位置是不透明的。為EEPROM 變量賦的初始值,編譯時被分配到.eeprom 段中,可用avr-objcopy 工具從.elf 文件中提取并產(chǎn)生ihex 或binary 等格式的文件。

          單片機相關(guān)文章:單片機教程


          單片機相關(guān)文章:單片機視頻教程


          單片機相關(guān)文章:單片機工作原理


          存儲器相關(guān)文章:存儲器原理


          塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: AVR單片機 存儲器 RAM

          評論


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