因仑“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