|
| cmd<<=1;是cmd=cmd<<1;的另一種寫法,即把cmd中的數(shù)據(jù)左移1位后再存入 |
|
本帖最后由 lovexulu 于 2020-3-13 11:42 編輯 左移一位,單片機中所有發(fā)送串口數(shù)據(jù),都是1位1位發(fā)的,一個字節(jié)就是8位,例如cmd= 0000 1000 ,按照你上面的程序運行過程如下: 進入for循環(huán)中開始:temp被定義為char類型8位數(shù)據(jù)它被賦值0000 1000&0x80,0x80是十六進制數(shù),寫做2進制就是1000 0000 那么它與0000 1000進行與運算即相同為位置同為1結(jié)果才為1.所以temp=0000 0000 ,接著進行判斷 temp顯然等于0.結(jié)果執(zhí)行了LCD_SDA=0,這樣在數(shù)據(jù)線上就發(fā)送過去一個0,然后cmd<<1,結(jié)果cmd=0001 0000,循環(huán),又發(fā)一個0,再移位(0010 0000),如此循環(huán)到(1000 0000)時,&0x80的結(jié)果變?yōu)?1000 0000,此時temp!=0,執(zhí)行LCD_SDA=1,這樣數(shù)據(jù)線上發(fā)功過去一個1,移位后 cmd= 0000 0000,如此循環(huán)8次,將 0000 1000 依次體現(xiàn)在數(shù)據(jù)線上,即發(fā)送過去8位數(shù)據(jù),就是1字節(jié)數(shù)據(jù)。 |
Powered by 單片機教程網(wǎng)