AVR,C51和PIC八位單片機性能比較
八位單片機由于內部構造簡(jiǎn)單,體積小,成本低廉,在一些較簡(jiǎn)單的控制器中應用很廣。即便到了本世紀,在單片機應用中,仍占有相當的份額。由于八位單片機種類(lèi)繁多,本文僅將常用的幾種在性能上作一個(gè)簡(jiǎn)單的比較,供讀者在使用時(shí)作參考。
1. 51系列
應用最廣泛的八位單片機首推Intel的51系列,由于產(chǎn)品硬件結構合理,指令系統規范,加之生產(chǎn)歷史“悠久”,有先入為主的優(yōu)勢。世界有許多著(zhù)名的芯片公司都購買(mǎi)了51芯片的核心專(zhuān)利技術(shù),并在其基礎上進(jìn)行性能上的擴充,使得芯片得到進(jìn)一步的完善,形成了一個(gè)龐大的體系,直到現在仍在不斷翻新,把單片機世界炒得沸沸揚揚。有人推測,51芯片可能最終形成事實(shí)上的標準MCU芯片。
51系列優(yōu)點(diǎn)之一是它從內部的硬件到軟件有一套完整的按位操作系統,稱(chēng)作位處理器,或布爾處理器。它的處理對象不是字或字節而是位。它不光能對片內某些特殊功能寄存器的某位進(jìn)行處理,如傳送、置位、清零、測試等,還能進(jìn)行位的邏輯運算,其功能十分完備,使用起來(lái)得心應手。雖然其他種類(lèi)的單片機也具有位處理功能,但能進(jìn)行位邏輯運算的實(shí)屬少見(jiàn)。51系列在片內RAM區間還特別開(kāi)辟了一個(gè)雙重功能的地址區間,十六個(gè)字節,單元地址20H~2FH,它既可作字節處理,也可作位處理(作位處理時(shí),合128個(gè)位,相應位地址為00H~7FH),使用極為靈活。這一功能無(wú)疑給使用者提供了極大的方便,因為一個(gè)較復雜的程序在運行過(guò)程中會(huì )遇到很多分支,因而需建立很多標志位,在運行過(guò)程中,需要對有關(guān)的標志位進(jìn)行置位、清零或檢測,以確定程序的運行方向。而實(shí)施這一處理(包括前面所有的位功能),只需用一條位操作指令即可。
例1:如對21H的第0位(相應位地址為08H)置位,只需用一條位指令,
SETB08H
對周?chē)钠渌徊粫?huì )產(chǎn)生影響。
有的單片機并不能直接對RAM單元中的位進(jìn)行操作,如AVR系列單片機中,若想對RAM中的某位置位時(shí),必須通過(guò)狀態(tài)寄存器SREG的T位進(jìn)行中轉。
例2:如對RAM中的R0寄存器的第4位置位,則
BSET6 ;狀態(tài)寄存器T置位
BLD R0, 4 ;將T位復制到R0的第4位
顯然,后者比前者要復雜。
51系列的另一個(gè)優(yōu)點(diǎn)是乘法和除法指令,這給編程也帶來(lái)了便利。八位除以八位的除法指令,商為八位,精度嫌不夠,用得不多。而八位乘八位的乘法指令,其積為十六位,精度還是能滿(mǎn)足要求的,用的較多。作乘法時(shí),只需一條指令就行了,即 MULAB(兩個(gè)乘數分別在累加器A和寄存器B中。積的低位字節在累加器A中,高位字節在寄存器B中)。很多的八位單片機都不具備乘法功能,作乘法時(shí)還得編上一段子程序調用,十分不便。
在51系列中,還有一條二進(jìn)制-十進(jìn)制調整指令 DA,能將二進(jìn)制變?yōu)锽CD碼,這對于十進(jìn)制的計量十分方便。而在其他的單片機中,則也需調用專(zhuān)用的子程序才行。
Intel公司51系列的典型產(chǎn)品是8051,片內有4K字節的一次性程序存儲器(OTP)。Atmel公司就將其改為電可改寫(xiě)的閃速存儲器(Flash),容許改寫(xiě)1000次以上,這給編程和調試帶來(lái)極大的便利,其產(chǎn)品AT89C51、AT89C52 ……等成為了當今最流行的八位單片機。
51系列的I/O腳的設置和使用非常簡(jiǎn)單,當該腳作輸入腳使用時(shí),只須將該腳設置為高電平(復位時(shí),各 I/O口均置高電平)。當該腳作輸出腳使時(shí),則為高電平或低電平均可。低電平時(shí),吸入電流可?0mA,具有一定的驅動(dòng)能力;而為高電平時(shí),輸出電流僅數十 μA甚至更小(電流實(shí)際上是由腳的上拉電流形成的),基本上沒(méi)有驅動(dòng)能力。其原因是高電平時(shí)該腳也同時(shí)作輸入腳使用,而輸入腳必須具有高的輸入阻抗,因而上拉的電流必須很小才行。作輸出腳使用,欲進(jìn)行高電平驅動(dòng)時(shí),得利用外電路來(lái)實(shí)現,I/O腳不通,電流經(jīng)R驅動(dòng)LED發(fā)光;低電平時(shí),I/O腳導通,電流由該腳入地,LED滅(I/O腳導通時(shí)對地的電壓降小于1V,LED的域值1.5~1.8V)。
51系列I/O腳使用簡(jiǎn)單,但高電平時(shí)無(wú)輸出能力,可謂有利有弊。故其他系列的單片機(如PIC系列、AVR系列等)對I/O口進(jìn)行了改進(jìn),增加了方向寄存器以確定輸入或輸出,但使用也變得復雜。
一些簡(jiǎn)裝的51產(chǎn)品也相應出現,如Atmel公司的AT89C1051、AT89C2051、AT89C4051等(閃速存儲器分別為1K、2K、4K等,但不能外接數據存儲器),指令系統與AT89C51完全兼容,但引腳均為20腳,不光體積小,而且價(jià)格低廉,這使得其他的公司競相仿照。
不過(guò),原51系列也有許多值得改進(jìn)之處,如運行速度過(guò)慢等。當晶振頻率為12MHz時(shí),機器周期達1μs,顯然適應不了現代高速運行的需要。華邦公司(Winbond)生產(chǎn)的產(chǎn)品型號為W77系列和W78系列,W78系列與AT89C系列完全兼容。 W77系列為增強型,對原有的8051的時(shí)序作了改進(jìn),每個(gè)機器周期從12個(gè)時(shí)鐘周期改為4個(gè)周期,使速度提高了三倍,同時(shí),晶振頻率最高可達 40MHz。W77系列還增加了看門(mén)狗WatchDog、兩組UART、兩組DPTR數據指針、ISP等多種功能。
特別是雙數據指針,能給編程帶來(lái)很大的便利。在51系列中,數據指針DPTR是片內與片外的數據存儲器打交道的主要途徑(由片外數據存儲器讀入片內累加器A或由片內累加器A 寫(xiě)入片外數據存儲器),也是程序存儲器與累加器A之間的數據傳送的必由之路。由于頻繁的數據交換,特別是數據塊的搬運和比較,數據指針?lè )浅3跃o,它需要不斷地實(shí)施現場(chǎng)保護與還原,不光編程變得復雜,而且運行速度也減慢。而當采用兩個(gè)數據指針時(shí),可以各負其責,互不相擾,輕松地完成上述過(guò)程。兩個(gè)數據指針的選取取決于特殊功能寄存器AUXR1的第D0位DPS。當DPS為0時(shí),選中數據指針DPTR0(復位時(shí)DPS也為0);DPS為1時(shí),選中數據指針 DPTR1。DPS位不能位尋址,故不能進(jìn)行布爾操作,但由于A(yíng)UXR1的D1位被強制為邏輯“0”,不可能發(fā)生由D0位向D1位進(jìn)位之可能,因而可以通過(guò)對AUXR1進(jìn)行增1來(lái)使D0位由0變?yōu)?或由1變?yōu)?,從而達到雙數據指針的快速切換的目的,如:
例3:
MOVAUXR1,#0 ; DPS為0,DPTR0有效
……
INC AUXR1 ; DPS為1,DPTR1有效
……
INC AUXR1 ; DPS為0,DPTR0有效
……
晶振相關(guān)文章:晶振原理
評論