您的位置 首页 元件

读写EEPROM(使用数码管调查)

#includeiom16v.h>#includemacros.h>#defineucharunsignedchar#defineuintunsignedint#defineON_138P

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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/264397.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部