#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
int main()
{
DDRD = 0x05;
PORTD=0xFF;
DDRB = 0xFF;
PORTB = 0x00;
int state=0;
while(1)
{
if(!(PIND &(1<<5)) && (state==0))
{
state=1;
PORTB = 0x38;
for(int i=0;i<=199;i++)
{
T1Delay_1s();
}
PORTB=0x00;
for(int i=0;i<=199;i++)
{
T1Delay_1s();
}
}
if(!(PIND &(1<<5)) && (state==1))
{
state=0;
PORTB = 0x08;
for(int i=0;i<=99;i++)
{
T1Delay_1s();
}
PORTB=0x30;
for(int i=0;i<=99;i++)
{
T1Delay_1s();
}
}
}
}
void T1Delay_1s()
{
TCNT0=156;
TCCR0B=0x05;
while((TIFR0&(1<<TOV0))==0);
TCCR0B=0;
TIFR0=0x1<<TOV0;
}
要求连接到PB3,PB4,PB5的LED亮起 在state0(PB3 = 1,PB4 = 1,PB5 = 1)然后全部每2秒关闭(000)
(每2秒111-> 000)
如果按下按钮,连接到PB3,PB4,PB5的LED将在状态1(100)中打开,然后每秒更改为(011)
(每秒100-> 011)
切换的效果很好,但错过了闪烁效果,LED只会闪烁一个循环然后停止,我该如何解决问题呢?