微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 中断程序中,调用delay函数 ,调试的时候就卡在delay一直执行。

中断程序中,调用delay函数 ,调试的时候就卡在delay一直执行。

时间:10-02 整理:3721RD 点击:
stc89c52rc 11.0592  12分频 ,delay不管在中断程序哪个位置都是执行到delay就卡主不动,有没有兄弟看看的。
void delay(unsigned int ms)
        {
         unsigned int ti;
         while(ms--)
                 {
                        for(ti=0;ti<166;ti++);
                }
        }
void time0()interrupt 1 using 1
{       
        P1_0=!P1_0;
        counter0++;
        delay(1);
          if(counter0>=20000)       
                {               
                                ET0=TR0=0;
                                counter0=0;
                               
                                P1_0=1;
                                flag0=0;
                                flag1=1;
                       
                }
}
void main()
{
        P1=0xff;
        TMOD=0x22;       
        TH0=TH1=(256-18);
        TL0=TL1=(256-18);
        EA=1;
        ET0=1;
        TR0=1;
        while(flag0);
}

你看看你的定时时间是多少?延时1ms,算算定时时间是不是<1ms?  再者中断处理函数应尽量简洁,最好不要这样做(中断中加延时)

for()有语法错误

for循环少了;

我定时器定时时间一次是us 的 ,之前中断程序里面就加了,简洁我尽量改改,现在是delay(1)也会卡在里面。

什么意思? 应该用while吗 还是什么的

for 里面循环次数少了吗?

你的定时器是us级别的,delay()是ms级别的,一直卡在delay就很正常了

好的,我懂了,我自己再改改,谢谢

你的for语句语法应用不对啊,死在for里了,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top