找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5250|回复: 24
打印 上一主题 下一主题
收起左侧

这三条C语言赋值语句的目的是干什么?

[复制链接]
跳转到指定楼层
楼主
这三条赋值语句的目的是干什么?

51hei图片20200726174208.png (287.56 KB, 下载次数: 64)

51hei图片20200726174208.png

51hei图片20200726174217.png (395.45 KB, 下载次数: 64)

51hei图片20200726174217.png

51hei图片20200726174202.png (275.3 KB, 下载次数: 65)

51hei图片20200726174202.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:808263 发表于 2020-7-26 21:08 | 只看该作者
位运算 左移
回复

使用道具 举报

板凳
ID:67199 发表于 2020-7-26 21:40 | 只看该作者
这个应是模拟I2C总线传输数据流程,可以参考I2C总线传输协议。第一图SDA拉高延时,第二图发送一位数据,第三图接收一位数据后,与K合并,完成一字节的接收。
回复

使用道具 举报

地板
ID:99174 发表于 2020-7-26 22:31 | 只看该作者
本帖最后由 windows100 于 2020-7-26 22:37 编辑

第一张图是说,SDA为高则总线不忙退出,或者程序自加(起延时作用)溢出。第二张图是,写sda高低,通过参数传递
第三张图是,把每一次读回来的一个位 或操作,理解为读一个位。你应该还有个for循环没有截图进来。
不要追问了,我不一定按时回答
回复

使用道具 举报

5#
ID:420836 发表于 2020-7-26 23:53 | 只看该作者
首先,I2C SDA高且变量i不大于255,请保持递增。 第二,将SDA设置为CY(高或低); 第三,将SDA读取到j,K右移1位并与j结合;
回复

使用道具 举报

6#
ID:808296 发表于 2020-7-26 23:59 | 只看该作者
第一张图是说,SDA为高,程序自加(起延时作用)溢出。第二张图是,写sda高低,通过参数传递
第三张图是,把每一次读回来的一个位 或操作,理解为读一个位。
回复

使用道具 举报

7#
ID:668004 发表于 2020-7-27 11:50 | 只看该作者
mm201 发表于 2020-7-26 23:59
第一张图是说,SDA为高,程序自加(起延时作用)溢出。第二张图是,写sda高低,通过参数传递
第三张图是, ...

您好,为什么是255呢
回复

使用道具 举报

8#
ID:668004 发表于 2020-7-27 11:52 | 只看该作者
lyxing 发表于 2020-7-26 21:40
这个应是模拟I2C总线传输数据流程,可以参考I2C总线传输协议。第一图SDA拉高延时,第二图发送一位数据,第 ...

直接发一个字节按八次发不就行了吗?他这样做很麻烦啊
回复

使用道具 举报

9#
ID:668004 发表于 2020-7-27 11:54 | 只看该作者
mm201 发表于 2020-7-26 23:59
第一张图是说,SDA为高,程序自加(起延时作用)溢出。第二张图是,写sda高低,通过参数传递
第三张图是, ...

CY是寄存器的一个高位符号  给到SDA好抽象啊
回复

使用道具 举报

10#
ID:668004 发表于 2020-7-27 12:04 | 只看该作者
TTQ001 发表于 2020-7-26 23:53
首先,I2C SDA高且变量i不大于255,请保持递增。 第二,将SDA设置为CY(高或低); 第三,将SDA读取到j,K ...

将SDA读取到j,K右移1位并与j结合;-----------------你讲下这个具体是怎么运算的好不
回复

使用道具 举报

11#
ID:426143 发表于 2020-7-27 15:00 | 只看该作者
QWE4562012 发表于 2020-7-27 12:04
将SDA读取到j,K右移1位并与j结合;-----------------你讲下这个具体是怎么运算的好不

k先左移1位,然后位运算或上j的值,最后在赋值给k
回复

使用道具 举报

12#
ID:808485 发表于 2020-7-27 15:16 | 只看该作者
这明显是 模拟方式发送 IIC 字节呀。在 C 语言中调用 CY 寄存器,是个有深度的想法。设计者对MCU底层汇编还是比较在行的。
回复

使用道具 举报

13#
ID:668004 发表于 2020-7-27 15:49 | 只看该作者
土豆西红柿 发表于 2020-7-27 15:00
k先左移1位,然后位运算或上j的值,最后在赋值给k

这个j是多少
回复

使用道具 举报

14#
ID:808485 发表于 2020-7-27 15:52 | 只看该作者

j 的值是sda,sda是一个管脚,值可能是 1 或者 0
回复

使用道具 举报

15#
ID:808485 发表于 2020-7-27 15:56 | 只看该作者
其实,楼主应该问, 这个 CY 是干什么的,在什么地方定义的。这样才符合I2C提问的常规场景。
回复

使用道具 举报

16#
ID:668004 发表于 2020-7-27 18:19 | 只看该作者
gbchang 发表于 2020-7-27 15:56
其实,楼主应该问, 这个 CY 是干什么的,在什么地方定义的。这样才符合I2C提问的常规场景。

51单片机Cy位即baiPSW.7,是51单片机算数运算du中的进位借位标zhi志,根据算数运算结果由系统置位或复位dao,也可以编程置位或复位。置位指令为:SETB C;复位指令为CLR C。
回复

使用道具 举报

17#
ID:668004 发表于 2020-7-27 18:21 | 只看该作者
gbchang 发表于 2020-7-27 15:52
j 的值是sda,sda是一个管脚,值可能是 1 或者 0

那K左移一位再火上0或者1 是什么目的
回复

使用道具 举报

18#
ID:808485 发表于 2020-7-28 08:35 | 只看该作者
QWE4562012 发表于 2020-7-27 18:21
那K左移一位再火上0或者1 是什么目的

接收数据
回复

使用道具 举报

19#
ID:808485 发表于 2020-7-28 08:51 | 只看该作者
QWE4562012 发表于 2020-7-27 18:19
51单片机Cy位即baiPSW.7,是51单片机算数运算du中的进位借位标zhi志,根据算数运算结果由系统置位或复位d ...

在这里,CY是移位运算时,移出累加器的那个位,进入CY
回复

使用道具 举报

20#
ID:808485 发表于 2020-7-28 08:53 | 只看该作者
QWE4562012 发表于 2020-7-27 18:19
51单片机Cy位即baiPSW.7,是51单片机算数运算du中的进位借位标zhi志,根据算数运算结果由系统置位或复位d ...

在这段程序里,CY是移位操作时,移出累加器的那个位,
这段话,对这段程序理解没有任何帮助。
回复

使用道具 举报

21#
ID:401564 发表于 2020-7-28 09:01 | 只看该作者
问题1:这是IIC通讯中的的等待响应程序,没有什么是"255",你喜欢的话可以是12345或者是655353555,这个是作者自己写,就是查询255次,看IIC接收器有没有响应,这并不是一个严谨的程序
问题2:这个是IIC的写入
问题3:这个是IIC的读取
2和3原理是一样的,但你并没有认真看数字电路方面的东西,这个属于移位寄存器这一块的
对于单片机编程,基础很重要,而且基础要花很多时间去学,不然,你看后面的代码基本是没有一句你能真正理解的,你要是理解了,也就是好像明白它在说什么而已,实际上,你看了那么久的C语言,估计是一点用都没有
回复

使用道具 举报

22#
ID:668004 发表于 2020-7-28 18:10 | 只看该作者
Y_G_G 发表于 2020-7-28 09:01
问题1:这是IIC通讯中的的等待响应程序,没有什么是"255",你喜欢的话可以是12345或者是655353555,这个是作者 ...

你现在有自己做产品不   用C语言
回复

使用道具 举报

23#
ID:401564 发表于 2020-7-28 20:40 | 只看该作者
QWE4562012 发表于 2020-7-28 18:10
你现在有自己做产品不   用C语言

C我不会,我只会汇编
回复

使用道具 举报

24#
ID:691907 发表于 2020-7-29 08:06 | 只看该作者
254或256也可以, 差不多一小段时间
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表