AVR、51系列、PIC單片機(jī)的對比分析
單片機(jī)誕生于20世紀(jì)70年代末,它是指一個集成在一塊芯片上的完整計算機(jī)系統(tǒng)。它包括CPU、內(nèi)存、內(nèi)部和外部總線系統(tǒng)。在AVR、51系列、PIC單片機(jī)中,51系列最基本,同時有解密容易等缺點;PIC單片機(jī)工業(yè)抗干擾性強(qiáng),各個型號的兼容性強(qiáng);AVR最新的MEGA系列運(yùn)行速度快。各種單片機(jī)都有各自的優(yōu)缺點,應(yīng)根據(jù)需要選擇。
關(guān)鍵詞:單片機(jī)、AVR、51系列、PIC、性能對比分析
AVR、51系列、PIC單片機(jī)的對比分析
1、51系列單片機(jī)的優(yōu)缺點分析。
51系列是應(yīng)用最廣泛的單片機(jī),由于產(chǎn)品硬件結(jié)構(gòu)合理,指令系統(tǒng)規(guī)范,加之生產(chǎn)歷史“悠久”,有先入為主的優(yōu)勢。世界有許多著名的芯片公司都購買了51芯片的核心專利技術(shù),并在其基礎(chǔ)上進(jìn)行性能上的擴(kuò)充,使得芯片得到進(jìn)一步的完善,形成了一個龐大的體系,直到現(xiàn)在仍在不斷翻新,把單片機(jī)世界炒得沸沸揚(yáng)揚(yáng)。
51系列優(yōu)點之一是它從內(nèi)部的硬件到軟件有一套完整的按位操作系統(tǒng),稱作位處理器,或布爾處理器。它的處理對象不是字或字節(jié)而是位。它不光能對片內(nèi)某些特殊功能寄存器的某位進(jìn)行處理,如傳送、置位、清零、測試等,還能進(jìn)行位的邏輯運(yùn)算,其功能十分完備,使用起來得心應(yīng)手。雖然其他種類的單片機(jī)也具有位處理功能,但能進(jìn)行位邏輯運(yùn)算的實屬少見。51系列在片內(nèi)RAM區(qū)間還特別開辟了一個雙重功能的地址區(qū)間,十六個字節(jié),單元地址20H~2FH,它既可作字節(jié)處理,也可作位處理(作位處理時,合128個位,相應(yīng)位地址為OOH~7FH),使用極為靈活。這一功能無疑給使用者提供了極大的方便,因為一個較復(fù)雜的程序在運(yùn)行過程中會遇到很多分支,因而需建立很多標(biāo)志位,在運(yùn)行過程中,需要對有關(guān)的標(biāo)志位進(jìn)行置位、清零或檢測,以確定程序的運(yùn)行方向。而實施這一處理(包括前面所有的位功能),只需用一條位操作指令即可。
51系列的另一個優(yōu)點是乘法和除法指令,這給編程也帶來了便利。八位除以八位的除法指令,商為八位,精度嫌不夠,用得不多。而八位乘八位的乘法指令,其積為十六位,精度還是能滿足要求的,用的較多。作乘法時,只需一條指令即可。很多的八位單片機(jī)都不具備乘法功能,作乘法時還得編上一段子程序調(diào)用,十分不便。
51系列的I/O腳的設(shè)置和使用非常簡單,但高電平時無輸出能力,可謂有利有弊。故其他系列的單片機(jī)(如PIC系列、AVR系列等)對I/O口進(jìn)行了改進(jìn),增加了方向寄存器以確定輸入或輸出,但使用也變得復(fù)雜。
同時,原51系列也有許多值得改進(jìn)之處,如運(yùn)行速度過慢等。當(dāng)晶振頻率為12MHz時,機(jī)器周期達(dá)1μs,顯然適應(yīng)不了現(xiàn)代高速運(yùn)行的需要。華邦公司(Winbond)生產(chǎn)的產(chǎn)品型號為W77系列和W78系列,W78系列與AT89C系列完全兼容。W77系列為增強(qiáng)型,對原有的8051的時序作了改進(jìn),每個機(jī)器周期從12個時鐘周期改為4個周期,使速度提高了三倍,同時,晶振頻率最高可達(dá)40MHz。W77系列還增加了看門狗WatchDog、兩組uART、兩組DVTR數(shù)據(jù)指針、ISP等多種功能。
2、PIC單片機(jī)的優(yōu)缺點分析。
PIC單片機(jī)CPU采用RISC結(jié)構(gòu),分別有33、35、58條指令(視單片機(jī)的級別而定),屬精簡指令集。而51系列有111條指令,AVR單片機(jī)有118條指令,都比前者復(fù)雜。采用Haryard雙總線結(jié)構(gòu),運(yùn)行速度快(指令周期約160~200nS),它能使程序存儲器的訪問和數(shù)據(jù)存儲器的訪問并行處理,這種指令流水線結(jié)構(gòu),在一個周期內(nèi)完成兩部分工作,一是執(zhí)行指令,二是從程序存儲器取出下一條指令,這樣總的看來每條指令只需一個周期(個別除外),這也是高效率運(yùn)行的原因之一。此外,它還具有低工作電壓、低功耗、驅(qū)動能力強(qiáng)等特點。
PIC系列單片機(jī)的I/O口是雙向的,其輸出電路為CMOS互補(bǔ)推挽輸出電路。I/O腳增加了用于設(shè)置輸入或輸出狀態(tài)的方向寄存器,從而解決了51系列I/O腳為高電平時同為輸入和輸出的狀態(tài)。當(dāng)置位1時為輸入狀態(tài),且不管該腳呈高電平或低電平,對外均呈高阻狀態(tài);置位0時為輸出狀態(tài),不管該腳為何種電平,均呈低阻狀態(tài),有相當(dāng)?shù)尿?qū)動能力,低電平吸人電流達(dá)25mA,高電平輸出電流可達(dá)20mA。相對于51系列而言,這是一個很大的優(yōu)點,它可以直接驅(qū)動數(shù)碼管顯示且外電路簡單。它的A/D為10位,能滿足精度要求。具有在線調(diào)試及編程功能。
該系列單片機(jī)的專用寄存器)并不像51系列那樣都集中在一個固定的地址區(qū)間內(nèi)(80~FFH),而是分散在四個地址區(qū)間內(nèi),即存儲體0(Bank0:00-7FH)、存儲體1(Bankl:80-FFH)、存儲體2(Bank2:100-17FH)、存儲體3(Bank3:180-1FFH)。只有5個專用寄存器PCL、STATUS、FSR、PCLATH、INTCON在4個存儲體內(nèi)同時出現(xiàn)。在編程過程中,少不了要與專用寄存器打交道,得反復(fù)地選擇對應(yīng)的存儲體,也即對狀態(tài)寄存器STATUS的第6位(RPl)和第5位(RPO)置位或清零。這多少給編程帶來了一些麻煩。對于上述的單片機(jī),它的位指令操作通常限制在存儲體0區(qū)間(00~7FH)。數(shù)據(jù)的傳送和邏輯運(yùn)算基本上都得通過工作寄存器w(相當(dāng)于5l系列的累加器A)來進(jìn)行,而51系列的還可以通過寄存器相互之間直接傳送(如:MOV30H,20H;將寄存器20H的內(nèi)容直接傳送至寄存器30H中),因而PIC單片機(jī)的瓶頸現(xiàn)象比51系列還要嚴(yán)重,這在編程中很有感受。
綜合來說PIC單片機(jī)應(yīng)該說有三個主要特點:
(1)總線結(jié)構(gòu):MCS-51單片機(jī)的總線結(jié)構(gòu)是馮-諾依曼型,計算機(jī)在同一個存儲空間取指令和數(shù)據(jù),兩者不能同時進(jìn)行;而PIC單片機(jī)的總線結(jié)構(gòu)是哈佛結(jié)構(gòu),指令和數(shù)據(jù)空間是完全分開的,一個用于指令,一個用于數(shù)據(jù),由于可以對程序和數(shù)據(jù)同時進(jìn)行訪問,所以提高了數(shù)據(jù)吞吐率。正因為在PIC單片機(jī)中采用了哈佛雙總線結(jié)構(gòu),所以與常見的微控制器不同的一點是:程序和數(shù)據(jù)總線可以采用不同的寬度。數(shù)據(jù)總線都是8位的,但指令總線位數(shù)分別位12、14、16位。
(2)流水線結(jié)構(gòu):MCS-51單片機(jī)的取指和執(zhí)行采用單指令流水線結(jié)構(gòu),即取一條指令,執(zhí)行完后再取下一條指令;而PIC的取指和執(zhí)行采用雙指令流水線結(jié)構(gòu),當(dāng)一條指令被執(zhí)行時,允許下一條指令同時被取出,這樣就實現(xiàn)了單周期指令。
(3)寄存器組:PIC單片機(jī)的所有寄存器,包括I/O口,定時器和程序計數(shù)器等都采用RAM結(jié)構(gòu)形式,而且都只需要一個指令周期就可以完成訪問和操作;而MCS-51單片機(jī)需要兩個或兩個以上的周期才能改變寄存器的內(nèi)容。
3、AVR單片優(yōu)缺點分析。
AVR單片機(jī)其顯著的特點為高性能、高速度、低功耗。它取消機(jī)器周期,以時鐘周期為指令周期,實行流水作業(yè)。AVR單片機(jī)指令以字為單位,且大部分指令都為單周期指令。而單周期既可執(zhí)行本指令功能,同時完成下一條指令的讀取。通用寄存器一共32個(RO-R31),前16個寄存器(R0~R15)都不能直接與立即數(shù)打交道,因而通用性有所下降。而在5l系列中,它所有的通用寄存器(地址00-7FH)均可以直接與立即數(shù)打交道,顯然要優(yōu)于前者。
AVR系列沒有類似累加器A的結(jié)構(gòu),它主要是通過R16~R31寄存器來實現(xiàn)A的功能。在AVR中,沒有像5l系列的數(shù)據(jù)指針DPTR,而是由X(由R26、R27組成)、Y(由R28、.R29組成)、z(由R30、R31組成)三個16位的寄存器來完成數(shù)據(jù)指針的功能(相當(dāng)于有三組DPTR),而且還能作后增量或先減量等的運(yùn)行。
在51系列中,所有的邏輯運(yùn)算都必須在A中進(jìn)行;而AVR卻可以在任兩個寄存器之間進(jìn)行,省去了在A中的來回折騰,這些都比51系列強(qiáng)。
AVR的專用寄存器集中在$00~$3F地址區(qū)間,無需像PIC那樣得先進(jìn)行選存儲體的過程,使用起來比PIC方便。AVR的片內(nèi)RAM的地址區(qū)間為$0060~$00DF(AT90S23131)和$0060~$025F(AT90S85l5、AT90S8535),它們占用的是數(shù)據(jù)空間的地址,這些片內(nèi)RAM僅僅是用來存儲數(shù)據(jù)的,通常不具備通用寄存器的功能。當(dāng)程序復(fù)雜時,通用寄存器R0一R31就顯得不夠用;而51系列的通用寄存器多達(dá)128個(為AVR的4倍),編程時就不會有這種感覺。
AVR的I/O腳類似PIC,它也有用來控制輸入或輸出的方向寄存器,在輸出狀態(tài)下,高電平輸出的電流在10mA左右,低電平吸入電流20mA。雖不如PIC,但比51系列強(qiáng)。
綜合來看,AVR與51、PIC單片機(jī)相比具有一系列的優(yōu)點,用通俗的說法主要體現(xiàn)在這幾個方面:
(1)、在相同的系統(tǒng)時鐘下AVR運(yùn)行速度最快;
(2)、所有AVR單片機(jī)的FLASH、EEPROM蓄存器都可以反復(fù)燒寫、支持在ISP在線編程(燒寫),入門費(fèi)用非常少;
(3)、片內(nèi)集成多種頻率的RC振蕩器、上電自動復(fù)位、看門狗、啟動延時等功能,使得電路設(shè)計變得非常簡單;
(4)、每個IO口作輸出時都可以輸出很強(qiáng)的高、低電平,作輸入時IO口可以是高阻抗或者帶上拉電阻;
(5)、片內(nèi)具有豐富實用的資源,如AD模數(shù)器、DA數(shù)模器,豐富的中斷源、SPI、USART、TWI通信口、PWM等等;
(6)、片內(nèi)采用了先進(jìn)的數(shù)據(jù)加密技術(shù),大大的提高了破解的難度;
(7)、片內(nèi)FLASH空間大、品種多,引腳少的有8腳,多的有64腳等各種封裝
(8)、部分芯片的引腳兼容51系列,代換容易,如ATtiny2313兼容AT89C2051,ATmega8515/162兼容AT89S51等
四、單片機(jī)的選擇。
各種單片機(jī)都有各自的優(yōu)缺點,應(yīng)根據(jù)需要選擇。選擇單片機(jī)原則如下:
1. 單片機(jī)的基本參數(shù)例如速度,程序存儲器容量,I/O引腳數(shù)量
2. 單片機(jī)的增強(qiáng)功能,例如看門狗,雙指針,雙串口,RTC(實時時鐘),EEPROM,擴(kuò)展RAM,CAN接口,I2C接口,SPI接口,USB接口。
3. Flash和OTP(一次性可編程)相比較,最好是Flash。
4. 封裝?IP(雙列直插),PLCC(PLCC有對應(yīng)插座)還是貼片。DIP封裝在做實驗時可能方便一點。
5. 工作溫度范圍,工業(yè)級還是商業(yè)機(jī)。如果設(shè)計戶外產(chǎn)品,必須選用工業(yè)級。
6. 功耗,比如設(shè)計并口加密狗,信號線取電只能提供幾個mA,用PIC就是因為低功耗,后來出了MSP430也不錯。
7. 工作電壓范圍。例如設(shè)計電視機(jī)遙控器,2節(jié)干電池供電,至少應(yīng)該能在1.8-3.6V電壓范圍內(nèi)工作。
8. 供貨渠道暢通。能申請樣片,小批量購買有現(xiàn)貨。最好像標(biāo)準(zhǔn)51,中發(fā)里隨便找個柜臺就能買到(我在北京)
9. 價格低。
10. 有服務(wù)商,像周立功公司推Philips,雙龍公司推AVR,都提供了很多有用的技術(shù)支持,起碼燒寫器有地方買。
11. 燒錄器價格低,如果是ICP(把單片機(jī)放在燒錄器上編程)能否利用現(xiàn)有的燒錄器,如果是表貼封裝,買一個轉(zhuǎn)接座也很貴,至少得一二百元。能否ISP(在系統(tǒng)編程,即把芯片先焊到板子上再通過預(yù)留的ISP接口編程),一般ISP編程器比較便宜大約一二百元甚至幾十元。
12. 仿真器便宜。對于FLASH型單片機(jī),仿真器不是必備的。但是對于OTP(一次性可編程)型單片機(jī),必須購買或者租用仿真器。
13. 單片機(jī)匯編語言是自己熟悉的,并且能支持C語言。編程環(huán)境要像keil一樣好用,并且還是免費(fèi)的。
14. 網(wǎng)站速度快,資料豐富。包括芯片手冊,應(yīng)用指南,設(shè)計方案,范例程序。最好有中文,像Atmel就不錯。
15. 保密性能好,查一下專業(yè)解密網(wǎng)站上的黑名單,再發(fā)個mail咨詢一下解密價格。
16. 抗干擾性能好。我曾經(jīng)把XXC52改為S52后發(fā)現(xiàn)抗干擾性能下降,只好改回去。
17. 和其他外設(shè)芯片放在一起的綜合考慮