UINT cnt = 0;
void main()
{
void allLed();
TMOD = 0X01;
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
EA = 1;
ET0 = 1;
TR0 = 1;
allLed();//按理说2s后函数调用就会结束了。怎么好像程序一直在执行这个函数。灯一直是在闪。我的目的是8个灯隔200ms进行闪烁
}
void allLed()
{
P1 = 0x00; //刚开始所有的灯都亮
while(cnt <= 40) // 2s
{
if(cnt % 4 == 0) //每隔200ms取反
P1 = ~P1;
while(cnt % 4 == 0); // 200ms的时间保持闪或灭的状态
}
}
void timer0() interrupt 1
{
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
cnt++;
}
结束后单片机又从MAIN开始执行了
在MAIN后加个死循环就可以
楼上见解很新,程序执行完后还会自已从main重新开始执行么?