楼主。。貌似你的中断程序有问题啊。。。你的程序一开始signal的值是0x02,以后的值也都是0x03左右,可是你的中断程序里面
TH1=(65535-signal)/256;
TL1=(65535-signal)%256;
那它的延时是只有2、3微妙啊,中断程序执行的时间都不止这么短啦。。。还有就是你这个程序是怎么发出不同频率的声音的?很难看懂啊。。。。
你用软模拟去跑程序,断点设置在if( counter==2*pace )这,然后看看程序能否如你所愿的停在这个地方并执行下面的频率变更动作。