八位單片機(jī)由于內(nèi)部構(gòu)造簡(jiǎn)略,體積小,本錢(qián)低價(jià),在一些較簡(jiǎn)略的控制器中運(yùn)用很廣。即使到了本世紀(jì),在單片機(jī)運(yùn)用中,仍占有適當(dāng)?shù)谋壤?。由于八位單片機(jī)品種繁多,本文僅將常用的幾種在性能上作一個(gè)簡(jiǎn)略的比較,供讀者在運(yùn)用時(shí)作參閱。
1. 51系列
? 運(yùn)用最廣泛的八位單片機(jī)首推Intel的51系列,由于產(chǎn)品硬件結(jié)構(gòu)合理,指令系統(tǒng)標(biāo)準(zhǔn),加之出產(chǎn)前史“悠長(zhǎng)”,有先入為主的優(yōu)勢(shì)。國(guó)際有許多著名的芯片公司都購(gòu)買(mǎi)了51芯片的中心專(zhuān)利技術(shù),并在其基礎(chǔ)上進(jìn)行性能上的擴(kuò)大,使得芯片得到進(jìn)一步的完善,構(gòu)成了一個(gè)龐大的系統(tǒng),直到現(xiàn)在仍在不斷翻新,把單片機(jī)國(guó)際炒得沸反盈天。有人估測(cè),51芯片可能最終構(gòu)成事實(shí)上的標(biāo)準(zhǔn)MCU芯片。
51系列長(zhǎng)處之一是它從內(nèi)部的硬件到軟件有一套完好的按位操作系統(tǒng),稱(chēng)作位處理器,或布爾處理器。它的處理對(duì)象不是字或字節(jié)而是位。它不光能對(duì)片內(nèi)某些特別功用寄存器的某位進(jìn)行處理,如傳送、置位、清零、測(cè)驗(yàn)等,還能進(jìn)行位的邏輯運(yùn)算,其功用十分齊備,運(yùn)用起來(lái)稱(chēng)心如意。雖然其他品種的單片機(jī)也具有位處理功用,但能進(jìn)行位邏輯運(yùn)算的實(shí)屬罕見(jiàn)。51系列在片內(nèi)RAM區(qū)間還特別拓荒了一個(gè)兩層功用的地址區(qū)間,十六個(gè)字節(jié),單元地址20H~2FH,它既可作字節(jié)處理,也可作位處理(作位處理時(shí),合128個(gè)位,相應(yīng)位地址為00H~7FH),運(yùn)用極為靈敏。這一功用無(wú)疑給運(yùn)用者供給了極大的便利,由于一個(gè)較復(fù)雜的程序在運(yùn)轉(zhuǎn)進(jìn)程中會(huì)遇到許多分支,因此需樹(shù)立許多標(biāo)志位,在運(yùn)轉(zhuǎn)進(jìn)程中,需求對(duì)有關(guān)的標(biāo)志位進(jìn)行置位、清零或檢測(cè),以斷定程序的運(yùn)轉(zhuǎn)方向。而施行這一處理(包含前面一切的位功用),只需用一條位操作指令即可。
例1:如對(duì)21H的第0位(相應(yīng)位地址為08H)置位,只需用一條位指令,
SETB08H
對(duì)周?chē)钠渌徊粫?huì)產(chǎn)生影響。
有的單片機(jī)并不能直接對(duì)RAM單元中的位進(jìn)行操作,如AVR系列單片機(jī)中,若想對(duì)RAM中的某方位位時(shí),有必要經(jīng)過(guò)狀況寄存器SREG的T位進(jìn)行中轉(zhuǎn)。
例2:如對(duì)RAM中的R0寄存器的第4方位位,則
BSET6 ;狀況寄存器T置位
BLD R0, 4 ;將T位復(fù)制到R0的第4位
明顯,后者比前者要復(fù)雜。
51系列的另一個(gè)長(zhǎng)處是乘法和除法指令,這給編程也帶來(lái)了便當(dāng)。八位除以八位的除法指令,商為八位,精度嫌不行,用得不多。而八位乘八位的乘法指令,其積為十六位,精度還是能滿(mǎn)足要求的,用的較多。作乘法時(shí),只需一條指令就行了,即 MULAB(兩個(gè)乘數(shù)分別在累加器A和寄存器B中。積的低位字節(jié)在累加器A中,高位字節(jié)在寄存器B中)。許多的八位單片機(jī)都不具有乘法功用,作乘法時(shí)還得編上一段子程序調(diào)用,十分不便利。
在51系列中,還有一條二進(jìn)制-十進(jìn)制調(diào)整指令 DA,能將二進(jìn)制變?yōu)锽CD碼,這關(guān)于十進(jìn)制的計(jì)量十分便利。而在其他的單片機(jī)中,則也需調(diào)用專(zhuān)用的子程序才行。
Intel公司51系列的典型產(chǎn)品是8051,片內(nèi)有4K字節(jié)的一次性程序存儲(chǔ)器(OTP)。Atmel公司就將其改為電可改寫(xiě)的閃速存儲(chǔ)器(Flash),容許改寫(xiě)1000次以上,這給編程和調(diào)試帶來(lái)極大的便當(dāng),其產(chǎn)品AT89C51、AT89C52 ……等成為了當(dāng)今最盛行的八位單片機(jī)。
51系列的I/O腳的設(shè)置和運(yùn)用十分簡(jiǎn)略,當(dāng)該腳作輸入腳運(yùn)用時(shí),只須將該腳設(shè)置為高電平(復(fù)位時(shí),各I/O口均置高電平)。當(dāng)該腳作輸出腳運(yùn)用時(shí),則為高電平或低電平均可。低電平時(shí),吸入電流可達(dá)20mA,具有必定的驅(qū)動(dòng)才能;而為高電平時(shí),輸出電流僅數(shù)十μA甚至更?。娏鲗?shí)際上是由腳的上拉電流構(gòu)成的),基本上沒(méi)有驅(qū)動(dòng)才能。其原因是高電平時(shí)該腳也一起作輸入腳運(yùn)用,而輸入腳有必要具有高的輸入阻抗,因此上拉的電流有必要很小才行。作輸出腳運(yùn)用,欲進(jìn)行高電平驅(qū)動(dòng)時(shí),得運(yùn)用外電路來(lái)實(shí)現(xiàn)(見(jiàn)附圖),I/O腳不通,電流經(jīng)R驅(qū)動(dòng)LED發(fā)光;低電平時(shí),I/O腳導(dǎo)通,電流由該腳入地,LED滅(I/O腳導(dǎo)通時(shí)對(duì)地的電壓降小于1V,LED的域值1.5~1.8V)。
51系列I/O腳運(yùn)用簡(jiǎn)略,但高電平時(shí)無(wú)輸出才能,可謂有利有弊。故其他系列的單片機(jī)(如PIC系列、AVR系列等)對(duì)I/O口進(jìn)行了改善,增加了方向寄存器以斷定輸入或輸出,但運(yùn)用也變得復(fù)雜。
一些精裝的51產(chǎn)品也相應(yīng)呈現(xiàn),如Atmel公司的AT89C1051、AT89C2051、AT89C4051等(閃速存儲(chǔ)器分別為1K、2K、4K等,但不能外接數(shù)據(jù)存儲(chǔ)器),指令系統(tǒng)與AT89C51完全兼容,但引腳均為20腳,不光體積小,并且價(jià)格低價(jià),這使得其他的公司競(jìng)相模仿。
不過(guò),原51系列也有許多值得改善之處,如運(yùn)轉(zhuǎn)速度過(guò)慢等。當(dāng)晶振頻率為12MHz時(shí),機(jī)器周期達(dá)1μs,明顯習(xí)慣不了現(xiàn)代高速運(yùn)轉(zhuǎn)的需求。華邦公司(Winbond)出產(chǎn)的產(chǎn)品型號(hào)為W77系列和W78系列,W78系列與AT89C系列完全兼容。W77系列為增強(qiáng)型,對(duì)原有的8051的時(shí)序作了改善,每個(gè)機(jī)器周期從12個(gè)時(shí)鐘周期改為4個(gè)周期,使速度提高了三倍,一起,晶振頻率最高可達(dá)40MHz。W77系列還增加了看門(mén)狗WatchDog、兩組UART、兩組DPTR數(shù)據(jù)指針、ISP等多種功用。