打印

IIC通信的问题

[复制链接]
3518|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
程序会不会|  楼主 | 2011-10-17 12:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了一个IIC通信的程序 遇到点问题
void main()
{
uchar temp;   
sda=1;
delay_24c08();
  scl=1;
  delay_24c08();
  write_byte_24c08(0,0xc0);
  delay1(5);
while(1)
  {     
  P2=0x00;
   delay_24c08();     
  temp=read_byte_24c08(0);   
  P0=temp;
  delay_24c08();
  P2=0xff;  
  delay_24c08();
   }
  } 把while循环 放在以上这段程序的位置,能正常的读写,数码管能正常显示数。
可是当我把while循环放下下面这段程序后 读写就不正常了
void main()
{
while(1)
{
uchar temp;   
sda=1;
delay_24c08();
  scl=1;
  delay_24c08();
  write_byte_24c08(0,0xc0);
  delay1(5);   
  P2=0x00;
   delay_24c08();     
  temp=read_byte_24c08(0);   
  P0=temp;
  delay_24c08();
  P2=0xff;  
  delay_24c08();
   }
  }
不知道什么,求解。

相关帖子

沙发
hotpower| | 2011-10-17 19:22 | 只看该作者
本帖最后由 hotpower 于 2011-10-20 03:22 编辑

哈哈,又是51模拟iic,太落伍了。

下面是HotISP V2.65B
腾讯微群(入群密码:250):
http://t.qq.com/download.php?fkey=/7b99e7fa-46b7-4842-8998-ffad25ff7076&qid=78184763&ftype=2

新浪微群(入群密码:250):
http://q.weibo.com/316539/file/13960456

需要PK的拿BIN或HEX转成汇编的A51文件~~~

disasm51是俺20年前的构思,俺认为还不落伍。
若俺被PK了,俺会改进算法继续PPKK~~~

HotISP内嵌的超级反汇编disasm51.exe(V5.08)是一个控制台程序。
它可以独立运行,也可以被任何采用控制台回显技术的软件调用。

例如:
disasm51.exe a51demo
disasm51.exe a51demo.bin
disasm51.exe a51demo.bin a51demo
disasm51.exe a51demo.bin a51demo.a51
disasm51.exe a51demo.bin a51demo.asm

使用特权

评论回复
板凳
dqyubsh| | 2011-10-17 19:59 | 只看该作者
确实不支持再用软件模拟IIC,如果系统中有10个IIC外设,我真担心IIC会死那。实际上,我的一个系统就是这个样子,几块板用IIC通讯,目前尚未联调,软件模拟的方案我是万万不敢采用的。

使用特权

评论回复
地板
NE5532| | 2011-10-17 20:19 | 只看该作者
别给楼上的吓着,模拟个I2C很正常,比如SPI和I2C在同一组物理引脚上的,又要照顾SPI上的高速设备,总不能用硬I2C,软SPI吧。楼主的问题在于自己不会调程序,看偶的精华帖里。

使用特权

评论回复
5
dqyubsh| | 2011-10-17 21:04 | 只看该作者
呵呵,我不想和楼上的抬杠,确实不了解还有这样的单片机,即便有,我也会回避这样的用法。

相同的管脚实现两个功能,来来回回的切换感觉很穿越。真是省到了骨头~

使用特权

评论回复
6
weizheng07| | 2011-10-18 10:38 | 只看该作者
说模拟i2c是落伍,这个不敢苟同,我已知的很多设计当中,很少使用集成的i2c功能,其实大家都知道使用模块确实省资源,那么pcb呢,就的考虑要把那个i2c的芯片放置就固定在某个固定的场所了,总体设计上就会出现不合理,另外一点就是软件资源是省了,可也不方便大家看代码资源了,以前用过,比较可恨,出问题都不知道出在哪里,io口仿,很多问题都不存在了,硬件随便搞两个io,软件设计也不见得多几句话.
个人见解,不喜勿喷

使用特权

评论回复
7
weizheng07| | 2011-10-18 10:42 | 只看该作者
write_byte_24c08(0,0xc0);
这句话是连续读吧?你循环放置的位置将整个程序就打乱了,既然是连续读的命令,你还搞个每次读一个,另外就是while(1)中很少定义个变量阿!

使用特权

评论回复
8
ayb_ice| | 2011-10-18 11:01 | 只看该作者
确实不支持再用软件模拟IIC,如果系统中有10个IIC外设,我真担心IIC会死那。实际上,我的一个系统就是这个样子,几块板用IIC通讯,目前尚未联调,软件模拟的方案我是万万不敢采用的。 ...
dqyubsh 发表于 2011-10-17 19:59

这和模拟IIC有什么关系,你用硬件就不会死机吗
这是程序本身的问题
只要不是多主IIC通信,模拟比硬件不差

一个通信程序会造成死机,只能说明架构烂,水平烂,不能说明其它问题
程序中通信可以有时不正常,但绝不能死机,这是基本需求

使用特权

评论回复
9
来与君| | 2011-10-18 11:06 | 只看该作者
楼上几位真能歪楼

楼主不如说一下你把while放在不同的地方是出于什么考虑。

程序不是想怎么写就怎么写,你想它做什么。

使用特权

评论回复
10
NE5532| | 2011-10-18 19:04 | 只看该作者
楼上几位真能歪楼

楼主不如说一下你把while放在不同的地方是出于什么考虑。

程序不是想怎么写就怎么写,你想它做什么。
来与君 发表于 2011-10-18 11:06


说明楼主就不懂如何写程序,我前面说了。

使用特权

评论回复
11
程序会不会|  楼主 | 2011-10-18 22:41 | 只看该作者
恩恩 是 努力学习中 11# NE5532

使用特权

评论回复
12
hotpower| | 2011-10-20 03:22 | 只看该作者
园地里有很多例程~~~

下面是HotISP V2.65B
腾讯微群(入群密码:250):
http://t.qq.com/download.php?fkey=/7b99e7fa-46b7-4842-8998-ffad25ff7076&qid=78184763&ftype=2

新浪微群(入群密码:250):
http://q.weibo.com/316539/file/13960456

需要PK的拿BIN或HEX转成汇编的A51文件~~~

disasm51是俺20年前的构思,俺认为还不落伍。
若俺被PK了,俺会改进算法继续PPKK~~~

HotISP内嵌的超级反汇编disasm51.exe(V5.08)是一个控制台程序。
它可以独立运行,也可以被任何采用控制台回显技术的软件调用。

例如:
disasm51.exe a51demo
disasm51.exe a51demo.bin
disasm51.exe a51demo.bin a51demo
disasm51.exe a51demo.bin a51demo.a51
disasm51.exe a51demo.bin a51demo.asm

使用特权

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

本版积分规则

46

主题

443

帖子

5

粉丝