微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 读写EEPROM(利用数码管观察)

读写EEPROM(利用数码管观察)

时间: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],读出的数据存放缓冲区P_buf
//输出:无
//描述:读EEPROM指定地址开始的指定大小的存储区域

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],待写数据的缓冲区P_buf
//输出:无
//描述:写EEPROM指定地址开始的指定大小的存储区域

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top