新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)內(nèi)部EEPROM方法

        AVR單片機(jī)內(nèi)部EEPROM方法

        作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏
        /**************************************************************

        ;eeprom.c 在AVR單片機(jī)中可以用在ATMEGA16和ATMEGA8中都可以用,在GCC下
        ;編譯通過(guò)。09年11月1號(hào)! 陳永飛已測(cè)試過(guò)!
        ;讀/寫(xiě)atmega8515內(nèi)部EEPROM的例子
        ;將數(shù)據(jù)0....9寫(xiě)入eeprom中,再讀出用數(shù)碼管顯示出來(lái)
        ***************************************************************/

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

        #include <avr/io.h>
        #include
        #define uchar unsigned char
        #define uint unsigned int
        #define Hidden 16

        uchar DispTab[17]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
        uchar BitTab[6]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};
        uchar DispBuf[6]; //顯示緩沖區(qū)

        unsigned char Counter=0;

        void io_init(void)
        {
        // PortA
        PORTA = 0xff;
        DDRA = 0xff;
        // PortB
        PORTB = 0x0;
        DDRB = 0x0;
        // PortC
        PORTC = 0xfc;
        DDRC = 0xfc;
        // PortD
        PORTD = 0x0;
        DDRD = 0x0;
        }

        void mDelay(uint DelayTim)
        {
        uint i;
        for(;DelayTim>0;DelayTim--)
        {
        for(i=0;i<600;i++)
        {;}
        }
        }

        void disp()
        {
        uchar i;
        uchar tmp;
        if(++i>=6)
        i=0;
        PORTC=0xff; //關(guān)閉顯示
        tmp=DispBuf[i];
        PORTA=DispTab[tmp];
        tmp=BitTab[i];
        PORTC=tmp;
        mDelay(1); //延時(shí)1ms
        }

        int main(void)
        {
        unsigned int Count=0;
        unsigned char Addr=1; //向地址1里面寫(xiě)數(shù)字
        uint8_t temp=0;
        io_init();
        DispBuf[0]=Hidden;
        DispBuf[1]=Hidden;
        DispBuf[2]=Hidden;
        DispBuf[3]=Hidden;
        DispBuf[4]=0; //次低位顯示0
        while(1)
        {
        temp=eeprom_read_byte (Addr);
        DispBuf[5]=temp;
        if(++Count==1000)
        {
        Count=0;
        Counter++;
        eeprom_write_byte(Addr,Counter);
        }
        if(Counter>=10)
        Counter=0; //計(jì)數(shù)值在0~9之間循環(huán)
        disp(); //調(diào)用顯示程序
        }
        }



        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 中方县| 东明县| 腾冲县| 桓台县| 新田县| 绍兴市| 民乐县| 汾阳市| 余庆县| 隆尧县| 和平县| 隆安县| 镇雄县| 南丹县| 黄冈市| 大悟县| 衢州市| 莱西市| 修水县| 新乡市| 长乐市| 三河市| 佛学| 共和县| 宝兴县| 将乐县| 江都市| 皋兰县| 奉节县| 漠河县| 扶风县| 瑞金市| 泾川县| 罗定市| 定远县| 钦州市| 永年县| 永修县| 平江县| 宜君县| 彩票|