標題: 如何對單片機IO口編程詳解 [打印本頁]

作者: 永恒的思戀    時間: 2018-1-31 12:38
標題: 如何對單片機IO口編程詳解
學習嵌入式還是先了解IO口吧,IO口作為單片機的基本單元作用很大
相關(guān)知識講解:
IO 口能做什么呢? IO 口是單片機中最基本的單元了,通過對 IO 口寄存器的控制, 可以讓它作為輸出管腳或者是輸入管腳。作為輸出管腳時,可以輸出高電平(5V)或者是 低電平(0V),這個通過給數(shù)據(jù)寄存器賦值實現(xiàn)。作為輸入腳時,可以檢測到外部電平變化。
在芯片手冊中我們可以看到,對 IO 口的操作主要由兩個寄存器實現(xiàn),一個是數(shù)據(jù)方 向寄存器 DDR*(*代表 A、B、C…),一個是數(shù)據(jù)寄存器PORT*。
以 DDRA 為例,我們可以看到一個寄存器,控制 8 個 IO 管腳,當相應位置 1 時,相 應管腳被配置成輸出模式,當置 0 時,相應管腳被配置成輸入模式。
當一個管腳被配置成輸出模式,那么到底輸出高電平還是低電平由誰決定呢,這時就 需要數(shù)據(jù)寄存器 PORTA 了,當數(shù)據(jù)方向寄存器指定了某一管腳是輸出時,輸出的具體電平 由 PORT*決定。



舉例:
我想讓 PA7 管腳輸出高電平,怎么寫程序呢?很簡單

DDRA              |=0x80; PORTA  |=0x80;

0x 指后面數(shù)據(jù)為 16 進制,0x80=1000 0000B ,|=運算就是 DDRA =DDRA | 0x80,也
就是將第 7 位置 1,且不改變別的位的狀態(tài)。假如你寫 DDRA=0x80,那么這就意味著第 7
位被置 1,其他位都被置 0。
實際應用:
在我們的開發(fā)板中 led2 和 led3 分別有 PE5  和 PE6 控制,當 PE5,PE6 為低電平時 led
中有 5mA 電流流過,led 亮,當 PE5,PE6 為高電平時,led 中無電流流過,led 滅。
讓 led 亮程序
DDRE              |=0x60; /*0xC0=0110 0000,即將 PE5、PE6 設置成輸出模式*/
PORTE &=0x9F;/*0x9F=1001 1111 這時按位與操作,將 PE5、PE6 設置成低電平*/


讓 led 滅程序
DDRE |=0x60; /*0xC0=0110 0000,即將 PE5、PE6 設置成輸出模式*/ PORTE |=0x60;/*0x60=0110 0000 將 PE5、PE6 設置成高電平,led 滅*/ 好啦,快去試試吧,這樣就算和飛思卡爾的單片機打過招呼啦~~


下載:


如何對IO口編程.pdf

249.77 KB, 下載次數(shù): 22, 下載積分: 黑幣 -5






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1