AVR 寄存器

2024 年 9 月 27 日 | 3 分钟阅读

AVR 是 8 位微控制器,因此其所有端口都是 8 位宽。 每个端口都有 3 个与之关联的寄存器,每个寄存器的大小为 8 位。 这些寄存器中的每一位都配置特定端口的引脚。 这些寄存器中的 Bit0 与端口的 Pin0 关联,这些寄存器中的 Bit1 与端口的 Pin1 关联,其他位以此类推。

AVR 微控制器中可用的三个寄存器如下所示

  • DDRx 寄存器
  • PORTx 寄存器
  • PINx 寄存器

DDRx 寄存器

数据方向寄存器配置端口引脚的数据方向。 这些寄存器用于确定端口引脚是用于输入还是输出。 将 1 写入 DDRx 中的一位会使相应的端口引脚作为输出,而将 0 写入 DDRx 中的一位会使相应的端口引脚作为输入。

例如

  • 将端口 A 的所有引脚设置为输出引脚
  • 将端口 A 的所有引脚设置为输入引脚
  • 将端口 B 的低半字节设置为输出,高半字节设置为输入

PINx 寄存器

PINx 寄存器用于从端口引脚读取数据。 为了从端口引脚读取数据,我们首先必须将端口的数据方向更改为输入。 这是通过将 DDRx 中的位设置为零来完成的。 如果端口设置为输出,则读取 PINx 寄存器将给出已在端口引脚上输出的数据。

有两种输入模式。 我们可以将端口引脚用作内部上拉电阻或三态输入。 将在下面进行说明

从端口 A 读取数据,


PORTx 寄存器

通常,PORTx 寄存器可用于两个目的

  • 输出数据: 当端口配置为输出时,使用 PORTx 寄存器。 当我们将 DDRx 中的位设置为 1 时,相应的引脚变为输出引脚。 现在我们可以将数据写入 PORTx 寄存器中的相应位。 这将立即根据我们在端口上写入的数据更改引脚的输出状态。 例如
  • 将变量 x 中的数据输出到端口 A

    将 0xFF 数据输出到端口 B

    仅将数据输出到端口 C 的第 0 位

  • 激活/停用上拉电阻: 当端口配置为输入时,我们将 DDRx 中的位设置为 0,即,使端口引脚为输入,PORTx 寄存器中的相应位用于激活/停用与该引脚关联的上拉电阻。 为了激活上拉电阻,将 PORTx 寄存器中的位设置为 1,而为了停用(即,使端口为三态),将其设置为零。
  • 在输入模式下,当启用上拉时,引脚的默认状态为“1”。 因此,如果我们不在引脚上添加任何内容,并且如果尝试读取它,则它将读取为 1。

    注意: 在使用片上模数转换器 (ADC) 时,ADC 端口引脚必须用作三态输入。

    例如

    将端口 A 的低半字节设置为输出,高半字节设置为输入,并启用上拉电阻

    将端口 B 设置为三态输入

    将端口 C 设置为输入,并启用上拉电阻,然后从端口 a 读取数据