本帖最后由 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字节数据。 |