新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > avr內部EEPROM實驗

        avr內部EEPROM實驗

        作者: 時間:2016-11-11 來源:網絡 收藏
        學習了AVR內部EEPROM的使用。

        內部flash中保存的是燒錄進去的程序。

        本文引用地址:http://www.104case.com/article/201611/316846.htm

        內部EEPROM可以保存數據,并且斷電后還保存著。

        內部SRAM可以保存變量數據,斷電后不保存。

        仿真圖片



        程序代碼


        #include
        #include
        #include "delay.h"
        #define uchar unsigned char
        #define uint unsigned int
        uchar led7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽7段數碼管顯示0-9對應的8bit
        uchar temp;
        void main(void)
        {
        inti_port(); //端口初始化
        eeprom_read(0x00, 0x01, &temp);//先讀0x00位置的內容
        if(temp>9) //循環顯示0-9
        {
        temp=0;
        }
        PORTB=led7[temp]; //通過共陽數碼管顯示
        temp++; //把讀出的內容+1
        eeprom_write(0x00, 0x01, &temp);//把+1后的內部寫入EEPROM
        while(1)
        {};
        }

        void inti_port(void)
        {
        PORTB=0xff;
        DDRB=0xff;
        }

        //EEPROM寫入函數 addr:地址;number:長度;p_buff:寫入數據存放指針
        void eeprom_write(uint addr, uchar number, uchar *p_buff)//此段參考atmage16規格書寫
        {
        EEARH = 0x00;
        while(number--)
        {
        while(EECR&(1< EEARL=addr++;
        EEDR=*p_buff++;
        EECR|=(1< EECR|=(1< }
        }

        //EEPROM讀取函數 addr:地址;number:長度;p_buff:讀出數據存放指針*/
        void eeprom_read(unsigned int addr, unsigned char number, unsigned char *p_buff)//此段參考atmage16規格書寫
        {
        while(EECR&(1< EEARH=0x00;
        while(number--)
        {
        EEARL=addr++;
        EECR|=(1< *p_buff++=EEDR;
        }
        }



        關鍵詞: AVR內部EEPRO

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 胶州市| 扶绥县| 吉安县| 句容市| 尖扎县| 黎川县| 旬邑县| 南靖县| 昆明市| 天水市| 孝感市| 洞口县| 枝江市| 马龙县| 汉寿县| 托克逊县| 肇州县| 家居| 河间市| 图木舒克市| 唐海县| 万荣县| 永川市| 长泰县| 昌吉市| 祥云县| 城固县| 灵丘县| 靖远县| 洪江市| 平定县| 灵宝市| 怀安县| 平度市| 景泰县| 逊克县| 洛宁县| 登封市| 施甸县| 武宣县| 加查县|