在剛接觸單片機的初期,有許多人認為單片機非常難學,有太多的指令,太多的語法,還要會硬件,其實這些都不是問題,下面和大家聊聊,學習單片機,有哪些誤區?如何走出這些誤區?
誤區1:51單片機入門簡單
51單片機入門簡單?我對于這個觀點持保留意見。想要入門51單片機,我不僅熟悉該款單片機外設,而且還要充分了解寄存器的某位的意義。對于時鐘,定時器的配置必須了如指掌。這樣無疑會增大我的學習難度與熟悉的周期。如果我們使用32位單片機的庫函數模式,我們只需要具備C語言的知識,了解API函數,直接看已經注釋過的寄存器意思即可,不需要了解其底層的硬件實現,更不需要了解某個寄存器某個指定位的意義了。這樣,減少了我的工作量,從而降低了開發難度。你說是51單片機入門簡單,還是32位Cortex內核微處理器簡單?
誤區2:51單片機的成本低
我是一個務實的人,正做過一個產品就知道,成本核算也要站很大一塊。舉個例子我之前做了一個多軸數控設備,先不談算法的事如果你用樹莓派去做,同樣的功能一個樹莓派的板子可能要200元,如果用stm32做自己畫板子30塊就能搞定,要是你做產品你會選哪種方式呢。
成本都是左右應用的主要因素。項目的立項主要考慮成本,銷售的定價主要成本。低成本的方案才會在市場里占有優勢。可是,51單片機真就是最低成本了嗎?非也。現在按照功能劃分,部分Cortex-m0系列的32位單片機的成本也能做3元人民幣。其性能已經是51單片機的好幾倍了,而且更容易開發與維護。
還有另外一個成本:開發難度成本。51單片機不支持在線調試,有一些問題在編程初期沒有發現,只有與硬件連接后才會顯現出現來,例如控制操作中經常用到的延時。這時在線調試的巨大優勢就體現出來了,它可以極其方便的查看微處理器當時的狀態,使得問題的分析變得簡單而透明。從而,有效降低開發的難度,縮短開發周期,節約開發資金。
誤區3:51單片機可以學習寄存器的操作
寄存器不用死記硬背,有著10年老鳥經驗的我,連一個寄存器都記不住。需要配置寄存器的時候,直接在網上或者書本上參考別人現成的配置程序是上策,查找芯片數據手冊是中策,死記硬背寄存器是最最下策。
51單片機可以學習寄存器的操作,這一點兒是不容置疑的。我們分析一下其更深層的原因。在MSC-51單片機的編程環境中,最初是以匯編語言為主要編程語言。要知道匯編語言就是直接操作寄存器的,匯編語言是無法做到C語言的函數調用與封裝的。如果說51單片機是以操作寄存器為優點,我覺得更應該說51單片機操作寄存器是一種無奈,是只有一個選項的選擇題。
筆者在這里也想舉一個示例來說明寄存器操作的步驟,但是操作寄存器實在是太復雜了,筆者不想去浪費時間去整理了。
誤區4:c語言需要學完。
通俗易懂的C語言,方便移植的C語言與硬件平臺相對應的編譯器聯合,就能完成硬件的操作。有了簡單、方便的方式,我們為什么還要考慮繁瑣,復雜的匯編語言與寄存器操作呢?
你不用學指針,你不用學帶形參的函數,你不用學結構體,你不用學宏定義,你不用學文件操作,你也不用死記繁瑣的數據類型。你只要會:
5條指令語句switch語句,if else語句,while語句,for語句,=賦值語句。
7個運算符+,-,*,/,|,&,!。
4個邏輯關系符||,&&,!=,==。
3個數據類型unsigned char, unsigned int, unsigned long。
3個進制相互轉化,二進制,十六進制,十進制。
1個void函數。
1個一維數組code(或const) unsigned char array[]。
那么世界上任何一種邏輯功能的單片機軟件你都能做出來。
單片機的學習是非常枯燥而又有挑戰性的事情。由干與實際的硬件直接連接,不僅要考慮編寫的正確性,而且還要考慮硬件的可靠性。這時,簡單、高效的軟件編寫就變向的降低我們開發難度與風險。51單片機已經是明日黃花向前看才是發展。也許是時候向51單片機說再見了!
審核編輯 :李倩
-
51單片機
+關注
關注
277文章
5707瀏覽量
126023 -
定時器
+關注
關注
23文章
3273瀏覽量
116791 -
編程語言
+關注
關注
10文章
1952瀏覽量
35791
原文標題:單片機新手學習的4個誤區
文章出處:【微信號:電子技術控,微信公眾號:電子技術控】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
單片機Debug工具性能對比 單片機調試常用命令
如何優化單片機項目的功耗
單片機怎么寫入程序
單片機出現故障怎么維修
十天學會單片機可能嗎?單片機入門需要多久?

單片機燒錄程序用什么軟件
單片機引腳懸空是什么電平
新手如何學單片機

從菜鳥到大牛!嵌入式完整學習路線:STM32單片機-RTOS-Linux

評論