找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 11795|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

如何對(duì)單片機(jī)IO口編程詳解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:279978 發(fā)表于 2018-1-31 12:38 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
學(xué)習(xí)嵌入式還是先了解IO口吧,IO口作為單片機(jī)的基本單元作用很大
相關(guān)知識(shí)講解:
IO 口能做什么呢? IO 口是單片機(jī)中最基本的單元了,通過(guò)對(duì) IO 口寄存器的控制, 可以讓它作為輸出管腳或者是輸入管腳。作為輸出管腳時(shí),可以輸出高電平(5V)或者是 低電平(0V),這個(gè)通過(guò)給數(shù)據(jù)寄存器賦值實(shí)現(xiàn)。作為輸入腳時(shí),可以檢測(cè)到外部電平變化。
在芯片手冊(cè)中我們可以看到,對(duì) IO 口的操作主要由兩個(gè)寄存器實(shí)現(xiàn),一個(gè)是數(shù)據(jù)方 向寄存器 DDR*(*代表 A、B、C…),一個(gè)是數(shù)據(jù)寄存器PORT*。
以 DDRA 為例,我們可以看到一個(gè)寄存器,控制 8 個(gè) IO 管腳,當(dāng)相應(yīng)位置 1 時(shí),相 應(yīng)管腳被配置成輸出模式,當(dāng)置 0 時(shí),相應(yīng)管腳被配置成輸入模式。
當(dāng)一個(gè)管腳被配置成輸出模式,那么到底輸出高電平還是低電平由誰(shuí)決定呢,這時(shí)就 需要數(shù)據(jù)寄存器 PORTA 了,當(dāng)數(shù)據(jù)方向寄存器指定了某一管腳是輸出時(shí),輸出的具體電平 由 PORT*決定。



舉例:
我想讓 PA7 管腳輸出高電平,怎么寫(xiě)程序呢?很簡(jiǎn)單

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

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


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


下載:


如何對(duì)IO口編程.pdf

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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表