本人從事單片機應(yīng)用系統(tǒng)的開發(fā)已有多年,使用過多種型號的PIC單片機,深感PIC單片機使用起來確實很方便:
1、 PIC單片機采用精簡指令集,中檔產(chǎn)品僅需35條指令,入門門檻低,而在使用過程中絕不會感到不方便。
2、PIC單片機的數(shù)據(jù)線和指令線各自獨立,代碼效率高,是傳統(tǒng)51系列單片機的2-3倍,除幾個跳轉(zhuǎn)類指令外均為單周期指令,在計算延時時間時非常方便。
3、PIC單片機外圍接口十分豐富,能滿足絕大部分應(yīng)用系統(tǒng)的需求;比如PIC16F877A包含8路ADC,1個CCP、PWM、USART、SSP、I2C/SPI,3個定時/計數(shù)器,1個硬件WDT等接口,8K FLASH程序存儲器、256字節(jié)EEPROM,能滿足較復(fù)雜測控系統(tǒng)的要求;有的還集成了LCD驅(qū)動器、CAN控制器和無線收發(fā)模塊,還有專門針對電機控制的芯片,內(nèi)含多路高精度PWM,非常適合對電機進(jìn)行調(diào)壓調(diào)頻控制。
4、PIC單片機產(chǎn)品型號非常豐富,引腳數(shù)從8-128,外圍接口配置合理,對應(yīng)不同用途可非常方便地找到匹配的型號,絕不會造成資源浪費。
PIC8位單片機具有指令少、執(zhí)行速度快等優(yōu)點,其主要原因是PIC系列單片機在結(jié)構(gòu)上與其它單片機不同。該系列單片機引入了原用于小型計算機的雙總線和兩級指令流水結(jié)構(gòu)。這種結(jié)構(gòu)與一般采用CISC(復(fù)雜指令集計算機)的單片機在結(jié)構(gòu)上是有不同的。指令總線為什么不用八位,而要增加位數(shù)呢?這是因為指令的位數(shù)多,則每條指令包含的信息量就大,這種指令的功能就強。一條12位、14位或16位的指令可能會具有兩條八位指令的功能。因此PIC系列單片機的指令與CISC結(jié)構(gòu)的單片機指令相比,前者的指令總數(shù)要少得多(即RISC指令集)。
運行速度快(指令周期約160~200nS),它能使程序存儲器的訪問和數(shù)據(jù)存儲器的訪問并行處理,這種指令流水線結(jié)構(gòu),在一個周期內(nèi)完成兩部分工作,一是執(zhí)行指令,二是從程序存儲器取出下一條指令,這樣總的看來每條指令只需一個周期(個別除外),這也是高效率運行的原因之一。此外,它還具有低工作電壓、低功耗、驅(qū)動能力強等特點。
PIC系列單片機的I/O口是雙向的,其輸出電路為CMOS互補推挽輸出電路。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)試及編程功能。
該系列單片機的專用寄存器)并不像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)置位或清零。這多少給編程帶來了一些麻煩。
對于上述的單片機,它的位指令操作通常限制在存儲體0區(qū)間(00~7FH)。數(shù)據(jù)的傳送和邏輯運算基本上都得通過工作寄存器w(相當(dāng)于5l系列的累加器A)來進(jìn)行,而51系列的還可以通過寄存器相互之間直接傳送(如:MOV30H,20H;將寄存器20H的內(nèi)容直接傳送至寄存器30H中),因而PIC單片機的瓶頸現(xiàn)象比51系列還要嚴(yán)重,這在編程中很有感受。