找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 9636|回復: 3
打印 上一主題 下一主題
收起左側(cè)

[轉(zhuǎn)帖]AVR,C51和PIC比較

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:10504 發(fā)表于 2009-4-1 07:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

        八位單片機由于內(nèi)部構(gòu)造簡單,體積小,成本低廉,在一些較簡單的控制器中應(yīng)用很廣。即便到了本世紀,在單片機應(yīng)用中,仍占有相當?shù)姆蓊~。由于八位單片機種類繁多,本文僅將常用的幾種在性能上作一個簡單的比較,供讀者在使用時作參考。   
1. 51系列
   應(yīng)用最廣泛的八位單片機首推Intel的51系列,由于產(chǎn)品硬件結(jié)構(gòu)合理,指令系統(tǒng)規(guī)范,加之生產(chǎn)歷史“悠久”,有先入為主的優(yōu)勢。世界有許多著名的芯 片公司都購買了51芯片的核心專利技術(shù),并在其基礎(chǔ)上進行性能上的擴充,使得芯片得到進一步的完善,形成了一個龐大的體系,直到現(xiàn)在仍在不斷翻新,把單片 機世界炒得沸沸揚揚。有人推測,51芯片可能最終形成事實上的標準MCU芯片。

  51系列優(yōu)點之一是它從內(nèi)部的硬件到軟件有一套完整的按位操作系統(tǒng),稱作位處理器,或布爾處理器。它的處理對象不是字或字節(jié)而是位。它不光能對 片內(nèi)某些特殊功能寄存器的某位進行處理,如傳送、置位、清零、測試等,還能進行位的邏輯運算,其功能十分完備,使用起來得心應(yīng)手。雖然其他種類的單片機也 具有位處理功能,但能進行位邏輯運算的實屬少見。51系列在片內(nèi)RAM區(qū)間還特別開辟了一個雙重功能的地址區(qū)間,十六個字節(jié),單元地址20H~2FH,它 既可作字節(jié)處理,也可作位處理(作位處理時,合128個位,相應(yīng)位地址為00H~7FH),使用極為靈活。這一功能無疑給使用者提供了極大的方便,因為一 個較復雜的程序在運行過程中會遇到很多分支,因而需建立很多標志位,在運行過程中,需要對有關(guān)的標志位進行置位、清零或檢測,以確定程序的運行方向。而實 施這一處理(包括前面所有的位功能),只需用一條位操作指令即可。

  例1:如對21H的第0位(相應(yīng)位地址為08H)置位,只需用一條位指令,
   SETB08H
  對周圍的其他位不會產(chǎn)生影響。
  有的單片機并不能直接對RAM單元中的位進行操作,如AVR系列單片機中,若想對RAM中的某位置位時,必須通過狀態(tài)寄存器SREG的T位進行中轉(zhuǎn)。
  例2:如對RAM中的R0寄存器的第4位置位,則
  BSET6 ;狀態(tài)寄存器T置位
  BLD R0, 4 ;將T位復制到R0的第4位
  顯然,后者比前者要復雜。

  51系列的另一個優(yōu)點是乘法和除法指令,這給編程也帶來了便利。八位除以八位的除法指令,商為八位,精度嫌不夠,用得不多。而八位乘八位的乘法 指令,其積為十六位,精度還是能滿足要求的,用的較多。作乘法時,只需一條指令就行了,即 MULAB(兩個乘數(shù)分別在累加器A和寄存器B中。積的低位字節(jié)在累加器A中,高位字節(jié)在寄存器B中)。很多的八位單片機都不具備乘法功能,作乘法時還得 編上一段子程序調(diào)用,十分不便。

  在51系列中,還有一條二進制-十進制調(diào)整指令 DA,能將二進制變?yōu)锽CD碼,這對于十進制的計量十分方便。而在其他的單片機中,則也需調(diào)用專用的子程序才行。

  Intel公司51系列的典型產(chǎn)品是8051,片內(nèi)有4K字節(jié)的一次性程序存儲器(OTP)。Atmel公司就將其改為電可改寫的閃速存儲器 (Flash),容許改寫1000次以上,這給編程和調(diào)試帶來極大的便利,其產(chǎn)品AT89C51、AT89C52 ……等成為了當今最流行的八位單片機。

   51系列的I/O腳的設(shè)置和使用非常簡單,當該腳作輸入腳使用時,只須將該腳設(shè)置為高電平(復位時,各 I/O口均置高電平)。當該腳作輸出腳使時,則為高電平或低電平均可。低電平時,吸入電流可?0mA,具有一定的驅(qū)動能力;而為高電平時,輸出電流僅數(shù)十 μA甚至更�。娏鲗嶋H上是由腳的上拉電流形成的),基本上沒有驅(qū)動能力。其原因是高電平時該腳也同時作輸入腳使用,而輸入腳必須具有高的輸入阻抗,因而 上拉的電流必須很小才行。作輸出腳使用,欲進行高電平驅(qū)動時,得利用外電路來實現(xiàn),I/O腳不通,電流經(jīng)R驅(qū)動LED發(fā)光;低電平時,I/O腳導通,電流 由該腳入地,LED滅(I/O腳導通時對地的電壓降小于1V,LED的域值1.5~1.8V)。

  51系列I/O腳使用簡單,但高電平時無輸出能力,可謂有利有弊。故其他系列的單片機(如PIC系列、AVR系列等)對I/O口進行了改進,增加了方向寄存器以確定輸入或輸出,但使用也變得復雜。

  一些簡裝的51產(chǎn)品也相應(yīng)出現(xiàn),如Atmel公司的AT89C1051、AT89C2051、AT89C4051等(閃速存儲器分別為1K、 2K、4K等,但不能外接數(shù)據(jù)存儲器),指令系統(tǒng)與AT89C51完全兼容,但引腳均為20腳,不光體積小,而且價格低廉,這使得其他的公司競相仿照。

  不過,原51系列也有許多值得改進之處,如運行速度過慢等。當晶振頻率為12MHz時,機器周期達1μs,顯然適應(yīng)不了現(xiàn)代高速運行的需要。華 邦公司(Winbond)生產(chǎn)的產(chǎn)品型號為W77系列和W78系列,W78系列與AT89C系列完全兼容。 W77系列為增強型,對原有的8051的時序作了改進,每個機器周期從12個時鐘周期改為4個周期,使速度提高了三倍,同時,晶振頻率最高可達 40MHz。W77系列還增加了看門狗WatchDog、兩組UART、兩組DPTR數(shù)據(jù)指針、ISP等多種功能。

  特別是雙數(shù)據(jù)指針,能給編程帶來很大的便利。在51系列中,數(shù)據(jù)指針DPTR是片內(nèi)與片外的數(shù)據(jù)存儲器打交道的主要途徑(由片外數(shù)據(jù)存儲器讀入 片內(nèi)累加器A或由片內(nèi)累加器A 寫入片外數(shù)據(jù)存儲器),也是程序存儲器與累加器A之間的數(shù)據(jù)傳送的必由之路。由于頻繁的數(shù)據(jù)交換,特別是數(shù)據(jù)塊的搬運和比較,數(shù)據(jù)指針非常吃緊,它需要不 斷地實施現(xiàn)場保護與還原,不光編程變得復雜,而且運行速度也減慢。而當采用兩個數(shù)據(jù)指針時,可以各負其責,互不相擾,輕松地完成上述過程。兩個數(shù)據(jù)指針的 選取取決于特殊功能寄存器AUXR1的第D0位DPS。當DPS為0時,選中數(shù)據(jù)指針DPTR0(復位時DPS也為0);DPS為1時,選中數(shù)據(jù)指針 DPTR1。DPS位不能位尋址,故不能進行布爾操作,但由于AUXR1的D1位被強制為邏輯“0”,不可能發(fā)生由D0位向D1位進位之可能,因而可以通 過對AUXR1進行增1來使D0位由0變?yōu)?或由1變?yōu)?,從而達到雙數(shù)據(jù)指針的快速切換的目的,如:

  例3:
  MOVAUXR1,#0 ; DPS為0,DPTR0有效
   ……
  INC AUXR1 ; DPS為1,DPTR1有效
   ……
   INC AUXR1 ; DPS為0,DPTR0有效
   ……

  ISP功能能實現(xiàn)在系統(tǒng)可編程,可以省去通用的編程器,單片機在用戶板上即可下載和燒錄用戶程序,而無需將單片機從生產(chǎn)好的產(chǎn)品上取下。未定型 的程序還可以邊生產(chǎn)邊完善,加快了產(chǎn)品的開發(fā)速度,減少了新產(chǎn)品因軟件缺陷帶來的風險。由于可以將程序下載并觀看運行結(jié)果,故也可以不用仿真器。

   單片機的提速運行、雙數(shù)據(jù)指針及ISP功能并非是W77系列所特有的,一些新的型號的51系列產(chǎn)品大都有該功能,如Philips的51LPC系列、 AT89系列中的某些型號、STC89C系列等等。有的單片機還附有A/D、D/A轉(zhuǎn)換、片內(nèi)EEPROM數(shù)據(jù)存儲器、PWM輸出、I2C總線、上電復位 檢測、欠壓復位檢測等等,這些新系列的單片機,它們都兼容8051的指令系統(tǒng)。增強功能的實現(xiàn),大都是由片內(nèi)新增的特殊功能寄存器來進行設(shè)置,這些寄存器 被安排在片內(nèi)特殊功能寄存器區(qū)間(80~FFH)的預留地址上。

  比較有代表性的產(chǎn)品還有STC89C51RC、C8051F331/330等等�?梢赃@么說,新的51產(chǎn)品幾乎可以涵蓋所有新的功能。由于新型號的芯片種類太多,此處不可能一一列舉,讀者可根據(jù)使用的需求查閱相關(guān)的資料.

 2.PIC系列

  PIC單片機系列是美國微芯公司(Microship)的產(chǎn)品,是當前市場份額增長最快的單片機之一。CPU采用RISC結(jié)構(gòu),分別有33、 35、58條指令(視單片機的級別而定),屬精簡指令集。而51系列有111條指令,AVR單片機有118 條指令,都比前者復雜。采用Harvard雙總線結(jié)構(gòu),運行速度快(指令周期約160~200ns),它能使程序存儲器的訪問和數(shù)據(jù)存儲器的訪問并行處 理,這種指令流水線結(jié)構(gòu),在一個周期內(nèi)完成兩部分工作,一是執(zhí)行指令,二是從程序存儲器取出下一條指令,這樣總的看來每條指令只需一個周期(個別除外), 這也是高效率運行的原因之一。此外,它還具有低工作電壓、低功耗、驅(qū)動能力強等特點。PIC系列單片機共分三個級別,即基本級、中級、高級。其中又以中級 的PIC16F873(A)、PIC16F877 (A) 用的最多,本文以這兩種單片機為例進行說明。這兩種芯片除了引出腳不同外(PIC16F873(A)為28腳的PDIP或SOIC封 裝;PIC16F877(A)為40腳的PDIP或44腳的PLCC/QFP封裝),其他的差別并不很蟆?

  PIC系列單片機的I/O 口是雙向的,其輸出電路為CMOS互補推挽輸出電路。I/O腳增加了用于設(shè)置輸入或輸出狀態(tài)的方向寄存器(TRISn , 其中n對應(yīng)各口,如A、B、C、D、E等),從而解決了51系列I/O腳為高電平時同為輸入和輸出的狀態(tài)。當置位1時為輸入狀態(tài),且不管該腳呈高電平或低 電平,對外均呈高阻狀態(tài);置位0時為輸出狀態(tài),不管該腳為何種電平,均呈低阻狀態(tài),有相當?shù)尿?qū)動能力,低電平吸入電流達25mA,高電平輸出電流可達 20mA。相對于51系列而言,這是一個很大的優(yōu)點,它可以直接驅(qū)動數(shù)碼管顯示且外電路簡單。它的A/D為10位,能滿足精度要求。具有在線調(diào)試及編程 (ISP)功能。

  該系列單片機的專用寄存器(SFR)并不像51系列那樣都集中在一個固定的地址區(qū)間內(nèi)(80~FFH),而是分散在四個地址區(qū)間內(nèi),即存儲體 0(Bank0: 00~7FH)、存儲體1(Bank1 :80~FFH)、存儲體2(Bank2 :100~17FH)、存儲體3(Bank3 :180~1FFH)。只有5個專用寄存器PCL、STATUS、FSR、PCLATH、 INTCON在4個存儲體內(nèi)同時出現(xiàn)。在編程過程中,少不了要與專用寄存器打交道,得反復地選擇對應(yīng)的存儲體,也即對狀態(tài)寄存器STATUS的第6位 (RP1)和第5位(RP0)置位或清零。如:

  例4:
  CLRFSTATUS ;清零RP1, RP0。選擇存儲體0
   ……
  BSF STATUS,RP0;置位RP0。選擇存儲體1
   ……
  BCF STATUS,RP0;清零RP0。選擇存儲體0
   ……

  這多少給編程帶來了一些麻煩。對于上述的單片機,它的位指令操作通常限制在存儲體0區(qū)間(00~7FH)。

  數(shù)據(jù)的傳送和邏輯運算基本上都得通過工作寄存器W(相當于51系列的累加器A)來進行,而51系列的還可以通過寄存器相互之間直接傳送 (如:MOV 30H,20H;將寄存器20H的內(nèi)容直接傳送至寄存器30H中),因而PIC單片機的瓶頸現(xiàn)象比51系列還要嚴重,這在編程中很有感受。

3.AVR系列

  AVR單片機是Atmel公司推出的較為新穎的單片機,其顯著的特點為高性能、高速度、低功耗。它取消機器周期,以時鐘周期為指令周期,實行流 水作業(yè)。AVR單片機指令以字為單位,且大部分指令都為單周期指令。而單周期既可執(zhí)行本指令功能,同時完成下一條指令的讀取。通常時鐘頻率用 4~8MHz,故最短指令執(zhí)行時間為 250~125ns。該系列的型號較多,但可用下面三種為代表:AT90S2313(簡裝型)、AT90S8515、AT90S8535(帶A/D轉(zhuǎn) 換)。

  通用寄存器一共32個(R0~R31),前16個寄存器(R0~R15)都不能直接與立即數(shù)打交道,因而通用性有所下降。而在51系列中,它所有的通用寄存器(地址00~7FH)均可以直接與立即數(shù)打交道,顯然要優(yōu)于前者。

  AVR系列沒有類似累加器A的結(jié)構(gòu),它主要是通過R16~R31寄存器來實現(xiàn)A的功能。在AVR中,沒有像51系列的數(shù)據(jù)指針DPTR,而是由 X(由R26、R27組成)、Y(由R28、R29組成)、Z(由R30、R31組成)三個16位的寄存器來完成數(shù)據(jù)指針的功能(相當于有三組 DPTR),而且還能作后增量或先減量等的運行,如:

  例5:
  LDRd, X ;將X所指的地址的內(nèi)容裝入寄存器Rd中。
  LDRd,Y+;將Y所指的地址的內(nèi)容裝入寄存器Rd
   中,然后Y的地址增1。
  LDRd,-X ;將X的地址減1所指的地址的內(nèi)容裝入
   寄存器Rd中。

  在51系列中,所有的邏輯運算都必須在A中進行;而AVR卻可以在任兩個寄存器之間進行,省去了在A中的來回折騰,這些都比51系列強。

  AVR的專用寄存器集中在00~3F地址區(qū)間,無需像PIC那樣得先進行選存儲體的過程,使用起來比PIC方便。AVR的片內(nèi)RAM的地址區(qū)間 為0060~$00DF(AT90S2313) 和 0060~025F(AT90S8515、AT90S8535),它們占用的是數(shù)據(jù)空間的地址,這些片內(nèi)RAM僅僅是用來存儲數(shù)據(jù)的,通常不具備通用寄存 器的功能。當程序復雜時,通用寄存器R0~R31就顯得不夠用;而51系列的通用寄存器多達128個(為AVR的4倍),編程時就不會有這種感覺。

  AVR的I/O腳類似PIC,它也有用來控制輸入或輸出的方向寄存器,在輸出狀態(tài)下,高電平輸出的電流在10mA左右,低電平吸入電流20mA。雖不如PIC,但比51系列強。

  以上的三種AVR型號其管腳與對應(yīng)的51系列兼容,如AT90S2313與51系列的AT89C2051的管腳兼容(PDIP-20腳),AT90S8515、AT90S8535與51系列的AT89C51兼容(PDIP-40腳)等等。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:10504 發(fā)表于 2009-4-1 21:13 | 只看該作者
 

為什么選用AVR單片機?選自AVR研討會演講提綱!

(1) 為什么選用AVR單片機? Flash程序存儲器可擦寫1000次以上,不再有報廢品產(chǎn)生。PIC 有的是OTP,只能燒錄一次。AVR程序存儲器數(shù)據(jù)為16位組織,也可按8位理解。PIC是12/14位程序 存儲器,作寄存器轉(zhuǎn)移和算術(shù)、邏輯運算帶來不便。

(2) 為什么選用AVR單片機? 高速度(50ns)、低功耗!硬件應(yīng)用Harward結(jié)構(gòu),具有預取指令功能, 使得指令可以在一個時鐘周期內(nèi)執(zhí)行。PIC要4個時鐘周期執(zhí)行一條指令。MSC-51要12個時鐘周期 執(zhí)行一條指令。

(3) 為什么選用AVR單片機? 超功能精簡指令!具有32個通用工作寄存器(相當于8051中的32個累 加器,克服了單一累加器數(shù)據(jù)處理造成的瓶頸現(xiàn)象),有128B~4KB個SRAM,可靈活使用指令運算。

(4) 為什么選用AVR單片機? 工業(yè)級產(chǎn)品!具有大電流(灌電流)10~20mA或40mA(單一輸出),可直 接驅(qū)動SSR或繼電器;有看門狗定時器(WDT),安全保護,防止程序走飛,提高產(chǎn)品的抗干擾能力。

(5) 為什么選用AVR單片機? 程序?qū)懭肟梢圆⑿袑懭?用萬用編程序器),也可用串行在線ISP擦 寫。也就是說不必將IC拆下拿到萬用編程上燒錄,而可直接在電路板上進行程序修改、燒錄等操 作,方便產(chǎn)品現(xiàn)場升級。有ISP、JTAG及自編功能,這是今后單片機編程的發(fā)展方向 。

(6) 為什么選用AVR單片機? AVR的I/O口是真正的I/O口,能正確反映I/O口的真實情況。I/O口 有輸入/輸出, 三態(tài)高阻輸入,也可設(shè)定內(nèi)部拉高電阻作輸入端的功能,便于作各種應(yīng)用特性所需 (多功能I/O口)

(7) 為什么選用AVR單片機? 高度保密(LOCK)!

回復

使用道具 舉報

板凳
ID:25223 發(fā)表于 2010-7-25 15:00 | 只看該作者
領(lǐng)教了,謝謝!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表