51单片机控制led灯的问题,程序死循环,退不出

zhuyonghua   2010-5-19 14:13 楼主
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++;
}

回复评论 (4)

结束后单片机又从MAIN开始执行了

在MAIN后加个死循环就可以
点赞  2010-5-19 14:15
哦。知道了。谢谢你。
点赞  2010-5-19 14:37
楼上见解很新,程序执行完后还会自已从main重新开始执行么?
点赞  2010-5-19 14:39
引用: 引用 3 楼 jbb0523 的回复:
楼上见解很新,程序执行完后还会自已从main重新开始执行么?


要不是上面的程序怎么不会停止?
点赞  2010-5-19 16:25
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复