PIC單片機IO口操作
設置IO為輸出步驟
-
IO口設置為輸出的步驟:
- 設置
TRISn確保I/O口的方向為輸出 - 通過
PORTn控制I/O的數值
- 設置
-
代碼示例
#include <pic.h> __CONFIG(0xFF32); // 4M void main() { TRISD = 0; // 設置D區方向寄存器為輸出 PORTD = 0b00000001; // 第一個LED燈點亮 while(1); // 防止程序跑到不可控區域 }
I/O口注意事項
-
端口驅動能力
-
每個I/O口允許最大25mA的灌電流和20mA的拉電流, 可以直接驅動LED和繼電器。
-
因各端口結構不同,
RB口提供的總灌電流和總拉電流可達150mA和100mA, 其他端口為80mA和50mA -
五個端口驅動電流之和不大於
200mA -
TRISn始終控制着PORTn的輸入輸出方向
IO寄存器
-
TRISA 方向寄存器
- 每一位是單片機輸入輸出時,每一位數值是0.
- 輸出數值有PORTC寄存器來確定,POrtC數值全部為0
-
輸入輸出區
- PIC16F877 除了基本電路所占用的 7 根引腳外, 其余的
33 支引腳都可當成輸出、 輸入引腳, 輸入輸出端口, 可以與周邊電路進行電路控制和信號傳輸與檢測。 - PIC 是 8位的單片機, 以引腳特性分組, 每組盡量湊滿 8 支引腳, 並將 I/O 命名為
PORTA(RA0~RA5)、PORTB(RB0~RB7)、PORTC(RC0~RC7)、PORTD(RD0~RD7)和PORTE(RE0~RE2)等
- PIC16F877 除了基本電路所占用的 7 根引腳外, 其余的
各路IO說明
PORTA
-
PORTA:PIC16F877的PORTA 總共有6位(RA0~RA5)- PORTA 的引腳可作為數據輸出輸入端口
系統重置后, PORTA 自動成為模擬輸入狀態, 可讀取模擬輸入信號。
PORTB
-
PORTB: PORTB 總共有8位(RB0~RB7)- 可以編寫程序規划輸入輸出方向、 狀態.
- 需要進行燒錄時,使用到三個引腳, 分別是
36腳(RB3/PGM)、39腳(RB6/PGC) 與40腳(RB7/PGD).
PORTC
-
PORTC:PORTC 總共有8位(RC0~RC7)- 可作為數據 I/O
- 有特殊功能的外圍電路共享引腳
CCP: 直流馬達控制I2C: 同步串行通信電路SPI: 串行外設接口UART: 異步串行傳輸電路- 等
PORTD
PORTD: PORTD 總共有8位(RD0~RD7)- 可作一般數據 I/O
- 並與
PSP(Parallel Slave Port)並行傳輸區共享 , 當整體系統需要多機時, 彼此可以經由並行傳輸區來快速傳輸資料
PORTE
-
PORTE:PORTE 總共有3位(RE0~RE2)- 基本 I/O 功能
- 模擬輸入功能: 上述的
PORTD的並行傳輸區設定所需的控制引腳, 如/RD、/WR、/CS等, 也是屬於PORTE 引腳。
設置端口IO狀態
- I/O端口的寄存器: 復位后, 默認為輸入( 輸出高阻態)
| 方向控制寄存器 | TRISA~E |
|---|---|
| 數據寄存器 | PORTA~E |
狀態設置
-
方向控制寄存器與數據寄存器都是
8位的, 方向控制寄存器中的每一位與數據寄
存器中的每一位相對應, 如下:

TRISn方向控制寄存器:- 相應位設置為1表示輸入
- 相應位設置為0表示輸出
PORTn端口控制寄存器:- 相應位設置為1表示輸出
- 相應位設置為0表示輸入
單片機復位之后I/O口的初始狀態
- 單片機啟動后,默認IO輸入模式
PIC單片機最小系統
-
PIC單片機運行必要條件

- 電源
- 晶振: 采用
4M方便計算 - 復位: 采用低電平復位
