mega16单片机试验中if语句无效

我用mega16做试验,编程如下#include<iom16v.h>#include<macros.h>voidmain(){DDRA=0x00;PORTA=0xFF;D... 我用mega16做试验,编程如下
#include <iom16v.h>
#include <macros.h>
void main()
{
DDRA=0x00;PORTA=0xFF;
DDRD=0xFF;PORTD=0xFF;
while(1)
{
if(PINA&0x01==0x01)
PORTD=0x55;
else PORTD=0x00;
}
}
照上试验正常。但我把if语句改为if(PINA&0x01==0x00)时,不管PA0口电平怎样变化,PD口输出都是0x00.
请问为什么?
用的是最小系统板
展开
 我来答
匿名用户
2012-01-19
展开全部
if(PA0==1)
这样就行了
更多追问追答
追问
用if(PA0==1)试过是不行
追答
你怎么测电平变化的?
矮鱼吖
2012-01-15 · TA获得超过276个赞
知道小有建树答主
回答量:254
采纳率:0%
帮助的人:338万
展开全部
你应该到专业的电子类论坛问比较好。

mege 16,大二玩的,现在有点忘记。

你这==0x00,就是说当pa口第一只管脚为低电平时成立是吧

那你这低电平是怎么接的? 用的是单片机最小系统的地吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
prawn590
2012-01-15 · 贡献了超过200个回答
知道答主
回答量:200
采纳率:0%
帮助的人:120万
展开全部
从ATmega16的PA5、PA6、PA7分别输入三个脉冲信号,然后通过PC0、PC1、PC2{ DDRA&=0x1f; PORTA|=0xe0; while(1) { if(PORTA&0x80==0)k+=10
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
amanilo
2012-01-17 · 超过16用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:18.4万
展开全部
其实我对PA0也感到疑惑,程序里面没有A端口,但是atmega16一上点PA0就是高电平,其他位却很正常。 后来我干脆程序里面什么都不写,结果还是一样。也就是说PA0设置为高阻态的时候,PA0端口的情况是高电平的,实际测试电压为3.4V左右。 我用的是最小系统板,也就是说没有外围设备影响它。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式