新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 讀寫EEPROM(利用數碼管觀察)

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

作者: 時間:2016-11-20 來源:網絡 收藏
#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};//存放待顯示的數據的段碼

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

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

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

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;
}
}

//函數名;delay_ms
//輸入:無
//輸出:無
//描述:延時1ms

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

//函數名;Read_Eeprom
//輸入:EEPROM的地址add--[0--512],讀EEPROM的大小size[0--512],讀出的數據存放緩沖區(qū)P_buf
//輸出:無
//描述:讀EEPROM指定地址開始的指定大小的存儲區(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;
}
}

//函數名;Write_Eepro
//輸入:EEPROM的地址add--[0--512],寫EEPROM的大小size[0--512],待寫數據的緩沖區(qū)P_buf
//輸出:無
//描述:寫EEPROM指定地址開始的指定大小的存儲區(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);
}
}


關鍵詞: 讀寫EEPROM數碼

評論


技術專區(qū)

關閉