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
方便计算 - 复位: 采用低电平复位