EEPROM的IIC程序问题。无错误、无警告,就是烧到52中不能实现。求解。。。。 5

#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitscl=P2^1;sbitsda=P... #include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit scl=P2^1;
sbit sda=P2^0;
void delay5us()
{;;}
void start()
{
sda=1;delay5us();
scl=1;delay5us();
sda=0;delay5us();
}
void stop()
{
sda=0;delay5us();
scl=1;delay5us();
sda=1;delay5us();
}
void respond()
{
uchar i;
scl=1;delay5us();
while((sda==1)&&(i++<250));
scl=0;delay5us();
}
void wr_b(uchar date)
{
uchar i;
for(i=0;i<8;i++)
{
date<<=1;
sda=CY;delay5us();
scl=1;delay5us();
scl=0;delay5us();
}
}
uchar re_b()
{
uchar i,date;
for(i=0;i<8;i++)
{
scl=1;delay5us();
date=(date<<1)|sda;
scl=0;delay5us();
}
return date;
}
void wr_dat(uchar address,uchar date )
{
start();
wr_b(0xa0);
respond();
wr_b(address);
respond();
wr_b(date);
respond();
stop();
}
uchar re_dat(uchar address)
{
uchar date;
start();
wr_b(0xa0);//
respond();
wr_b(address);
respond();

start();
wr_b(0xa1);
respond();
date=re_b();
respond();
stop();
return date;
}
void dalay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void inti()
{
sda=1;delay5us();
scl=1;delay5us();
}
void main()
{
inti();
wr_dat(23,0xaa);
dalay(200);
P1=re_dat(23);
while(1);
}
展开
 我来答
FASTKILLER66
2013-05-07 · TA获得超过1316个赞
知道小有建树答主
回答量:576
采纳率:0%
帮助的人:426万
展开全部
用示波器看,把波形发来,我帮你分析,首先得确定是MCU的问题还是IIC从设备硬件电路的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灵慕风
2013-05-03 · TA获得超过446个赞
知道小有建树答主
回答量:315
采纳率:100%
帮助的人:220万
展开全部
最好自己调试下,用示波器看看P2^1和P2^0这两个管脚上的信号是否跟你想的一致呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式