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