• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

這個AVR一鍵流水燈為什麼不行?

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);
}
}
}
}
只想知道怎么样才能按下键时流水灯一直循环执行,或者说按键的程序该如如何写?

全部回复(1)
正序查看
倒序查看
fu-tao
LV.4
2
2012-03-22 15:15
看來沒人知道了,呵呵
0
回复