51单片机eeprom读写程序
时间: 2023-08-12 17:04:01 浏览: 143
以下是51单片机EEPROM读写程序的示例代码,假设要将一个变量存储在EEPROM的地址0x10处:
```c
#include <reg52.h>
#define EEPROM_ADDR 0x10 // EEPROM地址
// 从EEPROM读取一个字节
unsigned char EEPROM_read(unsigned char addr)
{
unsigned char val;
EA = 0; // 关中断
IAP_CONTR = 0x81; // 设置读操作
IAP_ADDRH = 0x00; // 设置地址高字节
IAP_ADDRL = addr; // 设置地址低字节
_nop_(); // 等待操作完成
val = IAP_DATA; // 读取数据
EA = 1; // 开中断
return val;
}
// 写一个字节到EEPROM
void EEPROM_write(unsigned char addr, unsigned char val)
{
EA = 0; // 关中断
IAP_CONTR = 0x81; // 设置写操作
IAP_ADDRH = 0x00; // 设置地址高字节
IAP_ADDRL = addr; // 设置地址低字节
IAP_DATA = val; // 设置要写入的数据
_nop_(); // 等待操作完成
_nop_();
IAP_TRIG = 0x5a; // 启动写操作
_nop_(); // 等待操作完成
EA = 1; // 开中断
}
void main()
{
unsigned char val = 0x55;
EEPROM_write(EEPROM_ADDR, val); // 将0x55写入EEPROM
val = EEPROM_read(EEPROM_ADDR); // 从EEPROM读取数据
while (1); // 停止程序运行
}
```
在这个示例中,`EEPROM_read()`函数用于从EEPROM中读取一个字节,`EEPROM_write()`函数用于将一个字节写入EEPROM中。在这两个函数中,使用了IAP(In-Application Programming)指令来进行EEPROM的读写操作。在进行读写操作之前,需要关闭中断,以防止对操作的干扰。操作完成后,再开启中断。
在`main()`函数中,首先将0x55写入EEPROM,然后从EEPROM中读取数据,并将结果存储在`val`变量中。最后,程序进入一个无限循环,以停止程序的运行。
阅读全文