我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
-
正常时,PA0
不正常2
一周热门 更多>