PIC16F877A单片机的EEPROM读写

本文介绍了一个简单的16F877A单片机程序,演示了如何将一个字符写入EEPROM指定地址,并从该地址读取数据以验证读写功能的正确性。如果读取的数据与写入的数据一致,则通过点亮LED灯来指示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写一个例程来说明比较好理解,

本例程的功能是将一个0x66的字符放在0x15的EEPROM中,然后在读取,如果读取成功就点亮LED灯

#include<pic.h>

//调用头文件,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 = 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;//返回读取的数据

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值