找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4871|回复: 24
收起左侧

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

[复制链接]
ID:668004 发表于 2020-7-26 17:45 | 显示全部楼层 |阅读模式
这三条赋值语句的目的是干什么?
51hei图片20200726174208.png
51hei图片20200726174217.png
51hei图片20200726174202.png
回复

使用道具 举报

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循环没有截图进来。
不要追问了,我不一定按时回答
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

您好,为什么是255呢
回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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结合;-----------------你讲下这个具体是怎么运算的好不
回复

使用道具 举报

ID:426143 发表于 2020-7-27 15:00 | 显示全部楼层
QWE4562012 发表于 2020-7-27 12:04
将SDA读取到j,K右移1位并与j结合;-----------------你讲下这个具体是怎么运算的好不

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

使用道具 举报

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

使用道具 举报

ID:668004 发表于 2020-7-27 15:49 | 显示全部楼层
土豆西红柿 发表于 2020-7-27 15:00
k先左移1位,然后位运算或上j的值,最后在赋值给k

这个j是多少
回复

使用道具 举报

ID:808485 发表于 2020-7-27 15:52 | 显示全部楼层

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

使用道具 举报

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

使用道具 举报

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。
回复

使用道具 举报

ID:668004 发表于 2020-7-27 18:21 | 显示全部楼层
gbchang 发表于 2020-7-27 15:52
j 的值是sda,sda是一个管脚,值可能是 1 或者 0

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

使用道具 举报

ID:808485 发表于 2020-7-28 08:35 | 显示全部楼层
QWE4562012 发表于 2020-7-27 18:21
那K左移一位再火上0或者1 是什么目的

接收数据
回复

使用道具 举报

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

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

使用道具 举报

ID:808485 发表于 2020-7-28 08:53 | 显示全部楼层
QWE4562012 发表于 2020-7-27 18:19
51单片机Cy位即baiPSW.7,是51单片机算数运算du中的进位借位标zhi志,根据算数运算结果由系统置位或复位d ...

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

ID:401564 发表于 2020-7-28 20:40 | 显示全部楼层
QWE4562012 发表于 2020-7-28 18:10
你现在有自己做产品不   用C语言

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

使用道具 举报

ID:691907 发表于 2020-7-29 08:06 | 显示全部楼层
254或256也可以, 差不多一小段时间
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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