标题: 单片机LED发送数据程序怎么理解?cmd<<=1什么意思 [打印本页]

作者: Sube    时间: 2020-3-12 21:10
标题: 单片机LED发送数据程序怎么理解?cmd<<=1什么意思
怎么理解,求大神指点,特别是cmd<<=1什么意思

屏幕截图(83).png (425.51 KB, 下载次数: 72)

屏幕截图(83).png

作者: 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