我访问了一些链接,并寻找一些I2C编程的示例程序。我想为I2C协议编写自己的代码。假设DS1307 RTC和LCD连接到8051。我正在使用Keil软件编写一个C程序。我很难为我编写完整的I2C程序,所以我试着把程序分成几个小部分:
我理解模块1,但我正在寻找帮助理解模块2。所以,我再次希望打破模块2的小部分。
如何将模块2分解成小部件以便于理解?module2中应该有多少个函数?
发布于 2017-07-27 00:53:50
模块2本质上是使用8051端口的位敲击的I2C驱动程序。I2C协议遵循顺序。它由开始序列启动,由停止序列停止。你可以有不同的功能。通信由主程序启动,每个从站都有一个地址。因此,在module2中,您将编写以下所有函数。
例如,I2读取序列如下
I2C_Start(); // set I2C start sequence
I2C_Send(slave_address|1); Send I2C slave address in read mode
I2C_read_ACK(); //master will know slave got data
while(number_of bytes){
I2C_Read();
I2C_send_ACK();
number_of bytes--;
}
I2C_NAK(); //slave need to know so it will not prepare next data.
I2C_Stop(); //stop communication同样,写入从服务器将有以下步骤
I2C_Start(); // set I2C start sequence
I2C_Send(slave_address); Send I2C slave address in write mode
I2C_read_ACK(); //master will know slave got data
while(number_of bytes){
I2C_Write();
I2C_read_ACK(); //master will know slave got data
number_of bytes--;
}
I2C_Stop(); //stop communication我还在https://circuitdigest.com/microcontroller-projects/digital-clock-using-8051-microcontroller看到了司机
官方的I2C协议在这里
https://stackoverflow.com/questions/45317599
复制相似问题