AVR单片机 ATmega16 读取IO口电位的奇葩问题 [2]?

哈哈好厉害 2013-04-24 08:50:35
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是高还是低,而且从来没有给PD4供过电压,为什么两个指示灯都是亮的呢?我用的开发板测试的。
使用仿真软件发现,即使是低电平程序莫名就跑到了 PORTB&=~BIT(0);这里。。按理说这里是高电平才会进入的,问题在哪里呢?
...全文
172 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaopaohu 2013-05-24
  • 打赏
  • 举报
回复
你应该用真实的MEG16芯片测试,不要做软件仿真,这个是建议。
xiaopaohu 2013-05-24
  • 打赏
  • 举报
回复
PORTD=0x00; 换成PORTD|=0xFF; 也就是内部上拉
Yurrie 2013-05-04
  • 打赏
  • 举报
回复
引用 5 楼 jyt860220 的回复:
[quote=引用 2 楼 91program 的回复:] 输出有没有做延时啊 要不先输出一个固定的状态看看吧
91大哥,找您好久啦。。。上我的帖子看看吧。。。强烈求助[/quote] http://bbs.csdn.net/topics/390439376?page=1#post-394387764
Yurrie 2013-05-04
  • 打赏
  • 举报
回复
引用 2 楼 91program 的回复:
输出有没有做延时啊 要不先输出一个固定的状态看看吧
91大哥,找您好久啦。。。上我的帖子看看吧。。。强烈求助
Fighting959800 2013-05-03
  • 打赏
  • 举报
回复
引用 2 楼 91program 的回复:
输出有没有做延时啊 要不先输出一个固定的状态看看吧
+1
lbing7 2013-04-28
  • 打赏
  • 举报
回复
这代码里看不出LZ所反应的问题 可以考虑查你的IDE,比如IDE有没有更新你的源文件进行编译. 如果IDE能仿真,哪怕是软件仿真,先用IDE进行仿真看看具体生成代码的逻辑有没有问题 感觉问题不出在这代码上,也没有出在硬件上
91program 2013-04-28
  • 打赏
  • 举报
回复
输出有没有做延时啊 要不先输出一个固定的状态看看吧
小小志 2013-04-28
  • 打赏
  • 举报
回复
首先你定义的是按位与对不对,PIND与BIT(4)按位与,如果等于0X10,就执行相应代码,在相应代码中有的是先与后赋值的,你先看下,是不是先与后赋值那一块出现问题了!

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧