嵌入式|PIC16F877A单片机的EEPROM读写

编写一个例程来说明比较好理解,
本例程的功能是将一个0x66的字符放在0x15的EEPROM中,然后在读取,如果读取成功就点亮LED灯
#include
//调用头文件,16F877A单片机
__CONFIG(0xFF32);
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡
#define L0 RD0 //定义L0为RD0端口


char buf; //读写数据的储存空间
void WriteEE(char addr,char data); //EEPROM写函数
char ReadEE(char addr); //EEPROM读函数
//主程序
void main()
{
TRISD=0B00000000; //0X00;
PORTD=0B00000000; //0x00;
WriteEE(0x15,0x66); //将0x66写入0x15地址的EEROM中
buf = ReadEE(0x15); //将0x15地址中的数据读出,并将他放到BUF中
while(1)
{//判断buf中的数据是否为写入的数据,如果是0x66,证明读写功能成功
if(buf == 0x66){
L0=1;
}
}


}
//EEPROM写数据函数
void WriteEE(char addr,char data)
{
do{}
while(WR == 1); //等待写完成
EEADR = addr; //写入地址信息
EEDATA = https://www.it610.com/article/data; //写入数据信息
EEPGD = 0; //操作EEPROM
WREN = 1; //写EEPROM允许
EECON2 = 0x55; //写入特定时序
EECON2 = 0xaa;
WR = 1; //执行写操作
do{}
while(WR == 1); //等待写完成
WREN = 0; //禁止写入EEPROM
}
//EEPROM读数据函数
char ReadEE(char addr)
{
char num;
do{}
while(RD == 1); //等待读完成
EEADR = addr; //写入要读的址址
EEPGD = 0; //操作EEPROM
RD = 1; //执行读操作
do{}
while(RD == 1); //等待读完成
num = EEDATA;
return num; //返回读取的数据
}
【嵌入式|PIC16F877A单片机的EEPROM读写】嵌入式|PIC16F877A单片机的EEPROM读写
文章图片


    推荐阅读