51单片机定时器的使用

我正在做一个音乐播放的程序,在确定各个音频率的时候是用延时函数,因为无法十分精确,所以做出来的音乐只能是内部相对和谐。。。听说定时器可以确定准确时间,请高手写一段c语言的用定时器定时10微秒的单位,然后教我如何使用单位。。。(难道也是delay(1000)吗)。。。可能我的问法本来就有问题因为我对定时器还根本不了解。。请回答者尽量解释详细一点谢谢
频率是11.0592Mhz
希望通过您的回答能让我学会使用定时器的基本方法

第1个回答  推荐于2017-11-26
void delay10ms()
{
TMOD=0x10;
TH1=0xd8;
TL1=0xf0; //给定时器赋初值
TR1=1;
while(!TF1);
TF1=0;
}
这是一个定时10毫秒的程序。晶振12MHZ的单片机,一个机器周期是1us。
例如你要定时10us,那么定时器的初值应该是
TH0=(65535-10)/256;
TL0=(65535-10)%256;本回答被提问者采纳
第2个回答  2014-03-26
定时器定时是用来产生音符的频率的,不需要调用,只需改变定时器初值,音符的音长是可以调用延时函数的.
网上应该有很多定时器初始化的例子

我这有一音乐播放的汇编程序,如果你想要可以发到你邮箱里..追问

汇编语言的吗?汇编我一窍不通啊。。

追答

定时器应该是用中断形式,如果是调用非中断的延时会占用CPU时间而不能处理其他过程

相似回答