请问一下在延时函数里能不能等待中断啊?为什么不能?

void t0int() interrupt 1 //(location at 000BH) //只负责输出PWM波
{ //10微秒@24.000MHz
Len++;
if(Len==SdLen)
{
SPK=~SPK;
Len=0; 
}
}

void Display(uchar Play) //play是要播放的音符(数字表示),且控制PWM波长
{
SdLen=Length[Play]; //取定应有的PWM波长度
P1=WEI[Play]^P1; //让P0对应的灯点亮

TR0 = 1; //定时器0开始计时
ET0 = 1; //开T0中断
Delay500ms(); //延时等待定时器中断
//Display作为定时器0产生PWM波的入口
ET0 = 0; //关定时器0即停止PWM波输出,控制长度
P1=WEI[Play]^P1; //熄灭
}

定时器初值已在前面主函数配置好,本意是输出PWM波,但是仿真结果只有上升沿和下降沿,是Delay里不能进行中断程序么?

慕盖茨4494581
浏览 261回答 2
2回答

沧海一幻觉

中断程序执行的时间可能比Delay函数的时间要长,所以不执行。

慕尼黑的夜晚无繁华

中断函数是函数中断不再执行,延时函数是过一定时间后,函数继续执行。
打开App,查看更多内容
随时随地看视频慕课网APP