要求:通过串口不同的频率驱动蜂鸣器发声。
现象:不同的频率之间切换时有时蜂鸣器先停止发声,过段时间才会以新的频率发声。
中断程序如下:
void T0_TIME() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==temp) //改变temp的值改变驱动频率
{
num =0;
spk=~spk;
P0= Led7_lab[temp]; //数码管测试时,频率改变后蜂鸣器停止发声的时候
数码管值未改变,蜂鸣器发声后才会改变
}
//P0= Led7_lab[temp]; //数码管测试时,频率改变后数码管值立即改变
}
为什么进入中断后if{}有时不能立即执行? |