标题:
单片机LED发送数据程序怎么理解?cmd<<=1什么意思
[打印本页]
作者:
Sube
时间:
2020-3-12 21:10
标题:
单片机LED发送数据程序怎么理解?cmd<<=1什么意思
怎么理解,求大神指点,特别是cmd<<=1什么意思
屏幕截图(83).png
(425.51 KB, 下载次数: 72)
下载附件
2020-3-12 21:09 上传
作者:
lovexulu
时间:
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字节数据。
作者:
csmyldl
时间:
2020-3-12 23:18
cmd<<=1;是cmd=cmd<<1;的另一种写法,即把cmd中的数据左移1位后再存入
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1