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,发送数据的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)