2756|3

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

我的IIC程序怎么错了? [复制链接]

我刚学C好多语法不懂~~
我自己写了个一次全读完24C08的程序:
我作了如下定义:
#define uint unsigned int
#define uchar unsigned char
uchar read(uchar page,uchar address);
    uchar p[4],i,c,ii;
    uint iii;
然后我写了这样的代码:
                for (ii=0;ii <4;ii++)
                {
                for (iii=0;iii <256;iii++)
                {
c=read(ii,iii);

                }
                }
其中uchar x24c08_read(uchar page,uchar address)
{
    uchar i,p;
    p=page < <1;
    p=p|0xa0;
    start();
    writex(p);
    clock();
    writex(address);
    clock();
    start();
    p=page < <1;
    p=p|0xa1;
    writex(p);
    clock();
    i=readx();
    stop();
    delay1(10);
    return(i);
}
它只执行到ii=0,iii=255就不动了(也就是C只读了256个数),为什么? 不会只应为iii定义错了吧?

最新回复

上面还说错了,0xa1是表示“读”器件这个地址。。。  详情 回复 发表于 2008-10-20 13:06
点赞 关注

回复
举报

87

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不知你的writex()是怎么实现的? 但提醒你,不知你这句p=p|0xa1对不对,内部地址应该是0xA0,0xA2..
 
 

回复

78

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
引用 1 楼 zyzhang365 的回复:
不知你的writex()是怎么实现的? 但提醒你,不知你这句p=p|0xa1对不对,内部地址应该是0xA0,0xA2..

谢谢提醒,不过我这个0xa1不是PC地址,是24c08器件的地址,如果没有那两个for 循环我执行下来完全正确,即使有了那二个for 循环,我开始用的 uchar iii;做下来也行的,只不过会永远执行read操作不会跳出for循环(因为256超出uchar了),于是我就把iii改为uint,结果它会停了,但却停过头了,才执行了1/4就止住了。。。

高手帮帮我。。。。。。。。。。。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
上面还说错了,0xa1是表示“读”器件这个地址。。。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表