AVR端口(DDxn,PORTxn)配置及其说明
void IO_change_A(void)
{//高阻态
DDxn=0;
PORTxn=0;
//上拉电阻使能 ({DDxn, PORTxn} = 0b01) 或输出低电平 ({DDxn, PORTxn} = 0b10)
DDxn=0;
PORTxn=0xff;
/*
DDxn=0xff;
PORTxn=0;
*/
//输出高电平
DDxn=0xff;
PORTxn=0xff;
}
void IO_changge_B()
{//上拉输入
DDxn=0;
PORTxn=0xff;
//高阻态 ({DDxn, PORTxn} = 0b00) 或输出高电平 ({DDxn, PORTxn}=0b11)
DDxn=0;
PORTxn=0;
/*
DDxn=0xff;
PORTxn=0xff;
*/
//输出低电平
DDxn=0xff;
PORTxn=0;
}
/******************************************读取引脚的数据***************************************/
void read_PINX(void)
{
/*
PUD 上拉电
DDxn PORTxn (in SFIOR) I/O 阻 说明
0 0 X Input No 高阻态 (Hi-Z)
0 1 0 Input Yes 被外部电路拉低时将输出电流
0 1 1 Input No 高阻态 (Hi-Z)
1 0 X Output No 输出低电平 ( 吸收电流 )
1 1 X Output No 输出高电平 ( 输出电流 )
不论如何配置 DDxn ,都可以通过读取PINxn 寄存器来获得引脚电平.PINxn 寄存器的各个位与其前面的锁存器组成了一个同步器,这样就可以避免在内部时钟状态发生改变的短时
间范围内由于引脚电平变化而造成的信号不稳定.引入了延迟是必然的。
*/
unsigned char i;
/* 定义上拉电阻和设置高电平输出 */
/* 为端口引脚定义方向 */
PORTB = (1
_NOP();
/* 读取端口引脚 */
i = PINB;
}
/**************************未连接引脚的处理****************************************/
/*
如果有引脚未被使用,建议给这些引脚赋予一个确定电平。虽然如上文所述,在深层休眠模式下大多数数字输入被禁用,但还是需要避免因引脚没有确定的电平而造成悬空引脚在
其它数字输入使能模式 ( 复位、工作模式、空闲模式 ) 消耗电流。最简单的保证未用引脚具有确定电平的方法是使能内部上拉电阻。但要注意的是复位时上拉电阻将被禁用。如
果复位时的功耗也有严格要求则建议使用外部上拉或下拉电阻。不推荐直接将未用引脚与 VCC 或 GND 连接,因为这样可能会在引脚偶然作为输出时出现冲击电流。
*/
AVR端口DDxnPORTx 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)