在向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);
}
共6条
1/1 1 跳转至页
WHY?EEPROM存储器24c02只能写入偶地址,奇地址异常。
关键词: EEPROM 24c02 存储器
或许以下信息对楼主有帮助:
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。
共6条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |