中颖51单片机eeprom
时间: 2023-07-02 15:05:35 浏览: 156
中颖51单片机的EEPROM可以通过以下代码进行读写:
```
#include <reg52.h>
sbit SDA = P2^0; //定义SDA引脚
sbit SCL = P2^1; //定义SCL引脚
void iicDelay() //IIC总线的延时函数
{
int i=1000;
while(i--);
}
void iicStart() //IIC总线的起始信号
{
SDA=1;
SCL=1;
iicDelay();
SDA=0;
iicDelay();
SCL=0;
}
void iicStop() //IIC总线的停止信号
{
SDA=0;
SCL=1;
iicDelay();
SDA=1;
iicDelay();
}
void iicWriteByte(unsigned char dat) //向EEPROM中写入一个字节
{
unsigned char i;
for(i=0;i<8;i++)
{
SDA=dat&0x80;
dat<<=1;
SCL=1;
iicDelay();
SCL=0;
}
SDA=1;
SCL=1;
iicDelay();
}
unsigned char iicReadByte() //从EEPROM中读取一个字节
{
unsigned char i,dat=0;
SDA=1;
for(i=0;i<8;i++)
{
SCL=1;
iicDelay();
dat<<=1;
dat|=SDA;
SCL=0;
}
return dat;
}
void iicWrite(unsigned char addr,unsigned char dat) //向EEPROM中写入数据
{
iicStart();
iicWriteByte(0xa0);
iicWriteByte(addr);
iicWriteByte(dat);
iicStop();
}
unsigned char iicRead(unsigned char addr) //从EEPROM中读取数据
{
unsigned char dat;
iicStart();
iicWriteByte(0xa0);
iicWriteByte(addr);
iicStart();
iicWriteByte(0xa1);
dat=iicReadByte();
iicStop();
return dat;
}
```
其中,SDA和SCL分别是IIC总线的数据和时钟引脚,iicDelay是延时函数,iicStart和iicStop分别是起始信号和停止信号,iicWriteByte和iicReadByte分别是写入和读取一个字节的函数,iicWrite和iicRead分别是向EEPROM中写入和读取数据的函数。
使用方法如下:
1. 初始化SDA和SCL引脚:
```
SDA=1;
SCL=1;
```
2. 向EEPROM中写入数据:
```
iicWrite(0x00, 0x01); //将0x01写入EEPROM的地址0x00中
```
3. 从EEPROM中读取数据:
```
unsigned char dat = iicRead(0x00); //从EEPROM的地址0x00中读取数据
```
阅读全文