新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 牛人業(yè)話 > 向51單片機(jī)說(shuō)再見(jiàn)

向51單片機(jī)說(shuō)再見(jiàn)

作者:jobs 時(shí)間:2014-08-18 來(lái)源:電子產(chǎn)品世界 收藏

  最近在訪問(wèn)論壇時(shí)看到好多人在討論,有人說(shuō)應(yīng)該學(xué)習(xí),它是基礎(chǔ);也有人說(shuō)是過(guò)時(shí)的產(chǎn)品,現(xiàn)在產(chǎn)品應(yīng)用已經(jīng)不再選用了,也就失去了學(xué)習(xí)的必要性。從最初的51單片機(jī)學(xué)起,工作多年后現(xiàn)在基本應(yīng)用32位MCU做項(xiàng)目,筆者覺(jué)得是時(shí)候向51單片機(jī)說(shuō)再見(jiàn)了。

本文引用地址:http://m.butianyuan.cn/article/261862.htm

  51單片機(jī)的輝煌過(guò)去

  51單片機(jī)指MCS-51系列單片機(jī),指令集。由Intel公司開(kāi)發(fā),其結(jié)構(gòu)增加了如乘(MUL)、除(DIV)、減(SUBB)、比較(CMP)、16位數(shù)據(jù)指針、布爾代數(shù)運(yùn)算等指令,以及串行通信能力和5個(gè)中斷源,內(nèi)有128個(gè)RAM單元及4K的ROM。其代表型號(hào)是ATMEL公司的AT89系列,它廣泛應(yīng)用于工業(yè)測(cè)控系統(tǒng)之中。目前國(guó)內(nèi)的51單片機(jī)市場(chǎng)主要為國(guó)產(chǎn)宏晶的產(chǎn)品STC系列其號(hào)稱低功耗,穩(wěn)定與廉價(jià)的特點(diǎn)。

  學(xué)習(xí)51單片機(jī)的誤區(qū)

  誤區(qū)1:51單片機(jī)是學(xué)習(xí)的基礎(chǔ)

  “51單片機(jī)是學(xué)習(xí)的基礎(chǔ)”這句話本身并沒(méi)有錯(cuò)。在我讀本科的時(shí)候,當(dāng)時(shí)它無(wú)疑是學(xué)習(xí)的基礎(chǔ)——畢竟那時(shí)沒(méi)有更高級(jí)的單片機(jī)可以供使用,國(guó)內(nèi)更沒(méi)有更高級(jí)的教材供參考,老師的水平也是參差不齊,而51單片機(jī)正符合這樣的需求,不僅有大量的成型的教材,廣泛的示例,當(dāng)時(shí)工作的實(shí)際項(xiàng)目也是51單片機(jī)為主,于是51單片機(jī)理所當(dāng)然的成為當(dāng)時(shí)的學(xué)習(xí)基礎(chǔ)。要知道筆者讀本科的時(shí)候是2004年,即10年前的東西。按照莫爾定律,電子行業(yè)每18個(gè)月更新?lián)Q代,10年前的技術(shù)現(xiàn)在已經(jīng)更新了6代了——事實(shí)也確實(shí)如此。

  目前32位Crtex-M系列單片機(jī)的各種教程已經(jīng)普及,其學(xué)習(xí)的難度不斷降低。以意法半導(dǎo)體公司的STM32F系列單片機(jī)來(lái)說(shuō),意法半導(dǎo)體在推廣產(chǎn)品初期大量贈(zèng)送了核心板。免費(fèi)贈(zèng)送的核心板不僅有流行的32位-M系列微處理器,更在板上集成在線調(diào)試器。隨機(jī)附贈(zèng)的光盤(pán)或者鏈接更是提供了大量的示例源代碼。我們只需要安裝開(kāi)發(fā)環(huán)境即可直接編譯與下載調(diào)試。這時(shí),如果再說(shuō)51單片機(jī)是學(xué)習(xí)嵌入式的基礎(chǔ)肯定是不合時(shí)宜了。

  誤區(qū)2:51單片機(jī)可以學(xué)習(xí)寄存器的操作

  51單片機(jī)可以學(xué)習(xí)寄存器的操作,這一點(diǎn)兒是不容置疑的。我們分析一下其更深層的原因。在MSC-51單片機(jī)的編程環(huán)境中,最初是以匯編語(yǔ)言為主要編程語(yǔ)言。要知道匯編語(yǔ)言就是直接操作寄存器的,匯編語(yǔ)言是無(wú)法做到C語(yǔ)言的函數(shù)調(diào)用與封裝的。如果說(shuō)51單片機(jī)是以操作寄存器為優(yōu)點(diǎn),我覺(jué)得更應(yīng)該說(shuō)51單片機(jī)操作寄存器是一種無(wú)奈,是只有一個(gè)選項(xiàng)的選擇題。

  我們現(xiàn)在的-M系列單片機(jī)就無(wú)法學(xué)習(xí)寄存器了嗎?顯然不是。在硬件設(shè)計(jì)中,硬件的操作方式就是寄存器的操作,但是其實(shí)現(xiàn)卻是可以不同。各微處理器提供的C語(yǔ)言庫(kù)函數(shù)包其實(shí)質(zhì)就是將操作寄存器的指令進(jìn)行了C語(yǔ)言環(huán)境下的封裝。我們這里用ST官方庫(kù)函數(shù)舉一個(gè)示例:

  void USART_Init (USART1, *USART_InitStruct);//實(shí)現(xiàn)串口1的初始化,簡(jiǎn)單明了,無(wú)需注釋

  筆者在這里也想舉一個(gè)示例來(lái)說(shuō)明寄存器操作的步驟,但是操作寄存器實(shí)在是太復(fù)雜了,筆者不想去浪費(fèi)時(shí)間去整理了。

  通俗易懂的C語(yǔ)言,方便移植的C語(yǔ)言與硬件平臺(tái)相對(duì)應(yīng)的編譯器聯(lián)合,就能完成硬件的操作。有了簡(jiǎn)單、方便的方式,我們?yōu)槭裁催€要考慮繁瑣,復(fù)雜的匯編語(yǔ)言與寄存器操作呢?

  誤區(qū)3:51單片機(jī)的成本低

  成本都是左右應(yīng)用的主要因素。項(xiàng)目的立項(xiàng)主要考慮成本,銷售的定價(jià)主要成本。低成本的方案才會(huì)在市場(chǎng)里占有優(yōu)勢(shì)??墒?,51單片機(jī)真就是最低成本了嗎?非也?,F(xiàn)在按照功能劃分,部分-m0系列的32位單片機(jī)的成本也能做3元人民幣。其性能已經(jīng)是51單片機(jī)的好幾倍了,而且更容易開(kāi)發(fā)與維護(hù)。

  還有另外一個(gè)成本:開(kāi)發(fā)難度成本。51單片機(jī)不支持在線調(diào)試,有一些問(wèn)題在編程初期沒(méi)有發(fā)現(xiàn),只有與硬件連接后才會(huì)顯現(xiàn)出現(xiàn)來(lái),例如控制操作中經(jīng)常用到的延時(shí)。這時(shí)在線調(diào)試的巨大優(yōu)勢(shì)就體現(xiàn)出來(lái)了,它可以極其方便的查看微處理器當(dāng)時(shí)的狀態(tài),使得問(wèn)題的分析變得簡(jiǎn)單而透明。從而,有效降低開(kāi)發(fā)的難度,縮短開(kāi)發(fā)周期,節(jié)約開(kāi)發(fā)資金。

  誤區(qū)4:51單片機(jī)入門(mén)簡(jiǎn)單

  51單片機(jī)入門(mén)簡(jiǎn)單?我對(duì)于這個(gè)觀點(diǎn)持保留意見(jiàn)。想要入門(mén)51單片機(jī),我不僅熟悉該款單片機(jī)外設(shè),而且還要充分了解寄存器的某位的意義。對(duì)于時(shí)鐘,定時(shí)器的配置必須了如指掌。這樣無(wú)疑會(huì)增大我的學(xué)習(xí)難度與熟悉的周期。如果我們使用32位單片機(jī)的庫(kù)函數(shù)模式,我們只需要具備C語(yǔ)言的知識(shí),了解API函數(shù),直接看已經(jīng)注釋過(guò)的寄存器意思即可,不需要了解其底層的硬件實(shí)現(xiàn),更不需要了解某個(gè)寄存器某個(gè)指定位的意義了。這樣,減少了我的工作量,從而降低了開(kāi)發(fā)難度。你說(shuō)是51單片機(jī)入門(mén)簡(jiǎn)單,還是32位Cortex內(nèi)核微處理器簡(jiǎn)單?

  嵌入式系統(tǒng)的學(xué)習(xí)是非??菰锒钟刑魬?zhàn)性的事情。由于與實(shí)際的硬件直接連接,不僅要考慮編寫(xiě)的正確性,而且還要考慮硬件的可靠性。這時(shí),簡(jiǎn)單、高效的軟件編寫(xiě)就變向的降低我們開(kāi)發(fā)難度與風(fēng)險(xiǎn)。51單片機(jī)已經(jīng)是明日黃花,向前看才是發(fā)展。是時(shí)候向51單片機(jī)說(shuō)再見(jiàn)了!

51單片機(jī)相關(guān)文章:51單片機(jī)教程


c語(yǔ)言相關(guān)文章:c語(yǔ)言教程


單片機(jī)相關(guān)文章:單片機(jī)教程


單片機(jī)相關(guān)文章:單片機(jī)視頻教程


單片機(jī)相關(guān)文章:單片機(jī)工作原理




關(guān)鍵詞: 51 單片機(jī) CICS Cortex

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉