新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > AVR內(nèi)部EEPROM讀寫范例

        AVR內(nèi)部EEPROM讀寫范例

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

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

        **** ***

        **** 編譯器:WIN20050214 ***

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

        /*

        本程序簡單的示范了如何使用ATMEGA16的EERPOM

        EEPROM的簡介

        EEPROM的寫操作

        EEPROM的讀操作

        出于簡化程序考慮,各種數(shù)據(jù)沒有對外輸出,學(xué)習(xí)時建議使用JTAG ICE硬件仿真器。

        在打開調(diào)試文件到JTAG后,打開Debug -> JTAG ICE Options菜單,然后在JTAG ICE Properties中點(diǎn)擊Dbug頁面,將preserve eeprom選項(xiàng)選中。 在每次仿真調(diào)試時候,就保護(hù)EEPROM內(nèi)容了。否則,會按照默認(rèn)設(shè)置擦除EEPROM的內(nèi)容。

        由于定義了EEPROM變量,JTAG調(diào)試時會詢問是否初始化EEPROM,請選擇[否],EEPROM的數(shù)據(jù)也可以在view->memory,選Eeprom窗口下察看

        */

        #i nclude

        #i nclude

        ////時鐘定為內(nèi)部1MHz,F_CPU=1000000 時鐘頻率對程序的運(yùn)行沒什么影響

        /*

        GCC(avr-libc)里面自帶了EEPROM的讀寫函數(shù)。

        下面列舉部分常用函數(shù)(原型)

        #define eeprom_is_ready() bit_is_clear(EECR, EEWE)

        檢測EEPROM是否準(zhǔn)備好。OK返回1(返回EEWE位)

        #define eeprom_busy_wait() do {} while (!eeprom_is_ready())

        等待EEPROM操作完成

        extern uint8_t eeprom_read_byte (const uint8_t *addr);

        讀取指定地址的一個字節(jié)8bit的EEPROM數(shù)據(jù)

        extern uint16_t eeprom_read_word (const uint16_t *addr);

        讀取指定地址的一個字16bit的EEPROM數(shù)據(jù)

        extern void eeprom_read_block (void *buf, const void *addr, size_t n);

        讀取由指定地址開始的指定長度的EEPROM數(shù)據(jù)

        extern void eeprom_write_byte (uint8_t *addr, uint8_t val);

        向指定地址寫入一個字節(jié)8bit的EEPROM數(shù)據(jù)

        extern void eeprom_write_word (uint16_t *addr, uint16_t val);

        向指定地址寫入一個字16bit的EEPROM數(shù)據(jù)

        extern void eeprom_write_block (const void *buf, void *addr, size_t n);

        由指定地址開始寫入指定長度的EEPROM數(shù)據(jù),但不支持部分AVR,原文如下:

        ote This library will e not work with the following devices since these

        devices have the EEPROM IO ports at different locations:

        - AT90CAN128

        - ATmega48

        - ATmega88

        - ATmega165

        - ATmega168

        - ATmega169

        - ATmega325

        - ATmega3250

        - ATmega645

        - ATmega6450


        上一頁 1 2 3 下一頁

        關(guān)鍵詞: AVR 內(nèi)部EEPROM 讀寫范例

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 本溪| 绵竹市| 山阴县| 双桥区| 华容县| 苍梧县| 慈利县| 花莲市| 钟山县| 迁安市| 东台市| 横峰县| 自治县| 桃园县| 滦南县| 措勤县| 昌都县| 江北区| 广南县| 临清市| 梨树县| 青海省| 疏附县| 江北区| 福清市| 务川| 肇庆市| 德兴市| 奇台县| 洞口县| 清苑县| 大邑县| 辽源市| 资兴市| 离岛区| 通河县| 米易县| 荔波县| 克拉玛依市| 南部县| 金堂县|