将一个引脚配置为输入,将另一个引脚配置为输出时,AVR端口上的行为异常

时间:2018-08-12 11:26:41

标签: c avr

在一个基本项目中,当我按如下方式配置输入引脚(引脚0)并配置时,我将ATmega32上的portD的一个引脚用作输入来连接开关,将另一个引脚用作输出来连接LED。上拉电阻,然后将输出引脚(1)配置为输出,然后烧写代码 尽管我尝试在一行上配置DDRD,但我的LED亮度非常低,因此代码对这个问题的任何建议都效果很好

错误的代码

void main(){
DDRD&=~(0x01);
PORTD|=0x01;
DDRD|=0x02;

while(1)
{

    if((PIND & (1<<0)) == 0 )
    {
        PORTD|=0x02;
    }
    else
    {
        PORTD&=~(0x02);
    }

}
return;
}

可以正常工作的代码(效果很好)

void main(){
DDRD=0b00000010;
PORTD|=0x01;
while(1)
{

    if((PIND & (1<<0)) == 0 )
    {
        PORTD|=0x02;
    }
    else
    {
        PORTD&=~(0x02);
    }

 }
return;
}

任何人都知道这种行为的原因

1 个答案:

答案 0 :(得分:0)

您将内部引脚上拉开关打开。阅读DS了解更多详情