在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            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 準(zhǔn)備就緒
            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)閉