找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2668|回复: 2
收起左侧

单片机LED发送数据程序怎么理解?cmd<<=1什么意思

[复制链接]
ID:704232 发表于 2020-3-12 21:10 | 显示全部楼层 |阅读模式
怎么理解,求大神指点,特别是cmd<<=1什么意思
屏幕截图(83).png
回复

使用道具 举报

ID:687694 发表于 2020-3-12 23:02 | 显示全部楼层
本帖最后由 lovexulu 于 2020-3-13 11:42 编辑

左移一位,单片机中所有发送串口数据,都是1位1位发的,一个字节就是8位,例如cmd= 0000 1000 ,按照你上面的程序运行过程如下:
进入for循环中开始:temp被定义为char类型8位数据它被赋值0000 1000&0x80,0x80是十六进制数,写做2进制就是1000 0000 那么它与0000 1000进行运算即相同为位置同为1结果才为1.所以temp=0000 0000 ,接着进行判断 temp显然等于0.结果执行了LCD_SDA=0,这样在数据线上就发送过去一个0,然后cmd<<1,结果cmd=0001 0000,循环,又发一个0,再移位(0010 0000),如此循环到(1000 0000)时,&0x80的结果变为 1000 0000,此时temp!=0,执行LCD_SDA=1,这样数据线上发功过去一个1,移位后 cmd= 0000 0000,如此循环8次,将 0000 1000 依次体现在数据线上,即发送过去8位数据,就是1字节数据。
回复

使用道具 举报

ID:235200 发表于 2020-3-12 23:18 | 显示全部楼层
cmd<<=1;是cmd=cmd<<1;的另一种写法,即把cmd中的数据左移1位后再存入
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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