新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 讀寫EEPROM(利用數(shù)碼管觀察)

        讀寫EEPROM(利用數(shù)碼管觀察)

        作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
        #include
        #include

        #define uchar unsigned char
        #define uint unsigned int
        #define ON_138 PORTC|=BIT(PC7) //使能74138
        #define OFF_138 PORTC&=~BIT(PC7)

        const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示的段碼值
        uchar buffer[]={0,0,0};//存放待顯示的數(shù)據(jù)的段碼

        //函數(shù)名;Send_Buffer
        //輸入:待數(shù)碼管顯示的數(shù)據(jù)
        //輸出:無
        //描述:將顯示的數(shù)據(jù)譯碼

        void Send_Buffer(uchar data)
        {
        buffer[0]=table[data/100];
        data=data0;
        buffer[1]=table[data/10];
        data=data;
        buffer[2]=table[data];
        }

        //函數(shù)名;Display
        //輸入:待顯示的位置和段碼值,site--[0,2]
        //輸出:無
        //描述:在指定位置顯示指定數(shù)據(jù)

        void Display(uchar site,uchar data)
        {
        if(site==0)
        {
        PORTA=0X00;
        PORTB=data;
        }
        if(site==1)
        {
        PORTA=0X01;
        PORTB=data;
        }
        if(site==2)
        {
        PORTA=0X02;
        PORTB=data;
        }
        }

        //函數(shù)名;delay_ms
        //輸入:無
        //輸出:無
        //描述:延時(shí)1ms

        void delay_ms(uint ms)
        {
        uint i,j;
        for(i=0;i for(j=0;j<564;j++);
        }

        //函數(shù)名;Read_Eeprom
        //輸入:EEPROM的地址add--[0--512],讀EEPROM的大小size[0--512],讀出的數(shù)據(jù)存放緩沖區(qū)P_buf
        //輸出:無
        //描述:讀EEPROM指定地址開始的指定大小的存儲(chǔ)區(qū)域

        void Read_Eeprom(uint add,uchar size,uchar *P_buf)
        {
        while(size--)
        {
        while(EECR&=BIT(EEWE));
        EEAR=add++;
        EECR|=BIT(EERE);
        *P_buf++=EEDR;
        }
        }

        //函數(shù)名;Write_Eepro
        //輸入:EEPROM的地址add--[0--512],寫EEPROM的大小size[0--512],待寫數(shù)據(jù)的緩沖區(qū)P_buf
        //輸出:無
        //描述:寫EEPROM指定地址開始的指定大小的存儲(chǔ)區(qū)域

        void Write_Eeprom(uint add,uchar size,uchar *P_buf)
        {
        while(size--)
        {
        while(EECR&=BIT(EEWE));
        EEAR=add++;
        EEDR=*P_buf++;
        EECR|=BIT(EEMWE);
        EECR|=BIT(EEWE);
        }
        }

        void main(void)
        {
        uchar temp[1];
        DDRA=0XFF;
        PORTA=0X00;
        DDRB=0XFF;
        PORTB=0X00;
        DDRC=0XFF;
        PORTC=0X00;
        ON_138;
        Read_Eeprom(0x0001,1,temp);
        Send_Buffer(temp[0]);
        temp[0]++;
        Write_Eeprom(0x0001,1,temp);
        while(1)
        {
        Display(0,buffer[0]);
        delay_ms(3);
        Display(1,buffer[1]);
        delay_ms(3);
        Display(2,buffer[2]);
        delay_ms(3);
        }
        }


        關(guān)鍵詞: 讀寫EEPROM數(shù)碼

        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 汉源县| 龙泉市| 理塘县| 天水市| 临高县| 本溪市| 安平县| 大竹县| 曲松县| 双辽市| 安福县| 舟山市| 靖江市| 谷城县| 鲁山县| 合川市| 永州市| 蛟河市| 定边县| 涪陵区| 屯留县| 镇巴县| 安吉县| 邢台市| 长沙市| 望江县| 民丰县| 黄梅县| 陕西省| 五原县| 水城县| 深泽县| 莱州市| 广元市| 新龙县| 思茅市| 中西区| 吉木乃县| 松原市| 聊城市| 莲花县|