unsigned int timeCNT1,timeCNT2;
void main()
{
...
while(1)
{
key-------自己加
....
switch(state)
{
case 1:
out_SC=led0=1;led1=0; delay_1ms(1); timeCNT1++;
break;
case 2:
out_SC=led1=1;led0=0;delay_1ms(2); timeCNT2++;
break;
case 3:
out_SC=led0=led1=state=0;
break;
}
.....
if(timeCNT1 >1000){out_SC=led0=0;led1=0;state=0;}
if(timeCNT2 >1000){out_SC=led1=0;led0=0;state=0;}
}
思路是這樣,不會造成很長時間的延時(無用功)。
用無窮思維,如果一個延時是delay(1萬年),這樣很明顯是垃圾寫法,當然除了中斷可以破這個1萬年,不然就是死機1萬年了。 |