在向EEPROM 24c02 写数据时出现一个怪事,向一个地址写入偶数如:2、4、6...,可以写入,并且可以读出,但是写入奇数如:1、3、5...,则不能写入,读出的数还是以前的数据,不知为啥,请高手解答,谢谢!!!!
程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit scl=P2^1;
sbit sda=P2^0;
void delay()
{;;}
void delay_ms(uint j)
{
uint i;
for(j;j>0;j--)
for(i=110;i>0;i--);
}
void IIC_init() //IIC初始化
{
scl=1;
sda=1;
}
void IIC_start() //IIC开始信号
{
scl=1;
sda=1;
delay();
sda=0;
delay();
}
void IIC_stop() //IIC终止
{
scl=1;
sda=0;
delay();
sda=1;
delay();
}
void IIC_check() //查看IIC器件是否应答
{
scl=1;
delay();
while(sda);
delay();
scl=0;
}
void IIC_w_bite(uchar bite) //向IIC器件写1比特数据
{
uchar i;
for(i=8;i>0;i--)
{
scl=0;
delay();
bite=bite<<1;
sda=CY;
delay();
scl=1;
delay();
scl=0;
}
}
uchar IIC_r_bite() //读取IIC器件1比特数据
{
uchar i,dd;
for(i=8;i>0;i--)
{
scl=1;
delay();
dd=dd<<1|sda;
delay();
scl=0;
delay();
}
return dd;
}
void main()
{
IIC_init();
IIC_start();
IIC_w_bite(0xa0); //寻址并发送给IIC器件准备写数据
IIC_check(); //应答
IIC_w_bite(0x1); //发送存储器存储地址
IIC_check();
IIC_w_bite(0x2); //发送要给IIC器写入的数据
IIC_check();
IIC_stop();
delay_ms(5);
IIC_start();
IIC_w_bite(0xa0); //寻址并发送给IIC器件准备写数据
IIC_check(); //应答
IIC_w_bite(0x1); //发送存储器存储地址
IIC_check();
IIC_start();
IIC_w_bite(0xa1); //发送信息给IIC准备读数据
IIC_check();
P1=IIC_r_bite(); //读数据到P1口
IIC_stop();
while(1);
}
共2条
1/1 1 跳转至页
WHY?EEPROM存储器24c02只能写入偶地址,奇地址异常。

关键词: EEPROM 24c02 存储器

或许以下信息对楼主有帮助:
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。
共2条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K146】S32DS RTD 驱动环境搭建被打赏12分 | |
【分享开发笔记,赚取电动螺丝刀】【IAR】libc标注库time相关库函数使用被打赏23分 |