PIC单片机IO控制


PIC单片机IO口操作

设置IO为输出步骤

  • IO口设置为输出的步骤:

    1. 设置TRISn 确保I/O口的方向为输出
    2. 通过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口提供的总灌电流和总拉电流可达 150mA100mA , 其他端口为 80mA50mA

  • 五个端口驱动电流之和不大于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)

各路IO说明

PORTA

  • PORTA :PIC16F877的PORTA 总共有6位(RA0~RA5)

    1. PORTA 的引脚可作为数据输出输入端口
    2. 系统重置后, PORTA 自动成为模拟输入状态, 可读取模拟输入信号。

PORTB

  • PORTB : PORTB 总共有8位(RB0~RB7)

    1. 可以编写程序规划输入输出方向、 状态.
    2. 需要进行烧录时,使用到三个引脚, 分别是 36脚(RB3/PGM)、 39脚(RB6/PGC) 与 40脚(RB7/PGD).

PORTC

  • PORTC :PORTC 总共有8位(RC0~RC7)

    1. 可作为数据 I/O
    2. 有特殊功能的外围电路共享引脚
      • CCP : 直流马达控制
      • I2C : 同步串行通信电路
      • SPI : 串行外设接口
      • UART : 异步串行传输电路

PORTD

  • PORTD : PORTD 总共有8位(RD0~RD7)
    1. 可作一般数据 I/O
    2. 并与 PSP(Parallel Slave Port)并行传输区共享 , 当整体系统需要多机时, 彼此可以经由并行传输区来快速传输资料

PORTE

  • PORTE :PORTE 总共有3位(RE0~RE2)

    1. 基本 I/O 功能
    2. 模拟输入功能: 上述的 PORTD 的并行传输区设定所需的控制引脚, 如/RD/WR /CS等, 也是属于PORTE 引脚。

设置端口IO状态

  • I/O端口的寄存器: 复位后, 默认为输入( 输出高阻态)
方向控制寄存器 TRISA~E
数据寄存器 PORTA~E

状态设置

  • 方向控制寄存器与数据寄存器都是8位的, 方向控制寄存器中的每一位与数据寄
    存器中的每一位相对应, 如下:

    • TRISn 方向控制寄存器:
      • 相应位设置为1表示输入
      • 相应位设置为0表示输出
    • PORTn 端口控制寄存器:
      • 相应位设置为1表示输出
      • 相应位设置为0表示输入

单片机复位之后I/O口的初始状态

  • 单片机启动后,默认IO输入模式

PIC单片机最小系统

  • PIC单片机运行必要条件

    1. 电源
    2. 晶振: 采用4M方便计算
    3. 复位: 采用低电平复位


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM