1、辯證地看待51內(nèi)核單片機
要回答這個問題,首先需要來看一下傳統(tǒng)的51單片機。在有些文章或者書本中,對于51單片機的態(tài)度是全面否定的,一旦聽到某人要學(xué)習(xí)或者使用51單片機,則有種“群起而笑之”之勢,覺得其主頻低,外設(shè)少,技術(shù)老,然后以這些理由勸退要去學(xué)習(xí)51單片機的同學(xué)。其實,這個態(tài)度是非常武斷的,必須被批判,雖然現(xiàn)在32位的單片機遍地都是,但是對于一些成本為首位的產(chǎn)品,8位機無疑還是有很大的價格優(yōu)勢的。而市面上最多的8位單片機產(chǎn)品,內(nèi)核架構(gòu)最普遍的還是51。批判51單片機不行的人,出發(fā)點無疑就是外設(shè)少,外部晶振8分頻->12分頻(筆誤)的硬傷這兩點,然而這兩點只不過是它們印象中的十幾年前的51單片機產(chǎn)品。時代在發(fā)展,51單片機也在發(fā)展,為了區(qū)別那些全盤否定51單片機的人口中的“51單片機”,不斷發(fā)展的51單片機一般被稱為“增強型51單片機”。
接下來,我們用辯證的眼光,再來審視一下現(xiàn)在的“增強型51單片機”。
“增強型51單片機”保留了51單片機開發(fā)簡單,內(nèi)部結(jié)構(gòu)簡單,價格低廉等優(yōu)點,彌補了傳統(tǒng)51單片機的一些不足,增加了主流的外設(shè)資源。介于此,“增強型51單片機”的性價比到目前為止還是非常突出,新手上手程度也很簡單,有點51單片機基礎(chǔ)的,稍微看一下數(shù)據(jù)手冊就可以直接使用。
但是,無論利用何種形式去增強51單片機,51單片機結(jié)構(gòu)的一些致命硬傷是永遠存在的,比如用于操作特殊功能寄存器的尋址,在C語言開發(fā)中只能利用C51獨有的“sfr”關(guān)鍵詞去定義特殊功能寄存器,而“sfr”又不是標(biāo)準(zhǔn)C中的關(guān)鍵詞,因此51單片機的程序有一部分是無法直接移植到其他平臺上去的。中斷關(guān)鍵詞“interrupt”也是一樣。
辯證地看待其優(yōu)缺點,“增強型51單片機”非常值得花時間學(xué)一學(xué)。
2、發(fā)展的眼光看51單片機
我們所說的51單片機,用現(xiàn)在比較潮流的說法應(yīng)該是“MCS51內(nèi)核”的單片機。如果這么分類的話,51單片機最早的型號其實是8031單片機,這個單片機的內(nèi)核和現(xiàn)在的“51內(nèi)核”基本一致,不過它是一個內(nèi)部沒有存儲器(ROM)的芯片,在使用的時候,需要外部擴展存儲器,非常麻煩。如圖1所示。
圖1 51單片機外部存儲器擴展示意
等到后來的8051單片機,就開始在內(nèi)部繼承ROM,這樣可以減少由于外擴存儲器帶來的煩惱,從而簡化了電路結(jié)構(gòu),降低了元器件成本。
最早的51單片機存儲器是EPROM,因此它是需要通過特殊的編程器來燒寫程序,而程序擦除時,也需要將單片機曝光在光線下半小時以上才能擦除,而這種EPROM存儲程序不穩(wěn)定,擦寫次數(shù)也有限,其外形如圖2所示。
圖2 EPROM的51單片機
為了解決這個問題,F(xiàn)LASH等先進的存儲器技術(shù)被用到了51單片機上,因此實現(xiàn)了可重復(fù)多次擦寫,甚至后面多種在應(yīng)用編程(IAP),在系統(tǒng)編程(ISP)方式也被用到了51單片機上,現(xiàn)在的51單片機,利用一根串口線就可以實現(xiàn)程序的燒寫,非常方便。
51單片機的程序燒寫問題被flash解決了,后面隨著應(yīng)用程序的需求,51單片機的程序開發(fā)難度越來越大,因此一些廠商推出了一些可以在線調(diào)試的芯片,在程序開發(fā)的時候,利用帶調(diào)試功能的51單片機進行程序開發(fā),做產(chǎn)品時,將調(diào)試好的程序燒錄到51單片機即可。
后來的一些增強型51單片機,可以直接支持程序調(diào)試,如我們使用的STC8A,可以直接使用一根串口線和Keil軟件進行程序調(diào)試。如圖3所示。
圖3 程序在線調(diào)試界面
傳統(tǒng)的51單片機,內(nèi)存只有幾百個字節(jié),程序存儲器也小的可憐,而且其外設(shè)支持非常有限,只支持2個外部中斷,2個定時計數(shù)器,1個串口,這樣的芯片,放到現(xiàn)在來看,根本滿足不了任何應(yīng)用。盡管如IIC,SPI的外設(shè)我們都可以使用IO去模擬,但是模擬外設(shè)的程序會占據(jù)大量的代碼空間,同時,為了滿足時序需求所增加的延遲,也浪費了寶貴的CPU資源。為了解決這個問題,目前的增強型51單片機外設(shè)變得琳瑯滿目,如STC8A的內(nèi)存最大可到到8K byte,程序存儲器最大可達到64K byte,而其外設(shè)資源有5個外部中斷,5個定時計數(shù)器,4個高速串口,4組16位的PCA模塊,8組15位增強型帶死區(qū)控制PWM,SPI,IIC,12位精度15通道的ADC(采樣率800K),GPIO支持準(zhǔn)雙向,強推挽,開漏,高阻等模式。并且內(nèi)置最高24MHz的高精度RC振蕩器。這個配置放在目前的8位機市場,甚至是低端32位機市場,也拿得出手。具體如圖4所示。
圖4 STC8A的配置
除此之外,51單片機特有的12分頻瓶頸也早已被彌補,現(xiàn)在的51單片機更多的是1T的單片機。
用發(fā)展的眼光來看,增強型51單片機經(jīng)過國內(nèi)外四十幾年的發(fā)展早就與時俱進,滿足了市場需求,經(jīng)住了產(chǎn)品考驗。在過去16位單片機,如今32位單片機輪番擠壓下,還能保留自己的市場地位。