中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        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)閉