AVR端口(DDxn,PORTxn)配置及其说明
引脚序号 引脚名称 引脚功能
8 位双向I/O 口, 具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特
性,可以输出和吸收大电流。作为输入使用时,
PB5
1 若内部上拉电阻使能,端口被外部电路拉
低时将输出电流。在复位过程中,即使系统
时钟还未起振,端口A 处于高阻状态。
MOSI SPI 总线的主机输出/ 从机输入信号
PB6 8 位双向 I/O 口
2
MISO SPI 总线的主机输入/ 从机输出信号
PB7 8 位双向 I/O 口
3
SCK SPI 总线的串行时钟
复位输入引脚。持续时间超过最小门限时间的低电
4 RESET
平将引起系统复位。
5 VCC 数字电路的电源
6 GND 地
7 XTAL2 反向振荡放大器的输出端
8 XTAL1 反向振荡放大器与片内时钟操作电路的输入端
PD0 8 位双向 I/O 口
9
RXD USART 输入引脚
PD1 8 位双向 I/O 口
10
TXD USART 输出引脚
PD2 8 位双向 I/O 口
11
INT0 外部中断 0 的输入
PD3 8 位双向 I/O 口
12
INT1 外部中断 1 的输入
PD4 8 位双向 I/O 口
13
OC1B T/C1 输出比较B 匹配输出
PD5 8 位双向 I/O 口
14
OC1A T/C1 输出比较A 匹配输出
PD6 8 位双向 I/O 口
15
ICP1 T/C1 输入捕捉引脚
PD7 8 位双向 I/O 口
16
OC2 T/C2 输出比较匹配输出
17 VCC 数字电路的电源
18 GND 地
PC0 8 位双向 I/O 口
19
SCL 两线串行总线时钟线
PC1 8 位双向 I/O 口
20
SDA 两线串行总线数据输入/ 输出线
PC2 8 位双向 I/O 口
21
TCK JTAG 测试时钟
PC3 8 位双向 I/O 口
22
TMS JTAG 测试模式选择
PC4 8 位双向 I/O 口
23
TDO JTAG 测试数据输出
PC5 8 位双向 I/O 口
24
TDI JTAG 测试数据输入
PC6 8 位双向 I/O 口
25
TOSC1 定时振荡器引脚 1
PC7 8 位双向 I/O 口
26
TOSC2 定时振荡器引脚 2
端口A 与A/D转换器的电源。。不使用ADC 时,该
27 AVCC 引脚应直接与VCC 连接。使用 ADC 时应通过一个低
通滤波器与 VCC 连接。
28 AGND A/D 的模拟地
29 AREF A/D 的模拟基准输入引脚
PA7 8 位双向 I/O 口
30
ADC7 ADC 输入通道 7
PA6 8 位双向 I/O 口
31
ADC6 ADC 输入通道 6
PA5 8 位双向 I/O 口
32
ADC5 ADC 输入通道 5
PA4 8 位双向 I/O 口
33
ADC4 ADC 输入通道 4
PA3 8 位双向 I/O 口
34
ADC3 ADC 输入通道 3
PA2 8 位双向 I/O 口
35
ADC2 ADC 输入通道 2
36 PA1 8 位双向 I/O 口
ADC1 ADC 输入通道 1
PA0 8 位双向 I/O 口
37
ADC0 ADC 输入通道 0
38 VCC 数字电路的电源
39 GND 地
PB0 8 位双向 I/O 口
40 T0 T/C0 外部计数器输入
XCK USART 外部时钟输入/ 输出
PB1 8 位双向 I/O 口
41
T1 T/C1 外部计数器输入
PB2 8 位双向 I/O 口
42 AIN0 模拟比较正输入
INT2 外部中断 2 输入
43 PB3 8 位双向 I/O 口
AIN1 模拟比较负输入
OC0 T/C0 输出比较匹配输出
44 SS SPI 从机选择引脚
Atmega16单片机有32个通用I/O口,有PA ~PD四组,每组都是8位。其主要的寄存器有DDRXn(X=A,B,C,D;n=0,2,…,7,下同),PORTXn和PINXn。
DDRX是方向寄存器,可读可写。在写操作时用于制定PX口是作为输入口还是输出口;在读操作时,从DDRX寄存器读出来的是端口的方向设定值。DDRX寄存器的初始值为0x00。
PORTX是数据寄存器,可读写。在写操作时,从PORTX写入的数据存入内部锁存器,以确定端口的工作状态或者将写入的数据送到外部数据总线。PORTX寄存器的初始值为0x00。
PINX用来访问端口X的逻辑值,且只允许读操作。从PINX读入的数据只是X口引脚的逻辑 状态。其初始值为高阻态。
/************************************引脚配置**************************************************/
/*
引脚配置为输入时,若 PORTxn 为 "1“ ,上拉电阻将使能。如果需要关闭这个上拉电阻, 可以将 PORTxn 清零,或者将这个引脚配置为输出。复位时各引脚为高阻态,即使此
时并没有时钟在运行。
当引脚配置为输出时,若 PORTxn 为 "1“ ,引脚输出高电平("1“) ,否则输出低电平(“0“)。
在 ( 高阻态 ) 三态 ({DDxn, PORTxn} = 0b00) 输出高电平 ({DDxn, PORTxn} = 0b11) 两种状态之间进行切换时,上拉电阻使能 ({DDxn, PORTxn} = 0b01) 或输出低电平
({DDxn, PORTxn} = 0b10) 这两种模式必然会有一个发生。通常,上拉电阻使能是完全可以接受的,因为高阻环境不在意是强高电平输出还是上拉输出。如果使用情况不是这样
子,可以通过置位 SFIOR 寄存器的 PUD 来禁止所有端口的上拉电阻.
在上拉输入和输出低电平之间切换也有同样的问题。用户必须选择高阻态 ({DDxn, PORTxn} = 0b00) 或输出高电平 ({DDxn, PORTxn}=0b10) 作为中间步骤
*/
void IO_change(void)
{
//高阻态
DDxn=0;
PORTxn=0;
//禁止所有端口的上拉电阻
SFIOR|=1
DDxn=0xff;
PORTxn=0xff;
//使能所有端口的上拉电阻
SFIOR&=~(1
AVR端口DDxnPORTx 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)