📄 eeprom.c
字号:
#include <REG52.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
sfr WMCON = 0x96; /* Watchdog and Memory Control Register */
#define eeprom_free() ((WMCON&0x02) == 0x02)
//=================================
//函数功能:对EEPROM进行写操作
//入口参数:Address--目标的首地址,
// source--源数据首地址,
// Number--待写入的字节个数。
//=================================
void WriteUserBlock(uint Address,uchar idata *source,uchar Number)
{
uchar i = 0;
if (Number == 0) return;
EA = 0;
while(*source)
{
if(i>=(Number-1)) break;
WMCON |= 0x18; //Enable write data to eeprom
XBYTE[Address + i] = *source;
i ++;
source ++;
while (!eeprom_free());
WMCON &=~ 0x18; //Disable access data from eeprom
}
WMCON |= 0x18; //Enable write data to eeprom
XBYTE[Address + i] = 0;
while (!eeprom_free());
WMCON &=~ 0x18; //Disable access data from eeprom
EA = 1;
}
//=================================
//函数功能:对EEPROM进行读操作,从Address开始,读Number个字节。
//入口参数:input--目标的首地址,
// Address--EEPROM中源数据首地址,
// Number--待写入的字节个数。
//=================================
void ReadUserBlock(uchar idata *input,uint Address,uchar Number)
{
uchar i = 0;
uchar tempchar;
if (Number == 0) return;
EA = 0;
WMCON |= 0x08; //Enable access data to eeprom
while(1)
{
tempchar = XBYTE[Address +i];
if(tempchar)
{
if(i >=(Number-1)) break;
*input = tempchar;
input ++;
i ++;
}
else break;
}
WMCON &=~ 0x08; //Disable access data to eeprom
*input = 0;
EA = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -