第二話 輕描淡寫

一、單晶片如何運作?

我第一次看著IC透過I/O腳點亮一個LED燈的時候,覺得這一切真的太神奇了,又接著,看著好幾隻I/O腳依照我的邏輯,依序點亮時,覺得這一切真的太有趣了。

單晶片的運作,其實早從國中時候的電腦課程可能就已經上過了,從書上來說會有幾個名字是我們一定會看過的

a.算術邏輯運算單元(ALU)

顧名思義,就是用來做邏輯運算用的,基本上只有做0與1的加減動作。 (補充資料 Wiki)

b.暫存器(Register)

用來儲存MCU執行時所需要暫時存放的資料。(補充資料Wiki)

c.控制單元(CU)

控制所有MCU內的活動單元。(補充資料Wiki)

d.內部匯流排 (Internal BUS)

簡言之,用來傳遞資料的一個匯流排。

e.輸入輸出單元(I/O uint)

數位I/O腳都是輸入Hi(5V)、LOW(0V)。

類比I/O可以輸入或輸出特地範圍電壓。

f.記憶體單元(ROM/RAM)

ROM:唯讀記憶體,一種不可改變儲存資料的記憶體。(補充資料Wiki)

RAM:隨機存取記憶體,一種可讀寫,但是電源消失(斷電)後即會揮發的一種記憶體。(補充資料Wiki)

此外,早期的MCU都是將程式燒寫在ROM裡,但是一旦燒入之後就不可再變更,現在大部分的MCU都是將程式儲存的位置使用Flash作為儲存空間,才能夠有彈性的讀寫執行除錯重覆燒錄等動作。

上述所說的這些東西,將其簡單組合後,可以描述MCU是如何工作的讓我們從「控制單元(CU)」開始說起,CU讀取程式(ROM/FLASH)的指令後並解碼將資料透過「內部匯流排 (Internal BUS)」傳遞到「算術邏輯運算單元(ALU)」,由ALU進行運算,運算完成後再由匯流排傳送回去CU,將資料選擇存入「記憶體單元(RAM)」或「暫存器(Register)」中,如果暫存器是存放到「輸入輸出單元(I/O uint)」暫存器時,則由I/O腳反映運算後的狀態(5V/0V)。

粗略的說,概念即是如此。如要深究的話,就必須去了解每顆MCU的內部架構但是通常與上述的這些邏輯差異不大。

二、我想要強調的東西「暫存器」

為什麼要強調暫存器?那必須先問我們如何控制MCU?

控制MCU整個的操作上其實就只是透過程式的命令操作暫存器暫存器扮演的腳色,就好像是一個個的開關,想要什麼功能開/關都是必須透過暫存器控制,就連MCU的某隻I/O腳,希望輸出為Hi(5V)時,也是控制該I/O的暫存器才能夠使其達到我們想要的目的。

所以暫存器是很重要的東西,他的重要性就如同你家牆壁上的電燈開關一樣

沒有了開關,怎麼控制電燈?

下圖是個有很多數字的櫃子,這張圖真的很有暫存器的含意

(原圖網址:http://028.teambuy.com.cn/info/info-19-487791.html)

110749_49243

三、起頭真的很難

當我在使用Microchip PIC16F84學習單晶片的時候,真的吃盡了苦頭從完全沒有概念,到後來稍微了解,到能夠與別人討論,真的全靠手邊的一堆書與google所賜,其實要控制MCU我不覺得需要完全弄懂其中的原理,從應用工程的角度來看,我們要的是應用,而不是理論;雖說,知其然、知其所以然才能關關難過、關關過,當在應用上發生問題時,此時只要有心,通常都會去找其理論來證明錯誤,這也是說明了 正確的判斷多來自經驗,而大多數的經驗皆來自錯誤的判斷 一句話。

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料