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