AT89C52RC存储数据代码
时间: 2023-12-20 15:28:49 浏览: 87
根据提供的引用内容,AT89C52RC是一种单片机型号,可以使用C语言编写代码来存储数据。同时,可以使用AT24Cxx系列的E2PROM存储器来保存数据。以下是一个简单的AT89C52RC存储数据的代码示例:
```
#include <reg52.h>
#include <intrins.h>
#define SDA P1_0
#define SCL P1_1
void delay_us(unsigned int us)
{
while(us--)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void iic_start()
{
SDA = 1;
SCL = 1;
delay_us(5);
SDA = 0; delay_us(5);
SCL = 0;
}
void iic_stop()
{
SDA = 0;
SCL = 1;
delay_us(5);
SDA = 1;
delay_us(5);
}
void iic_send_byte(unsigned char dat)
{
unsigned char i;
for(i=0; i<8; i++)
{
SDA = dat & 0x80;
SCL = 1;
delay_us(5);
SCL = 0;
dat <<= 1;
}
}
void iic_ack()
{
SDA = 1;
SCL = 1;
delay_us(5);
while(SDA);
SCL = 0;
}
void iic_write(unsigned char addr, unsigned char dat)
{
iic_start();
iic_send_byte(0xa0);
iic_ack();
iic_send_byte(addr);
iic_ack();
iic_send_byte(dat);
iic_ack();
iic_stop();
}
unsigned char iic_read(unsigned char addr)
{
unsigned char dat;
iic_start();
iic_send_byte(0xa0);
iic_ack();
iic_send_byte(addr);
iic_ack();
iic_start();
iic_send_byte(0xa1);
iic_ack();
dat = SDA;
iic_stop();
return dat;
}
void main()
{
unsigned char dat = 0x55;
iic_write(0x00, dat);
dat = iic_read(0x00);
}
```
该代码使用了IIC协议来与AT24Cxx系列的E2PROM存储器进行通信,实现了向指定地址写入数据和从指定地址读取数据的功能。具体实现细节可以参考代码注释和相关资料。
阅读全文