中科因仑“3+1”工程特种兵精英论坛
标题: 兄弟们,今天我做51定时器的时候遇到几点不会的地方, [打印本页]
作者: 张衍波 时间: 2014-8-14 16:54
标题: 兄弟们,今天我做51定时器的时候遇到几点不会的地方,
本帖最后由 张衍波 于 2014-8-14 16:57 编辑
我今天看到了一个关于音频的程序,不过没看懂哎。。它是使用定时器T0的模式1(13位计数器),其中有几个数据我不明白?
1、C=460830/f; ,,其中的460830是什么东西?这个数据是怎么来的?这条指令的作用是什么?
2、TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法。。。这里为什么是32??怎么算的?
程序如下,,只是重要的一部分;;
EA=1; //开总中断
ET0=1; //定时器T0中断允许
TMOD=0x00; // 使用定时器T0的模式1(13位计数器)
while(1) //无限循环
{
i=0; //从第1个音符f[0]开始播放
while(f!=0xff) //只要没有读到结束标志就继续播放 {
C=460830/f; TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法
TL0=(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法
TR0=1; //启动定时器T0
for(j=0;j<JP;j++) //控制节拍数 delay(); //延时1个节拍单位
TR0=0; //关闭定时器T0
i++; //播放下一个音符
}
}
}
作者: 杨玉玺 时间: 2014-8-14 16:54
你这个问题我不是很清楚,但你可以百度呀,度娘什么都知道呀。
作者: 张衍波 时间: 2014-8-14 17:58
这么可怜啊,,竟然没人来,,
作者: lucky80204 时间: 2014-8-14 18:08
找谷歌大神和必应大神,还有就是度娘。。。。
欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) |
Powered by Discuz! X3.4 |