MSB是最高有效位,LSB是最低有效位。我們用單片機(jī)和傳感器通信的時(shí)候,就需要留意這個(gè)。比如單片機(jī)和溫度傳感器DS18B20通信,通過(guò)查詢DS18B20的datasheet,可以知道DS1820是以LSB模式傳輸,即先發(fā)送最低位,次低位....到最高位。所以單片機(jī)每次接收數(shù)據(jù),要采用字節(jié)位移的思路,接收一個(gè)bit,字節(jié)位移一次,直到全部接收完,數(shù)據(jù)就能在正常的位置。 單片機(jī)存儲(chǔ)數(shù)據(jù),有分大端存儲(chǔ)和小端存儲(chǔ)。所謂大端,就是數(shù)據(jù)的高位字節(jié)存放在物理地址的低端,低字節(jié)放在物理地址的高端。小端,就是和大端反過(guò)來(lái)的。 假設(shè)uint_16 temp = 0x12345678;存儲(chǔ)在0x00001-0x00004的物理地址空間中,存儲(chǔ)都是按照從最低的物理地址開(kāi)始存儲(chǔ)的,即從0x00001開(kāi)始存入數(shù)據(jù);對(duì)于大端,0x12345678是從12開(kāi)始存入,然后34、56、78,從MSB作為第一個(gè)開(kāi)始,從左到右。對(duì)于小端,0x12345678是從78開(kāi)始存入,然后56、34、12,從LSB第一個(gè)開(kāi)始,從右到左。 有些人有疑問(wèn),比如小端怎么不是存入0x87而是0x78呢?這個(gè)問(wèn)題,需要了解物理地址存儲(chǔ),每個(gè)物理地址可以存儲(chǔ)一個(gè)byte,所以是按照0x78存入的,因?yàn)?x78本身就是一個(gè)字節(jié)。
|