單片機外圍功能電路控制的基礎(chǔ)知識
在《嵌入式編程之單片機的基本構(gòu)成、工作原理》、《嵌入式編程之單片機的外圍功能電路》和《單片機的編程語言和開發(fā)環(huán)境》,我們一起學(xué)習(xí)了單片機的硬件和編程語言以及開發(fā)環(huán)境等。本文將帶大家學(xué)習(xí)單片機的外圍功能電路控制的基礎(chǔ)知識。
本文引用地址:http://m.butianyuan.cn/article/201710/366330.htm?。?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/SFR">SFR) Special Function Registers
單片機中有象箱子功能一樣的地方,我們稱為寄存器,用來暫存數(shù)據(jù)。寄存器的種類有程序計數(shù)器、通用寄存器、以及SFR(特殊功能寄存器)等。
SFR主要用來設(shè)定外圍功能電路(計數(shù)器或串行端口、通用I/O等)的工作方式,確認(rèn)其工作狀況,并對其進行控制的。也就是說SFR并非僅僅只是用來保存數(shù)據(jù)的“箱子”。通過改變保存在“箱子”里的數(shù)據(jù),不僅可以改變外圍功能電路的動作方式,而且“箱子”里的數(shù)據(jù)也將隨著外圍功能電路的工作狀況而改變。
控制外圍功能電路的基礎(chǔ)知識
下面以通用I/O為例來說明單片機對外圍功能電路的控制。通用I/O具有以下功能:
輸出功能:可以輸出高電平電壓或低電平電壓
輸入功能:可以讀出輸入到引腳的電壓電平
首先來看輸出功能的控制。圖1中的引腳A是一個通用I/O。
如果向引腳A的寄存器(SFR)
寫入0,則引腳A的輸出電壓將為低電平(0V)。
寫入1,則引腳A的輸出電壓將為高電平(5V)。
圖1: 通用I/O的輸出功能
如果將圖1的引腳A連接一個LED,就可以構(gòu)成一個控制LED的電路(見圖2)。此時,向寄存器(SFR)寫入0則LED亮燈,輸入1則LED熄滅。雖然這是一種很簡單的動作,但卻反映了單片機對各種外圍功能電路進行控制的基本原理。利用這種功能,就可以完成象電機的ON/OFF一樣的開關(guān)作用(由于通常的單片機上不能流過驅(qū)動電機運行的大電流,所以還需另行準(zhǔn)備用FET或晶體管作成的電機驅(qū)動電路)。另外,如果使用多個通用I/O端口,就可以完成更加復(fù)雜的控制。
圖2:通用I/O的LED控制電路
接下來看輸入功能(圖3)。
如果向引腳A輸入低電平電壓(0V),就會從寄存器(SFR)讀出0。
如果向引腳A輸入高電平電壓(5V),就會從寄存器(SFR)讀出1。
即,讀取寄存器(SFR)的值,就可以判斷外部電壓是低電平電壓還是高電平電壓。
圖3:通用I/O的輸入功能
圖4:通用IO輸入功能構(gòu)成的開關(guān)電路
使用通用I/O的輸入功能構(gòu)成圖4所示的電路,單片機就可以判斷出開關(guān)(S)的狀態(tài)。
當(dāng)開關(guān)(S)斷開時,電源電壓通過上拉電阻(R),連接到引腳A(相當(dāng)于輸入高電平電壓),寄存器(SFR)將的值變?yōu)?。
當(dāng)開關(guān)(S)關(guān)閉時,引腳A被連接到低電平電壓,寄存器(SFR)的值變?yōu)?。
單片機通過讀取引腳A的寄存器(SFR)的值,是“1”還是“0”,可以判斷外部開關(guān)(S)是斷開還是關(guān)閉狀態(tài)。
圖4:通用IO輸入功能構(gòu)成的開關(guān)電路
單片機上搭載了各種功能的SFR。通過程序來更改或讀出這些功能寄存器的值,就可獲知單片機外圍電路的信息,而對外圍電路進行控制。所以可以說,SFR就象是單片機的五官或者手腳。
評論