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里不能进行中断程序么?
沧海一幻觉
慕尼黑的夜晚无繁华