我正在尝试使用8051上的定时器创建一个短调。我正在尝试发送具有指定频率的方波来创建音符。 然而,使用我目前的代码,我得到的只是一个无限的音符,永远不会停止播放。任何有关如何停止音符以及创建持续时间功能的帮助都将非常感激。
#include<reg932.h>
sbit speaker=P1^7;
void tone(unsigned char, unsigned char);
void main()
{
P1M1 = 0;
P1M2 = 0;
tone(0xC8, 0xF3);
}
void tone(unsigned char highval, unsigned char lowval)
{
TMOD=0x01;
TL0=lowval;
TH0=highval;
TR0=1;
while(TF0==0);
speaker=0;
TR0=0;
TF0=0;
}
答案 0 :(得分:0)
我很久没有对8051的设备进行编程了,但这就是我要做的事情:
1.A。弄清楚它的音调()是否从未退出
1.B。如果是的话,我确保while循环确实在那里(参见tone()的反汇编,如果不是,编译器会优化结账并需要修复(例如声明) TF0为易变的)
1.C。查看检查是否正确(右侧寄存器中的右侧等)