碰到一个问题,我用变量temp1表达PINA的值,带入switch中,程序运行不起来,但是直接把PINA带入switch中却可以正常运行,请教下这个是什么原因造成的啊,我用的ATMEL16,
单片机源程序如下:
#include<avr/io.h>
#include<util/delay.h>
void scan()
{
unsigned int temp=0,temp1=0;
PORTA=0XF0;
DDRA=0X0F;
temp=PINA&0xf0;
if(temp==0xe0)
{
PORTA=0X0F;
DDRA=0XF0;
temp1=PINA&0x0f;
_delay_ms(10);
switch(temp1)
{
case 0x0e:PORTB&=~(1<<0);break;
case 0x0d:PORTB&=~(1<<1);break;
case 0x0b:PORTB&=~(1<<2);break;
case 0x07:PORTB&=~(1<<3);break;
}
while(PINA==0x0E);
while(PINA==0x0D);
while(PINA==0x0B);
while(PINA==0x07);
PORTB=0XFF;
}
if(temp==0xd0)
{
PORTA=0X0F;
DDRA=0XF0;
temp1=PINA;
_delay_ms(10);
switch(PINA)
{
case 0x0e:PORTB&=~(1<<4);break;
case 0x0d:PORTB&=~(1<<5);break;
case 0x0b:PORTB&=~(1<<6);break;
case 0x07:PORTB&=~(1<<7);break;
}
while(PINA==0x0E);
while(PINA==0x0D);
while(PINA==0x0B);
while(PINA==0x07);
PORTB=0XFF;
}
}
int main()
{
PORTB=0XFF;
DDRB=0XFF;
while(1)
{
scan();
}
}
|