8、16、32位單片機(jī)編程區(qū)別
指CPU處理的數(shù)據(jù)的寬度,參與運(yùn)算的寄存器的數(shù)據(jù)長度。
如果總線寬度與CPU一次處理的數(shù)據(jù)寬度相同,則這個寬度就是所說的單片機(jī)位數(shù)。
如果總線寬度與CPU一次處理的數(shù)據(jù)寬度不同:
1)總線寬度小于CPU一次處理的數(shù)據(jù)寬度,則以CPU的數(shù)據(jù)寬度定義單片機(jī)的位數(shù),但稱為準(zhǔn)多少位。比如著名的Intel 8088,CPU是16位但總線是8位,所以它是準(zhǔn)16位。
2)總線寬度小于CPU一次處理的數(shù)據(jù)寬度,則以CPU的數(shù)據(jù)寬度定義單片機(jī)的位數(shù)。
少位寬不是指總線寬度,也不是存儲器的寬度,像51單片機(jī)的地址總線是16位的,但是它是8位機(jī)。像ARM的存儲器也有八位的,但是它是32位機(jī)。而是指CPU處理的數(shù)據(jù)的寬度,也就是CPU一次數(shù)據(jù)的吞吐量。比如同一條指令:MOV R0 R2
在51單片機(jī)里面,R0和R2都是8位的,所以51的CPU一次只能處理8位數(shù)據(jù)。
在ARM里面,R0和R2是32位的,所以ARM的CPU一次能處理32位數(shù)據(jù)。這就是區(qū)別。
有啥復(fù)雜的, 一句話:參與運(yùn)算的寄存器的數(shù)據(jù)長度。
8位單片機(jī)的數(shù)據(jù)總線寬度為8位,通常直接只能處理8位數(shù)據(jù);
16位單片機(jī)的數(shù)據(jù)總線寬度為16位,通??芍苯犹幚?位或16位數(shù)據(jù)。
最本質(zhì)的區(qū)別是內(nèi)部CPU的字長不同,即CPU處理數(shù)據(jù)的最大位數(shù)不同,有8位和16位CPU的區(qū)別,你可以認(rèn)為是ALU、寄存器的字長等。有的32位DSP芯片其外部接口數(shù)據(jù)總線是16位的,根據(jù)這個來判斷是不行的
速度上有區(qū)別,取決于CPU、寄存器的字長。8位單片機(jī)不能直接處理16位數(shù)據(jù),要按照8位數(shù)據(jù)來處理,要分幾個過程來完成。而16位單片機(jī),可直接處理16們數(shù)據(jù),因?yàn)槠銩LU,寄存器等都是16位的,可一次完成8位單片機(jī)要多步完成的動作,特別是對于數(shù)據(jù)處理,16位單片機(jī)有它的優(yōu)勢。而且16位單片機(jī)大多數(shù)據(jù)接口都為16位。
說簡單了就是16位的比8位快,8位的單片機(jī)發(fā)展時間長,且價格偏低。最重要的是在許多的應(yīng)用場合能夠勝任開發(fā)的任務(wù)。16位的單片機(jī)在功能上要比8位的強(qiáng)大很多,只在需要的場合使用。
你知道2進(jìn)制吧,你是否知道單片機(jī)在進(jìn)行計(jì)算的時候統(tǒng)統(tǒng)是2進(jìn)制數(shù)的運(yùn)算。所以8位單片機(jī)和16位單片機(jī)的最根本區(qū)別就是,8位單片機(jī)可以同時進(jìn)行2個8位的2進(jìn)制數(shù)相加,而16位單片機(jī)則大一倍,可以同時讓2個16位的2進(jìn)制數(shù)相加。
CPU能同時處理二進(jìn)制數(shù)的位數(shù)是多少位,就稱其是多少位的計(jì)算機(jī)。也有數(shù)據(jù)總線的位數(shù)是CPU位數(shù)的一半的情況,就稱其是準(zhǔn)多少位的計(jì)算機(jī)。比如CPU是16位,數(shù)據(jù)總線也是16位,則是16位計(jì)算機(jī);CPU是16位,數(shù)據(jù)總線也是8位,則是準(zhǔn)16位計(jì)算機(jī)。
原來是16位單片機(jī)想改用8位的替代是可以的,但電路及程序都要做相應(yīng)改變,并且改為8位機(jī)后,在功能和速度上要能夠滿足你工作的需要才行。
8、16、32位單片機(jī)編程注意事項(xiàng)
這個主要是要注意8位機(jī)代碼移植到32位機(jī)的問題,如果你51的C寫得很規(guī)范移植會好點(diǎn),如果寫的不規(guī)范麻煩會大點(diǎn),比如unsigned int這個類型在8位機(jī)和32位編譯出來的效果就是不一樣的。還有就是ARM芯片會有字節(jié)對齊的問題,如果51的C里面用到了結(jié)構(gòu)體,那么字節(jié)對齊的問題會出現(xiàn)在sizeof(結(jié)構(gòu)體名)。這個函數(shù)因?yàn)樽止?jié)對齊問題,可能會算出的結(jié)構(gòu)體字節(jié)大小和你想的不一樣。其他好像也沒有什么需要注意的了
評論
查看更多