單片機(jī)在大部分應(yīng)用中做的事情,莫過(guò)于輸入高低電平 ,輸出高低電平。就是通過(guò)這簡(jiǎn)單的控制電平來(lái)實(shí)現(xiàn)大多數(shù)的應(yīng)用控制。
什么是I/O口?
什么是I/O 就是 IN/OUT 就是 輸入/輸出。
I/O具體能做什么呢?
如果你是剛剛步入電子的新手,那你最好要知道一下I/O口具體能做什么。感性的認(rèn)識(shí)對(duì)你的學(xué)習(xí)是很有幫助的。I/O口輸出一個(gè)高(低)電平可以用來(lái)點(diǎn)亮一個(gè)LED燈,可以接通過(guò)一個(gè)繼電器,來(lái)開(kāi)啟電機(jī),來(lái)開(kāi)啟音響。開(kāi)啟許多的東西,也可以用于通信等等。輸入一個(gè)高(低)電平 可以用來(lái)檢測(cè)按鍵,檢測(cè)紅外線(xiàn)輸入 ,檢測(cè)信號(hào),等等。
I/O口和寄存器之間的對(duì)應(yīng)關(guān)系
首先看下一個(gè)芯片的原理圖。 注意 RA5~RA0這些口
在看看RA口的方向控制寄存器TRISA
在看看RA口的數(shù)據(jù)控制寄存器PORTA
也就是說(shuō)TRISA 寄存器中的TRISA5位 和PORTA寄存器中的 RA5位來(lái)控制 第二腳的RA5口。
如何控制I/O口?
其實(shí)控制單片機(jī),就是控制寄存器上的各個(gè)位,設(shè)置成高設(shè)置成低。就好像給你一臺(tái)機(jī)器有 8個(gè)的按鈕。然后你根據(jù)說(shuō)明書(shū)上介紹,根據(jù)你的需要按下 或者松開(kāi)相應(yīng)的按鍵 來(lái)得到你想得到的功能。只不過(guò)我們用的不是手而是C語(yǔ)言來(lái)按下和松開(kāi)這些按鍵。
TRISA寄存器是方向控制寄存器。就是控制I/O輸入還是輸出。比如 TRISA寄存器中的TRISA5位 設(shè)置成為0 RA5口是輸出 設(shè)置成為1 RA5口為是輸入。
C語(yǔ)言的具體實(shí)現(xiàn):
將RA5口設(shè)置成輸入的幾種方式
第一種 TRISAbits.TRISA5=1; //簡(jiǎn)單明了,只影響一個(gè)位 設(shè)置單個(gè)I/O比較方便
第二種 TRISA |= 0x20;//不夠明了,只影響一個(gè)位
第三種 TRISA =0x20;//不夠明了,影響到其他位,設(shè)置多個(gè)I/O用比較方便
將RA5口設(shè)置成輸出的幾種方式
第一種 TRISAbits.TRISA5=0;
第二種 TRISA &= ~0x20;
第三種 TRISA =0x00;
PORTA寄存器是數(shù)據(jù)控制寄存器。如果是輸出狀態(tài):PORTA寄存器中的RA5位為0 則RA5口輸出低電平,PORTA寄存器中的RA5位為1 則RA5口輸出高電平。
如果是輸入狀態(tài):PORTA寄存器中的RA5位為0 則說(shuō)明RA5口當(dāng)前為低電平,PORTA寄存器中的RA5位為1 則說(shuō)明RA5口當(dāng)前為高電平。
實(shí)例程序:
如果在RA5口上連接著一個(gè)LED燈。我們將如何點(diǎn)亮他呢?
/*
開(kāi)發(fā)環(huán)境為 MPLAB X IDE,芯片型號(hào)為PIC16LF1823
*/
#include
&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//這個(gè)要放到上一行去__CONFIG(PLLEN_OFF&LVP_OFF) ;//配置位int main(int argc, char** argv) {
ANSELA=0;//將RA口全部設(shè)置成數(shù)字口, TRISAbits.TRISA5=0;//設(shè)置RA5為輸出 PORTAbits.RA5=1;//設(shè)置輸出高電平點(diǎn)亮LED
while(1);//程序在此無(wú)限循環(huán)}
頭文件:程序中只要有了#include
配置位:這是十分重要即使程序沒(méi)有任何錯(cuò)誤 配置位沒(méi)配置好程序一樣不能用。具體如何配置可以看( 基于MPLAB X IDE配置位設(shè)置講解 )。
模擬數(shù)字口:在使用I/O口的時(shí)候要確保對(duì)應(yīng)的I/O口是被設(shè)置成數(shù)字口的。
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44982瀏覽量
650280 -
寄存器
+關(guān)注
關(guān)注
31文章
5433瀏覽量
124413
原文標(biāo)題:PIC單片機(jī)之I/O控制
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
為什么圖騰柱電路大多數(shù)用三極管來(lái)實(shí)現(xiàn)的呢
為什么現(xiàn)在大多數(shù)四軸飛行器都采用的是X型布局
技術(shù)支持工程師面試試題大多數(shù)是什么
如何解決大多數(shù)電源完整性問(wèn)題
用簡(jiǎn)單的D A轉(zhuǎn)換器電路來(lái)實(shí)現(xiàn)恒定線(xiàn)性速度的電機(jī)速度控制

大多數(shù)為單指令周期
如何設(shè)計(jì)并實(shí)現(xiàn)一個(gè)模擬的通用電機(jī)的PID控制器的詳細(xì)資料概述

目前絕大多數(shù)的工業(yè)機(jī)器人 仍然是以使用獨(dú)立的專(zhuān)用控制器為主
為什么大多數(shù)加密貨幣沒(méi)有存在的必要

怎樣用雙向邏輯電平轉(zhuǎn)換器連接具有不同最大電壓的MCU和模塊

大多數(shù)加密數(shù)字貨幣都存在什么問(wèn)題
ADISUSB驅(qū)動(dòng)程序文件(大多數(shù)情況下不需要)

評(píng)論