<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > C51、PIC和AVR單片機性能比較

C51、PIC和AVR單片機性能比較

作者: 時(shí)間:2016-10-07 來(lái)源:網(wǎng)絡(luò ) 收藏

  傳統51:適合菜鳥(niǎo)入門(mén),容易上手,價(jià)格一般(從性?xún)r(jià)比方面說(shuō))。IDE環(huán)境推薦keil。

本文引用地址:http://dyxdggzs.com/article/201610/310904.htm

  缺點(diǎn):解密容易,一般功能也有,但AD、eeprom等功能要靠擴展,增加硬件和軟件負擔。

  :pic的好處就是各個(gè)型號的兼容性強,學(xué)好了16f877a,16系列的就OK了,別的型號要用的時(shí)候拿出2分鐘看看數據手冊就行了。12系列、16系列、18系列也是充分的向下兼容。功能全,型號多,適于選型分析,抗干擾能力強。

  缺點(diǎn):解密容易,單片機價(jià)格貴(從性?xún)r(jià)比方面說(shuō))。

  IDE環(huán)境:推薦picc+mplab。

  avr mega系列:價(jià)格便宜(從性?xún)r(jià)比方面說(shuō)),硬件結構適合C語(yǔ)言編程,功能齊全,不容易解密??垢蓴_能力強。型號之間兼容性一般。應該說(shuō)是比較滿(mǎn)意的片子了。

  缺點(diǎn):功能寄存器多,不適合初學(xué)者——通過(guò)個(gè)人努力此缺點(diǎn)就不是缺點(diǎn)了。

  推薦CVAVR+studio。其實(shí)icc 、gcc也不錯,大家自己斟酌。

  stc 51系列:價(jià)格最便宜(從性?xún)r(jià)比方面說(shuō)),功能多,抗干擾能力最強,eeprom大,串口編程很方便(無(wú)論是對于初學(xué)者還是產(chǎn)品開(kāi)發(fā)調試),出廠(chǎng)時(shí)程序引導區就已經(jīng)加密,并且stc解密的市面價(jià)格在1.5w到2.5w之間,可見(jiàn)解密難度大,在一定程度上保護了單片機工程師的利益和產(chǎn)品開(kāi)發(fā)商的利益。生產(chǎn)時(shí)就已經(jīng)考慮到與傳統51的兼容問(wèn)題,兼容做的很好,又增加了許多功能,軟復位功能我比較喜歡。

  缺點(diǎn):資料就是宏晶網(wǎng)上的資料,資料少,不適合初學(xué)者——我指學(xué)習它自己增加的功能。

  IDE:keil。

  頭文件:宏晶網(wǎng)站上有,或者用at89x52.h,新的寄存器自己定義一下就行或者自己寫(xiě)一個(gè)頭文件(推薦)。

  ---------------------------------------------------------------------------------------------------------------------------------------------

  八位單片機由于內部構造簡(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)品AT89、AT89C52 ……等成為了當今最流行的八位單片機。

  51系列的I/O腳的設置和使用非常簡(jiǎn)單,當該腳作輸入腳使用時(shí),只須將該腳設置為高電平(復位時(shí),各I/O口均置高電平)。當該腳作輸出腳使用時(shí),則為高電平或低電平均可。低電平時(shí),吸入電流可達20mA,具有一定的驅動(dòng)能力;而為高電平時(shí),輸出電流僅數十μA甚至更小(電流實(shí)際上是由腳的上拉電流形成的),基本上沒(méi)有驅動(dòng)能力。其原因是高電平時(shí)該腳也同時(shí)作輸入腳使用,而輸入腳必須具有高的輸入阻抗,因而上拉的電流必須很小才行。作輸出腳使用,欲進(jìn)行高電平驅動(dòng)時(shí),得利用外電路來(lái)實(shí)現(見(jiàn)附圖),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ú)輸出能力,可謂有利有弊。故其他系列的單片機(如系列、AVR系列等)對I/O口進(jìn)行了改進(jìn),增加了方向寄存器以確定輸入或輸出,但使用也變得復雜。

  一些簡(jiǎn)裝的51產(chǎn)品也相應出現,如Atmel公司的AT89C1051、AT89C2051、AT89C4051等(閃速存儲器分別為1K、2K、4K等,但不能外接數據存儲器),指令系統與AT89完全兼容,但引腳均為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有效

  ……

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

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

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

  2.PIC系列

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

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

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

  例4:

  CLRFSTATUS ;清零RP1, RP0。選擇存儲體0

  ……

  BSF STATUS,RP0;置位RP0。選擇存儲體1

  ……

  BCF STATUS,RP0;清零RP0。選擇存儲體0

  ……

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

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

  3.AVR系列

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

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

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

  例5:

  LDRd, X ;將X所指的地址的內容裝入寄存器Rd中。

  LDRd,Y+;將Y所指的地址的內容裝入寄存器Rd中,然后Y的地址增1。

  LDRd,-X ;將X的地址減1所指的地址的內容裝入寄存器Rd中。

  在51系列中,所有的邏輯運算都必須在A(yíng)中進(jìn)行;而AVR卻可以在任兩個(gè)寄存器之間進(jìn)行,省去了在A(yíng)中的來(lái)回折騰,這些都比51系列強。

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

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

  以上的三種AVR型號其管腳與對應的51系列兼容,如AT90S2313與51系列的AT89C2051的管腳兼容(PDIP-20腳),AT90S8515、AT90S8535與51系列的AT89C51兼容(PDIP-40腳)等等。



關(guān)鍵詞: C51 PIC

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>