本帖最后由 jhonyzhang 于 2020-9-8 16:37 編輯
void main(void)
{
TMR0IF=0;//清除TMR0中斷標志位
TMR0=255;//設置中斷初始值255
unsigned int k = 1;
unsigned int TIMER0 = 0,TIMER1 = 0,TIMER2 = 0;
unsigned char Flag_1 = 1; unsigned char Flag_2 = 0;
unsigned char Flag_3 = 0;
Pin_Init()
Light4 = 0;
while(1)
{
if( (TMR0IF == 1) && (Flag_1 ==1) ) //開啟定時器溢出中斷
{
TIMER0 ++; //計數(shù)器+1
TMR0IF = 0; //定時器溢出標志位清零
TMR0 = 255;
}
if( TIMER0 == k ) //如果計數(shù)器的值等于設定的值
{
Light4 = 1; //燈滅
}
if( TIMER0 == 100 ) //計數(shù)器加到10
{
Light4 = 0; //燈亮
TIMER0 = 0;
k++; //設定值逐漸變大
}
if( k == 99 )
{
Light4 = 0;
k =1;
Flag_2 = 1;
Flag_1 = 0;
}
if( (TMR0IF == 1) && (Flag_2 ==1) ) //開啟定時器溢出中斷
{
TIMER1 ++; //計數(shù)器+1
TMR0IF = 0; //定時器溢出標志位清零
TMR0 = 255;
}
if( TIMER1 == 23380)(中間燈亮停留2s)
{
Light4 = 1;
TIMER1 = 0;
Flag_3 = 1;
Flag_2 = 0;
}
if( (TMR0IF == 1) && (Flag_3 ==1) ) //開啟定時器溢出中斷
{
TIMER2 ++; //計數(shù)器+1
TMR0IF = 0; //定時器溢出標志位清零
TMR0 = 255;
}
if( TIMER2 == k ) //如果計數(shù)器的值等于設定的值
{
Light4 = 0; //燈亮
}
if( TIMER2 == 100 ) //計數(shù)器加到100
{
Light4 = 1; //燈滅
TIMER2 = 0;
k++; //設定值逐漸變大
}
if( k == 99 )
{
Light4 = 0;
k =1;
Flag_1 = 1;
Flag_3 = 0;
}
}
}
|