微控制器入門: 周邊電路控制

LET′S TRY“嵌入式系統編程”: 6之4

我們繼續為有志成為嵌入式系統工程師的讀者探討MCU的基礎知識。我們在先前的內容中探討了MCU硬體、程式設計語言及開發環境。現在我們將探討周邊電路控制的基礎知識。

(SFR) Special Function Registers

MCU使用各種內部暫存器儲存與狀態與運算相關的值。典型的暫存器包含程式計數器、通用暫存器及SFR。MCU會使用其部分SFR,特別是為了控制周邊電路的目的。例如,MCU會讀取SFR值以獲得周邊裝置資料,例如計數值、序列埠輸入及一般輸入。MCU也會視需要寫入SFR,將資料輸出至周邊裝置並控制周邊裝置的設定與狀態。

控制外部周邊電路

讓我們透過範例看看MCU如何使用SFR處理與特定周邊裝置之間的輸出與輸入。

  1. MCU將0或1寫入SFR位元以將周邊裝置的輸出設為LOW或HIGH等級,這些周邊裝置的輸出連結至此SFR位元。
  2. MCU讀取SFR位元的值以取得來自連結周邊裝置的狀態。

在下圖中,腳位A是通用I/O線路,連接至SFR之一(稱之為SFR「j」)的特定位元(稱之為「k」)。

讓我們先看看MCU如何使用SFR位元將周邊裝置設為HIGH或LOW等級。

  • 若要設為LOW (0V),則將0寫入至位元k。
  • 若要設為HIGH (5V),則將1寫入至位元k。

圖1:通用I/O腳位;輸出控制

圖1:通用I/O腳位;輸出控制

假設腳位A連接至LED,如圖2所示。若要開啟LED,MCU將0寫入至SFR-j的位元k。若要關閉LED,則將1寫入至該位元。實際上有許多不同類型的周邊裝置使用了這種非常簡單的設計。例如,MCU可使用此位元做為開關以開啟及關閉馬達 (由於大多數MCU無法輸出足夠的電流以驅動馬達,此腳位通常連接至結合FET或其他電晶體的驅動電路)。利用多個I/O埠可實作更複雜的控制。

圖2:由通用I/O控制的LED開/關電路

圖2:由通用I/O控制的LED開/關電路

接下來,讓我們看看MCU如何使用SFR位元輸入周邊裝置的目前狀態。所需要的是讀取位元值

  • 如果MCU從SFR-j的位元k讀取到0,即可知道此周邊裝置正在將LOW訊號(0V)輸入至腳位A。
  • 如果MCU從SFR-j的位元k讀取到1,即可知道此周邊裝置正在將HIGH訊號(5V)輸入至腳位A。

圖3:通用I/O腳位;輸入控制

圖3:通用I/O腳位;輸入控制

圖4顯示如何設定外部開關,讓MCU可以透過其SFR讀取開關的設定。

  • 當開關S關閉時,電壓將由電阻器R拉升,結果HIGH輸入至腳位A。這會將SFR位元(SFR-j的位元k)的值設為1。
  • 當開關S開啟時,進入腳位A的電壓是LOW,SFR位元值將重設為0。

MCU可藉由讀取SFR位元,輕鬆判斷開關是開啟或關閉。

圖4:透過通用I/O實作開關

圖4:透過通用I/O實作開關

每個MCU均結合多個SFR,可實作各種功能。程式可讀取這些SFR以取得有關外部情況的資訊,並可寫入SFR以控制外部行為。如果MCU是人類,其SFR就是手、腳及五官。

這總結了我們有關周邊控制基礎知識的介紹。在下一段及最後一段MCU基礎知識的文章中,我們將探討中斷,中斷處理是MCU程式設計中最重要的功能之一。到時候見!