proteus教程——读写AT24C02

本文详细介绍了在Proteus环境下80C51单片机对AT24C02进行读写操作时的延时问题,特别是页写缓冲的必要延时。内容涵盖了IIC操作的基本步骤,包括写操作和读操作的实现,以及完整的主程序和电路图。最后,作者以轻松的方式进行了总结。
摘要由CSDN通过智能技术生成

1.延时问题

有些教材和技术资料对IIC基本信号的脉宽和延时有一定的时间要求,在上述基本信号和数据传送子函数中加入了若干延时操作指令;另一些教材和技术资料则无此要求。经编者实验验证,80 C51单片机在fosc=12 MHz条件下,基本信号子函数和单字节读写子函数中的波形延时指令可以略去
但写N字节子函数中必须有页写缓冲延时,否则,写后若立即读AT24C02,将失败。
有关AT24Cxx页写缓冲的概念说明如下:
由于E⁹PROM的半导体工艺特性,对E²PROM的写入时间需要5~10ms,但AT24Cxx系列串行E*PROM芯片内部设置了一个具有SRAM性质的输入缓冲器,称为页写缓冲器。CPU对该芯片写操作时,AT24Cxx系列芯片先将CPU输入的数据暂存在页写缓冲器内,然后,慢慢写入E²PROM中。因此,CPU对AT24Cxx系列E’PROM一次写入的字节数,受到该芯片页写缓冲器容量的限制。页写缓冲器的容量为16B,若CPU写入字节数超过芯片页写缓冲器容量,应在一页写完后,隔5~10 ms重新启动一次写操作

IIC操作

//delayms:
void delayms(uint xms)
{
   
 uchar x, y;
 for(x = xms; x > 0; x--)
   for(y = 110; y > 0; y--);
}
//start:
void start() //启动i2c
{
   
 sda = 1;
 scl = 1;
 delay();//延时必须大于4.7us,此约为五微秒
 sda = 0; //在scl为高电平时,sda一个下降沿为启动信号
 delay();
}
//stop:
void stop() //停止i2c
{
   
 sda = 0;
 scl = 1;
 delay();
 sda = 1; //在scl为高电平时,sdasda一个上升沿为停止信号
 delay();
}
//ack:
void ack() //应答信号0
{
   
 uchar i = 0; //等待变量
 scl = 1;//在scl为高电平期间等待应答
 delay();
 while((sda == 1) && i < 250)
  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值