C51与ADS1112的I2C程序如下,请问,为什么总程序运行时,总死在write_ads1110(unsigned char outdat)函数

C51与ADS1112的I2C程序如下,请问,为什么总程序运行时,总死在write_ads1110(unsigned char outdat)函数,第1张

void write_ads1110(unsigned char outdat)

{

start_iic();

send_byte(0x90); // ED0 0x90 ED2 0x94

while(iic_ack(1)); //等待应答 你这里 相当于是while(1) 当然成了死循环

send_byte(outdat);

while(iic_ack(1)); //等待应答

stop_iic();

}

你的iic_ack(i)函数返回的值是一个固定值。这里逻辑不对,检查一下吧。

如果你学单片机的哈,肯定是要学会自己写的,最起码你要能把别人的程序能调通,能通信,而且不同单片机的I2C协议是有部分的不同的,例如有的I2C在接收的时候会发两次,第一次不是数据而是要把它读空,第二次才是数据,如果你用正常的单片机协议肯定就读不到数据了

希望能给你解答:

1、时钟信号都是主机产生的,从机只有一种情况下才能控制时钟线,即在忙的时候,主机还在发送数据,从机会主动把时钟拉低,表示我正在忙,不能收数据。

2、两个主机的话,在发送的时候一定会有一个从属关系,这个需要自己设置。

3、响应:i2c上每传输一个字节,都必须要有响应,方向是从机到主机。

以上就是关于C51与ADS1112的I2C程序如下,请问,为什么总程序运行时,总死在write_ads1110(unsigned char outdat)函数全部的内容,包括:C51与ADS1112的I2C程序如下,请问,为什么总程序运行时,总死在write_ads1110(unsigned char outdat)函数、请问I2C总线的驱动程序 要学会自己写嘛 还是平时写的时候只要复制过来,拿来用就可以 求指教啊!!!、51单片机如何模拟I2C总线中从机接收ID,发送数据的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9995002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存