找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 3340 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-3-12 21:10

正文摘要:

怎么理解,求大神指点,特别是cmd<<=1什么意思

回复

ID:235200 发表于 2020-3-12 23:18
cmd<<=1;是cmd=cmd<<1;的另一种写法,即把cmd中的数据左移1位后再存入
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字节数据。

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

Powered by 单片机教程网

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