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.
请问为什么?
用的是最小系统板 展开
#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.
请问为什么?
用的是最小系统板 展开
4个回答
2012-01-19
展开全部
if(PA0==1)
这样就行了
这样就行了
更多追问追答
追问
用if(PA0==1)试过是不行
追答
你怎么测电平变化的?
展开全部
你应该到专业的电子类论坛问比较好。
mege 16,大二玩的,现在有点忘记。
你这==0x00,就是说当pa口第一只管脚为低电平时成立是吧
那你这低电平是怎么接的? 用的是单片机最小系统的地吗?
mege 16,大二玩的,现在有点忘记。
你这==0x00,就是说当pa口第一只管脚为低电平时成立是吧
那你这低电平是怎么接的? 用的是单片机最小系统的地吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从ATmega16的PA5、PA6、PA7分别输入三个脉冲信号,然后通过PC0、PC1、PC2{ DDRA&=0x1f; PORTA|=0xe0; while(1) { if(PORTA&0x80==0)k+=10
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实我对PA0也感到疑惑,程序里面没有A端口,但是atmega16一上点PA0就是高电平,其他位却很正常。 后来我干脆程序里面什么都不写,结果还是一样。也就是说PA0设置为高阻态的时候,PA0端口的情况是高电平的,实际测试电压为3.4V左右。 我用的是最小系统板,也就是说没有外围设备影响它。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询