在一个基本项目中,当我按如下方式配置输入引脚(引脚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;
}
任何人都知道这种行为的原因
答案 0 :(得分:0)
您将内部引脚上拉开关打开。阅读DS了解更多详情