AVR就改了个口,程序就执行不鸟了,怎么回事

2019-07-16 01:41发布

我PA0为按键时能正常执行,但把按键改为PA1后,就不行了,怎么会时。还有,我这个程序现实中实际上是控制电磁阀,但PA0根本没控制到电磁阀,电磁阀的指示灯都没亮。
正常程序如下://只用到了PA0,没用到PA1
#include <iom128v.h>
#include <macros.h>
#define  uchar unsigned char
#define  uint unsigned int
uchar i=0;
void delay(uint ms)
{
   uint a,j;
   for(a=0;a<ms;a++)
     for(j=0;j<1140;j++);
}


uchar key_press()
{
if((PINA&BIT(PA0))==0)
{return 1;}
if((PINA&BIT(PA0))==1)
{return 0;}
}


void key_scan()
{
delay(20);
if(key_press())
{
i++;
switch(i)
{
case 1:PORTA|=BIT(PA2);break;
case 2:PORTA&=~BIT(PA3);
            PORTA&=~BIT(PA4);break;
case 3:PORTA|=BIT(PA3);break;
case 4:PORTA|=BIT(PA4);break;
case 5:PORTA&=~BIT(PA2);i=0;break;
}
while(key_press()==1);
delay(20);

}

}

main()
{uchar j;
DDRA=0X1C;//
PORTA=0X1B;
while(1)
{
key_scan();
}
}

修改PA0为PA1://此时PA1用,PA0闲着
uchar key_press()//修改部分,其他没变
{
if((PINA&BIT(PA0))==0)
{return 1;}
if((PINA&BIT(PA0))==1)
{return 0;}
}



不正常时,PA1 不正常时,PA1
正常时,PA0 正常时,PA0
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。