PIC16F877端口和寄存器

本文是PIC16F877教程的一部分,本节重点介绍PIC16F877的输入/输出端口和TRIS寄存器。

对于以前的文章,请点击以下链接:

看一看:pic16f877简介

看一看:PIC 16F877–体系结构和内存组织

看一看:PIC16F877中的寄存器存储器组织

PIC 16F877的输入/输出端口

PIC 16F877系列通常有五个输入/输出端口。它们用于与其他设备/电路的输入/输出接口。这些端口引脚中的大多数是多路复用的,用于处理设备上外围功能的备用功能。PIC芯片中的所有端口都是双向的。当外设动作在引脚中启用时,它不能用作其一般输入/输出功能。PIC16F877芯片基本上有5个输入/输出端口。下面给出了五个输入/输出端口及其功能。
  • 端口A和TRIS A寄存器
端口A是一个6位宽的双向端口,该端口的方向由TRIS A数据方向寄存器控制。设置TRIS a(=1)使相应的端口a引脚作为输入,清除TRIS a(=0)使相应的端口a引脚作为输出
引脚RA4与“Timer0”模块时钟输入多路复用,成为RA4/T0CKI引脚,并运行输入/输出操作或定时器0时钟功能模块。RA4/T0CKI引脚是施密特触发器输入和开路漏极输出。所有其他端口A引脚具有TTL输入电平和完整CMOS输出驱动器。
该微控制器中的其他端口A引脚与A/D转换器和比较器的模拟输入和模拟VREF输入多路复用。通过清除/设置ADCON1和/或CMCON寄存器中的适当控制位来选择每个管脚的操作。TRIS A寄存器控制端口引脚的方向,即使它们被用作模拟输入。用户必须确保在将TRISA寄存器中的位用作模拟输入时保持设置。
PORTA寄存器的框图如下图所示。
下表给出了与端口A寄存器相关的功能和寄存器。
  • 端口B和TRIS B寄存器
端口B也是一个8位双向端口。其方向由TRIS B数据方向寄存器控制和维护。将TRIS B设置为逻辑“1”会使相应的“端口B”引脚作为输入。清除TRIS B位使端口B成为输出。端口B的三个引脚与在线调试器和低压编程功能复用:RB3/PGM、RB6/PGC和RB7/PGD,用于执行其备用功能。
端口B寄存器的框图如下图所示。
下表给出了端口B的功能表以及与端口B相关的寄存器。
  • 端口C和TRIS C寄存器
端口C是一个8位宽的双向端口,由TRIS C数据方向寄存器控制和维护。设置TRIS C位(=1)将使相应的端口C引脚成为输入(即,将相应的输出驱动器置于高阻抗模式)。清除TRIS C位(=0)将使相应的端口C引脚成为输出端口C也与多个外围功能多路复用。端口C引脚具有施密特触发器输入缓冲器。
启用外围功能时,与其他端口相比,在为每个端口C引脚定义TRIS位时应更加小心。一些外围设备覆盖TRIS位以使引脚成为输出,而其他外围设备覆盖TRIS位以使引脚成为输入。由于TRIS位覆盖在外围设备启用时生效,因此应避免使用TRISC作为目标的读-修改-写指令(BSF、BCF和XORWF)。用户应参考相应的外围设备部分以了解正确的三位设置。
端口C寄存器的框图如下图所示。
下表给出了与端口C寄存器相关的函数和寄存器。
  • 端口D和TRIS D寄存器
端口D是一个具有双向特性的8位端口。该端口还带有施密特触发器输入缓冲器,端口D中的每个引脚可单独配置为输入或输出。通过设置控制位PSPMODE((TRISE<4>),端口D可以配置为8位宽的微处理器端口(用作并行从端口)。在此模式下,输入缓冲器为TTL。
端口D的方框图如下图所示。
下表给出了与PORTD相关的函数和寄存器。
  • 端口E和TRIS E寄存器
端口E只有三个引脚(RE0/RD/AN5、RE1/WR/AN6和RE2/CS/AN7),可单独配置为输入或输出。这些管脚可通过使用其相应的数据方向寄存器“TRIS E”进行控制。这些引脚还具有施密特触发器输入缓冲器。当设置位PSPMODE时,端口E引脚成为微处理器端口的I/O控制输入。在此模式下,用户必须确保设置了三位,并且引脚配置为数字输入。此外,确保ADCON1配置为数字I/O。在此模式下,输入缓冲区为TTL。
TRISE寄存器,也控制并行从端口操作。端口E引脚与模拟输入多路复用。当选择模拟输入时,这些引脚的读数为“0”。TRIS E控制RE引脚的方向,即使它们被用作模拟输入。当将引脚用作模拟输入时,用户必须确保将其配置为输入。
端口E的方框图(输入/输出模式)如下图所示。
下表给出了与端口E相关的端口E功能和寄存器。

关于PIC16f877教程的下一篇文章:

看一看:PIC16F877中的定时器模块

著者

5.评论

  1. 维诺德

    我将把4X4矩阵键盘连接到16f877A的端口C,PC7-PC4作为列,PC3-PC0作为行,但端口C引脚C1和C2没有正确响应

    端口C配置为

    ;——-
    MOVLW 0X0F
    MOVWF-TRISC
    ;——-
    所以请指导我关于这个问题

  2. 维萨赫

    what happens to circuitstoday.com?!????? No new post . Plese upload new posts as you can possible .

  3. 弗朗索瓦

    12伏80Ah电源倍增器cct高达150伏Dc
    负载2-3安培需要cct图

Baidu