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);
}
}
}
}
只想知道怎么樣才能按下鍵時流水燈一直循環執行,或者說按鍵的程序該如如何寫?