AVR的一键流水灯程序问题?
#include
#include
int main(void)
{
unsigned char i;
PORTA=0XFF;
DDRA=0XFF;
PORTC=0X01;
DDRC=0X00;
if(!(PINC &
(1
<< PC0)))
{
while (1)
{
for (i = 0; i < 8; i ++)
{
PORTA = ~(1 << i);
_delay_ms(200);
}
for (i = 8; i > 0; i --)
{
PORTA = ~(1 << i-1);
_delay_ms(200);
}
}
}
}
为什么这个流水灯程序按键不起作用?当if(!(PINC & (1 << PC0)))
而当这句放到while(1)下面时,流水灯只执行一次如下:
#include
#include
int main(void)
{
unsigned char i;
PORTA=0XFF;
DDRA=0XFF;
PORTC=0X01;
DDRC=0X00;
while (1)
{
if(!(PINC &
(1
<< PC0)))
{
for (i = 0; i < 8; i ++)
{
PORTA = ~(1 << i);
_delay_ms(200);
}
for (i = 8; i > 0; i --)
{
PORTA = ~(1 << i-1);
_delay_ms(200);
}
}
}
}
只想知道怎么样才能按下键时流水灯一直循环执行,或者说按键的程序该如如何写?
#include
int main(void)
{
unsigned char i;
PORTA=0XFF;
DDRA=0XFF;
PORTC=0X01;
DDRC=0X00;
if(!(PINC &
(1
<< PC0)))
{
while (1)
{
for (i = 0; i < 8; i ++)
{
PORTA = ~(1 << i);
_delay_ms(200);
}
for (i = 8; i > 0; i --)
{
PORTA = ~(1 << i-1);
_delay_ms(200);
}
}
}
}
为什么这个流水灯程序按键不起作用?当if(!(PINC & (1 << PC0)))
而当这句放到while(1)下面时,流水灯只执行一次如下:
#include
#include
int main(void)
{
unsigned char i;
PORTA=0XFF;
DDRA=0XFF;
PORTC=0X01;
DDRC=0X00;
while (1)
{
if(!(PINC &
(1
<< PC0)))
{
for (i = 0; i < 8; i ++)
{
PORTA = ~(1 << i);
_delay_ms(200);
}
for (i = 8; i > 0; i --)
{
PORTA = ~(1 << i-1);
_delay_ms(200);
}
}
}
}
只想知道怎么样才能按下键时流水灯一直循环执行,或者说按键的程序该如如何写?