1. 程式人生 > >第一節:吳堅鴻談初學單片機的誤區。

第一節:吳堅鴻談初學單片機的誤區。

高級功能 array 掌握 世界 通信協議 應該 switch 別人 現在

(1)很難記住繁雜的寄存器?寄存器不用死記硬背,鴻哥我行走江湖多年,連一個寄存器都記不住。需要配置寄存器的時候,直接在網上或者書本上參考別人現成的配置程序是上策,查找芯片數據手冊是中策,死記硬背寄存器是最最下策。

(2)很難記住繁雜的匯編語言指令?除非是在校學生要應付考試或者少數工作中繞不開匯編,否則學匯編就是浪費時間。鴻哥我行走江湖多年,從來就沒有用匯編幫客戶做過一個項目。

(3)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[]。
那麽世界上任何一種邏輯功能的單片機軟件你都能做出來。
鴻哥我當年剛畢業出來工作的時候才知道可以用C語言開發單片機,一開始只用if語句就把項目做出來了,沒有用指針,沒有用帶形參的函數等復雜的功能。再到後來才慢慢開始用C語言其他的高級功能,但是我發現C語言其他的高級功能,本質上都是用我前面列舉出來的最基本功能集合而成,只是書寫更加簡單方便了一點,編譯後的機器碼都大同小異。所以不會指針等高級功能你不用自卑,恰恰相反,當你會最簡單的幾個語句,就把這些高級功能的程序都做出來了,你才發現你對底層了解得更加透切,再學那些高級功能輕而易舉。當你裸機跑的程序都能夠協調得很好的時候,你才發現所謂高深的操作系統也不過如此,只要給你時間和金錢你也可以寫個操作系統來玩玩。

(4)很難記住精確時間的計算公式?經常看到時間公式等於晶振,時鐘周期,執行指令次數他們之間的乘除關系式。鴻哥我認為這些都是浮雲,不用糾結也不用去記,大概了解一下就可以了。不管你對公式掌握得有多精確,你都不可能做出非常精確的時間。想用單片機做一個非常精確的時間這種想法一開始就是錯的,不可能的。真想做一個比較精確的時間,應該用外圍時鐘芯片或者FPGA和CPLD,而不是單片機。

(5)很難記住繁雜的各種通信協議?什麽IIC,SPI,232串口通訊,CAN,USB等等。這些都是浮雲,你不用記那麽多,你只要理解兩種通訊方式就夠了,那就是串行通訊方式和並行通訊方式。不管世界上有多少種通訊協議,物理世界上只有這兩種通訊方式,其他各種名稱的通訊協議都基於此兩種方式演變而來。

(6)很難寫短小精悍的程序?初學者不要糾結於此。做項目開發,程序容量不是刻意追求的目標,程序多一點少一點沒關系,現在大容量的單片機品種非常多,容量不會是寸土寸金的事情,我們更加要關註程序的運行效率,可讀性和可修改性。

第一節:吳堅鴻談初學單片機的誤區。