首页 > 代码库 > ATmega8仿真——LED 数码管的学习

ATmega8仿真——LED 数码管的学习

1.I/O 口的结构及特点

  • Atmega8 有23 个I/O 引脚,分成3 个8 位的端口B、C 和D,其中C 口只有7 位
  • Atmega8 采用3个8位寄存器来控制I/O端口,它们分别是:方向寄存器DDRx、数据寄存器PORTx、输入引脚寄存器PINx

  x为B或C 或D,分别代表B口、C口或D 口;

  n为0~7,代表寄存器中的位置;

  其中DDRx 和PORTx 是可读写寄存器,而PINx 为只读寄存器;

  每个I/O引脚内部都有独立的上拉电阻电路,可通过程序设置内部上拉电阻是否有效。

 

方向寄存器DDRx中的每个位用于控制I/O口一个引脚的输入输出方向,即控制I/O口的工作模式为输出模式还是输入模式。

  • 当DDRxn=1 时,I/O 的Pxn 引脚处于输出模式。此时

    若PORTxn=1时,I/O引脚呈高电平,同时可提供输出20mA 的电流;

    若PORTxn=0时,I/O引脚呈低电平,同时可吸收20mA 的电流。

  • 当 DDRxn=0 时,I/O 的Pxn 引脚处于输入模式。此时

    引脚寄存器PINxn 中的数据就是外部引脚的实际电平;

    此时可通过PORTxn 的设置可控制内部的上拉电阻使用或不使用。

注意事项:

  1. 使用AVR的I/O 口,首先应正确设置其工作模式(输入模式还是输出模式),设置DDRx;
  2. 当I/O工作在输入模式(DDRxn=0)时,读取引脚上的电平应取PINxn的值,而不是PORTxn的值;
  3. 当I/O口工作在输入模式(DDRxn=0)时,应根据实际情况设置内部上拉电阻,利用内部上拉电阻可以节省外部上拉电阻;
  4. 将I/O空工作模式由输出模式设置为输入模式后,必须等待一个时钟周期后才能正确的读到外部引脚的值

 未完待续

ATmega8仿真——LED 数码管的学习