AVR单片机 ATmega16 读取IO口电位的奇葩问题 [2]? 50
IO状态是这样的。DDRD=0x00;PORTD=0x00;按照网友的提示,程序改成了这样:while(1){if((PIND&BIT(4))==0x10){PORTB&...
IO状态是这样的。
DDRD=0x00;
PORTD=0x00;
按照网友的提示,程序改成了这样:
while(1)
{
if((PIND&BIT(4))==0x10)
{
PORTB&=~BIT(0); //输出一个低电平,点亮发光管。
PORTB |= BIT(4);
}
else
{
PORTB&=~BIT(4); //输出一个低电平,点亮发光管。
PORTB |= BIT(0);
}
}
无论PD4是高还是低,为什么两个指示灯都是亮的呢?我用的开发板测试的。
使用仿真软件发现,即使是低电平程序莫名就跑到了 PORTB&=~BIT(0);这里。。按理说这里是高电平才会进入的,问题在哪里呢?
而且从来没有给PD4供过电压,为什么两个指示灯都是亮的呢? 展开
DDRD=0x00;
PORTD=0x00;
按照网友的提示,程序改成了这样:
while(1)
{
if((PIND&BIT(4))==0x10)
{
PORTB&=~BIT(0); //输出一个低电平,点亮发光管。
PORTB |= BIT(4);
}
else
{
PORTB&=~BIT(4); //输出一个低电平,点亮发光管。
PORTB |= BIT(0);
}
}
无论PD4是高还是低,为什么两个指示灯都是亮的呢?我用的开发板测试的。
使用仿真软件发现,即使是低电平程序莫名就跑到了 PORTB&=~BIT(0);这里。。按理说这里是高电平才会进入的,问题在哪里呢?
而且从来没有给PD4供过电压,为什么两个指示灯都是亮的呢? 展开
展开全部
建议这样:DDRD=0x00,PORTD=0x40,这样把PD4设置成上拉输入,让端口有确定的电平,然后试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
AVRSTUDIO的软仿真功能特别好用,这种程序最好先用软仿真看看,没问题了,在下载到电路板上。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
读取PIN状态要给至少2毫秒的延时后再来读取
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询