打印

关于24C02的奇怪现象

[复制链接]
1875|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jasonny|  楼主 | 2008-9-25 14:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
遇到一个奇怪的问题,想问一下
void main(void) // 主程序
{
uchar c1,c2;
while(1)
{
c1=Read24c02(0x01); //读出24c02第一个地址数据
P1=c1; //显示在P1口的4个LED上
if(!K1) //按键处理
{
c1++; //值加1
Write24c02(c1,0x01); //重新写入24c02     (把++后的C1还存到0x01地址单元)
while(!K1); //等待按键松开
for(c2=0;c2<250;c2++); //松开按键去抖
}
}
}
程序每次到这地方(c1=Read24c02(0x01);),就不在向下执行了,只要把它去掉,后面的程序就可以执行了,奇怪啊,它本身是一个24C02的读程序啊,把读出的值给c1啊,也没错啊,怎么到那就不向下执行了呢?

相关帖子

沙发
qjy_dali| | 2008-9-25 14:42 | 只看该作者

应该是那个函数太差,在里面loop了呗

使用特权

评论回复
板凳
gjg191| | 2008-9-25 14:56 | 只看该作者

o

没什么奇怪的,不是程序有问题就是02没反应

使用特权

评论回复
地板
hotpower| | 2008-9-25 15:02 | 只看该作者

鬼才知道Read24c02()内是什么~~

使用特权

评论回复
5
twz8858877| | 2008-9-25 15:03 | 只看该作者

i2c读写都需要ack信号

应该是ack信号没用响应,如果是仿真运行,没有手动干扰,是没办法执行的

使用特权

评论回复
6
qjy_dali| | 2008-9-25 15:09 | 只看该作者

可能之一是在那个函数里就一句while(1),哈哈

使用特权

评论回复
7
jasonny|  楼主 | 2008-9-25 17:34 | 只看该作者

谢谢回复

谢谢回复,问题已经解决了,是读函数的问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

56

帖子

0

粉丝