|
當前我們接觸的大多數計算機都是數字計算機(這里是針對模擬計算機而言的),在數字電路這門課程中,我們學習了組合邏輯電路和時序邏輯電路,所謂的組合邏輯電路實現了基于電路的運算.這是構成計算機運算的基礎,而時序邏輯電路使計算機具有了“記憶”,也就是所謂狀態的歷史相關性,這構成了計算機存儲與程序運行的基礎。我們站在數字電路的角度來看待單片機或者某個單片機外設,它正是運用各種同步信號(包括時鐘、觸發等),更改或者獲取某一特定存儲空間的數據。
pYYBAGMqaaaAX-y1AAGBYSZMtIs379.jpg
如:單片機內部是通過時鐘信號驅動PC指針從制定的RAM空間或者程序ROM空間中依次讀取指令,單片機內部的CPU核心再通過對指令的解碼實現相關動作。而所有的外部設備包括傳感器、存儲器、輸入輸出設備也都是通過制定時序實現與單片機實現通訊,并通過對外設內部存儲空間的讀寫完成相關功能。如通過規定的時序完成對DS18B20的讀寫即可完成溫度的讀取,通過SPI口與ILI341液晶顯示屏通訊,將每個像素的顏色信息寫入規定的顯示空間地址即可完成顯示,通過設置AD寄存器啟動AD轉換并通過寄存器讀回等等。
我當初學習單片機使用的是匯編語言,現在除了BootLoader很少會使用到匯編,但正是匯編語言的學習讓我真正理解到了計算機底層的邏輯工作原理。特殊寄存器、累加器、B寄存器、程序狀態字、程序計數器PC,它們是如何相互配合完成運算的,立即尋址、直接尋址、間接尋址、寄存器尋址、寄存器間接尋址等尋址方式更是C語言指針的基礎,(BTW:當初嘗試考計算機三級第一次就卡在機試的PC匯編上了,學完單片機后滿分通過)。
同時也正是匯編的學習,讓我對中斷的處理有了及深刻的認識,在中斷時需要“保護現場“,此時需要壓棧處理,恢復現場時,則需要出棧操作。這對于后面的操作系統中所說的的任務切換的實質動作了。綜上所述,打好學科基礎是非常必要的。我們在大學時學到的知識在學校期間也許是脫離實際的,只局限于做題解題,但是當你積蓄了大量的理論知識后,在實際工作中就會有一個明確的理論支撐,能夠讓你更快的熟悉工作。
我覺得對于想學習單片機的人目的各有不同,不能給出一個籠統的答案,只要在個人經濟范圍能夠承受的范圍內,買個外設齊全的開發板也是不錯的選擇。如果喜歡動手就從核心板、洞洞板做起,只要我們學到東西就行,現在某寶上有很多的開發板,并且都帶有很多的教程。但是這里面的教程都是針對某一個功能、外設的,比如按鍵、串口等等單個外設的例程,目的就是讓學習者掌握某一類外設的應用,根據自己的需要進行綜合。還有一類就是像無際老師這樣,將自己的工程案例制作成開發板,有針對性的進行教學,這樣可以從外設到架構一起學習,關于架構這一點我們后面談。
|
|