碰到一個問題,我用變量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();
}
}
|