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供过电压,为什么两个指示灯都是亮的呢?
展开
 我来答
小号很好使
2013-04-24 · TA获得超过457个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:113万
展开全部
看看这三点能解决吗?
1、DDRB初始化为0XFF了吗
2、输入状态下PORTD最好初始化为0XFF,即上拉输入
3、BIT(k)尽量用(1<<k)代替,BIT容易出现不可预知的问题
ATF144X
2013-04-24 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4655万
展开全部
建议这样:DDRD=0x00,PORTD=0x40,这样把PD4设置成上拉输入,让端口有确定的电平,然后试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
joyoustech
2013-04-24 · TA获得超过1874个赞
知道小有建树答主
回答量:1465
采纳率:71%
帮助的人:1309万
展开全部
AVRSTUDIO的软仿真功能特别好用,这种程序最好先用软仿真看看,没问题了,在下载到电路板上。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bd_myj
2013-04-26 · TA获得超过526个赞
知道小有建树答主
回答量:526
采纳率:0%
帮助的人:291万
展开全部
读取PIN状态要给至少2毫秒的延时后再来读取
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式