在AVR单片机中关于数据方向寄存器(DDR)的注解与DDRA、DDRB、DDRC、DDRD的作用与使用

一、什么是数据方向寄存器:

  在初入AVR单片机的学习中,经常会看到诸如如下的代码块:

#include  

int main(){  
    DDRC = 0xFF  //将单片机C口设置为输出  
}  

  那么我们可以看到,什么是C口,所谓的DDRC参数实际上应该理解成DDR-C,这也让我一开始找资料找的一头雾水,其实DDR是AVR单片机中关于寄存器的简称,其全称为Data Direction Register(数据方向寄存器),它的作用是设置端口的方向,这一点可以理解为一个开关,当开关设置为1时,则该端口被设置为输出,当开关设置为0时,则该端口被设置为输入。

二、 在AVR中对应的DDR是哪些:

  这里需要看一下AVR单片机的引脚示意图,这里拿ATMEGA128来做示例:
在AVR单片机中关于数据方向寄存器(DDR)的注解与DDRA、DDRB、DDRC、DDRD的作用与使用_第1张图片

  上面是ATMega128的引脚图,同时根据引脚说明资料我们可以得出:

Vcc:数字电路的电源。

GND:地。

端口A(PA7~PAO):端口A为双向I/O口并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口A为三态。端口A也可以用作其他不同的特殊功能。

端口B(PB7~PB0):端口B为8位双向I/O口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能.则端口被外部电路拉低时将输出电流。复位发生时端口B为三态。端口8也可以用作其他不同.

端口C(PC7~PC0):端口C为8位双向I/0口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能.则端口被外部电路拉低时将输出电流。复位发生时端口C为三态。端口C也可以用作其他不同的特殊功能。在ATmegal 03兼容模式下,端口C只能作为输出,而且在复位发生时不是三态。

端口D(PD7~PD0):端口D为8位双向I/0口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时.若内部上拉电阻使能.则端口被外部电路拉低时将输出电流。复位发生时端口D为三态。端口D也可以用作其他不同

端口E(PE7~PE0):端口E为8位双向I/0口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时.若内部上拉电阻使能.则端口被外部电路拉低时将输出电流。复位发生时端口E为三态。端口E也可以用作其他不同的特殊功能.

端口F(PFT~PF0):端口F为ADC的模拟输人引脚。如果不作为ADC的模拟输入.端口F可以作为8位双向I/0口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能.则端口被外部电路拉低时将输出电流。复位发生时端口F为三态。如果使能了JTAG接口.则复位发生时引脚PF 7(TDI)、PF5(TMS)和PF4(TCK)的上拉电阻使能。端口F也可以作为J TAG接口。在ATmegal03兼容模式下,端口F只能作为输入引脚。

端口G(PG4-~PG0):端口G为5位双向I/O口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时.若内部上拉电阻使能.则端口被外部电路拉低时将输出电流。复位发生时端口G为三态。端口G也可以用作其他不同的特殊功能。在ATmegal 03兼容模式下.端口G只能作为外部存储器的锁存信号以及32kHz振荡器的输入,并且在复位时这些引脚初始化为PG0=1、PGl=1以及PG2=0。PG3和PG4是振荡器引脚。 .

RESET:复位输入引脚。超过最小门限时间的低电平将引起系统复位。低于此时间的脉冲不能保证可靠复位。

XTALl:反向振荡器放大器及片内时钟操作电路的输入。

XTAL2:反向振荡器放大器的输出。

AVCC:AVCC为端口F以及ADC转换器的电源.需要与Vcc相连接.即使没有使用ADC也应该如此。使用ADC时应该通过一个低通滤波器与Vcc连接。

AREF:AREF为ADC的模拟基准输入引脚。

PEN是SPl串行下载的使能引脚。在上电复位时保持丽为低电平将使器件进入。SPl串行下载模式,在正常工作过程中PEN引脚没有其他功能.

  其中端口A、B、C、D、E、F、G对应的方向数据寄存器为,DDRA、DDRB、DDRC、DDRD、DDRE、DDRF、DDRG
需要注意的是,其实每个端口对应的寄存器不单单只有方向数据寄存器,还拥有端口数据寄存器PORT-X端口输入引脚地址PIN-X

三、DDR寄存器在AVR单片机中的使用:

  通过上面的端口寄存器定义我们可以看到,每一个方向数据寄存器并不单单针对一个pin引脚而是针对该端口相对应的数个引脚,这里我们用DDRC来举例说明。
  DDRC其对应了PC7~PC0 8个引脚,若我们在程序中将DDRC设置为0xFF时,则表示将C端口所对应的8个引脚均被设置为输出,若将DDRC设置为0x00时则将其设置为输入。
  若我们将DDRC设置为0xF0时,则表示将C端口对应的低4位的4个引脚(PC0~PC3)设置为输入,高4位的4个引脚(PC4~PC7)设置为输出,若将DDRC设置为0x0F则反之。

你可能感兴趣的:(AVR笔记,c语言,单片机,AVR)