引用: maychang 发表于 2020-7-26 20:35 列夫·托尔斯泰著长篇小说《安娜·卡列尼娜》,第二句是 ”不幸的家庭各有各的不幸&ldquo ...
NB
引用: dcexpert 发表于 2020-7-26 20:59 楼主最近有不少问题,是没有掌握正确的学习方法吧。 看代码应该是一个软件I2C的程序。
是IIC的代码
引用: lcofjp 发表于 2020-7-27 16:43 目的就是实现特定的功能。
版主。你不能那样回复,你是版主不能回复得不专业
引用: maychang 发表于 2020-7-26 20:35 列夫·托尔斯泰著长篇小说《安娜·卡列尼娜》,第二句是 ”不幸的家庭各有各的不幸&ldquo ...
maychang老湿堪称大师。哈哈!我的意思就是不知道这个应答信号里面的循环搞得很不好理解
第一个图前面一条语句是右移,然后把CY位赋值给sda,前面应该定义sda为一个位变量,CY的定义在头文件里有,是特殊功能寄存器的一个位,移位后就是符号位。
第二个图右移以后把sda放在最低位,因为sda是位变量不能直接做|运算,所以先赋值给j
第三个图我也没看明白uchar类型的i 只有一种情况会判断 i<255 为假就是i=255,。。。弄啥就不清楚了。
引用: QWE4562009 发表于 2020-7-27 18:24 maychang老湿堪称大师。哈哈!我的意思就是不知道这个应答信号里面的循环搞得很不好理解
单片机外部设备中有一类使用IIC总线。典型的器件有24C02等等。下面是24CXX芯片引脚图。
引用: QWE4562009 发表于 2020-7-27 18:24 maychang老湿堪称大师。哈哈!我的意思就是不知道这个应答信号里面的循环搞得很不好理解
这些芯片是串行存储器。既然是存储器,那必定有写操作、读操作,而且必须告诉存储器芯片你要写哪个地址或者读哪个地址的数据。写操作又有写单个字节和写一页的两种操作。读也有读当前地址的一个字节和顺序读多个字节的两种操作。此外还有 “开始” 和 “结束” 操作。
QWE4562009 发表于 2020-7-27 18:24 maychang老湿堪称大师。哈哈!我的意思就是不知道这个应答信号里面的循环搞得很不好理解
此图显示了 “开始” 和 “结束” 波形。注意SDA是在SCL高电平时下降即为 “开始” ,SDA在SCL低电平时上升即为 “结束”。
17:22改正。
本帖最后由 maychang 于 2020-7-28 17:22 编辑引用: QWE4562009 发表于 2020-7-27 18:24 maychang老湿堪称大师。哈哈!我的意思就是不知道这个应答信号里面的循环搞得很不好理解
下面图形显示了从当前地址顺序读的时序。
引用: QWE4562009 发表于 2020-7-27 18:24 maychang老湿堪称大师。哈哈!我的意思就是不知道这个应答信号里面的循环搞得很不好理解
可见读、写地址和数据的操作相当复杂。不掌握该芯片所要求的时序,根本无法理解对该芯片读、写、开始、结束的操作。而这些操作,其实都是为了读写该芯片中的数据。
所以,在5楼lcofjp说得很对:“目的就是实现特定的功能”。
引用: huo_hu 发表于 2020-7-28 02:04 第一个图前面一条语句是右移,然后把CY位赋值给sda,前面应该定义sda为一个位变量,CY的定义在头文件里有, ...
移位后就是符号位啥意思?
右移以后把sda放在最低位----------此时一个数据是怎样的?0000 0001?
引用: QWE4562009 发表于 2020-7-28 15:01 移位后就是符号位啥意思? 右移以后把sda放在最低位----------此时一个数据是怎样的?0000 0001?
“移位后就是符号位啥意思?”
第7位移到第6位,第6位移到第5位……第0位移到CY位(即符号位)。
引用: QWE4562009 发表于 2020-7-28 15:01 移位后就是符号位啥意思? 右移以后把sda放在最低位----------此时一个数据是怎样的?0000 0001?
“右移以后把sda放在最低位”
还不行。右移之后,第0位移动到了CY位,所以还需要将CY位的值赋予sda。
引用: QWE4562009 发表于 2020-7-28 15:01 移位后就是符号位啥意思? 右移以后把sda放在最低位----------此时一个数据是怎样的?0000 0001?
“此时一个数据是怎样的?0000 0001?”
IIC总线上这个外部设备接受到的这个字节,其它位我们不知道,只知道即将发送的这一位等于CY中的值。
引用: maychang 发表于 2020-7-28 12:41 此图显示了 “开始” 和 “结束” 波形。注意SDA是在SCL高电平时上升即为 “开 ...
这个我记错了吗 ??? SCL高电平时 SDA下降为开始信号。。。。