查看: 4157|回复: 3
打印 上一主题 下一主题

兄弟们,今天我做51定时器的时候遇到几点不会的地方,

[复制链接]
跳转到指定楼层
沙发
发表于 2014-8-14 16:54:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50因仑币
本帖最后由 张衍波 于 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:59 | 只看该作者
你这个问题我不是很清楚,但你可以百度呀,度娘什么都知道呀。
回复

使用道具 举报

地板
 楼主| 发表于 2014-8-14 17:58:13 | 只看该作者
这么可怜啊,,竟然没人来,,
回复

使用道具 举报

4#
发表于 2014-8-14 18:08:52 | 只看该作者
找谷歌大神和必应大神,还有就是度娘。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表