我的理解是 利用定时器
发布时间:2018-07-21 12:36

  我的理解是利用定时器,产生不同频率的定时来产生不同的音调,但是为什么这里用的是工作方式1,并且没有在中断程序中写上TR0=1;如果这样的话,那不是只中断一次就不再震动了吗?

  用定时器的工作方式1是用其16位的数据,也就是说数据范围是最大的,可以做到频率更精确,TR0在子程序PlayMusic里面,因为是播放音乐,所以需要较为严格的控制定时器的启停,所以没有开始初始化时就打开定时器。我想问的是如果是定时器工作方式1的话,那么不是只进入中断程序一次,就需要手动的置位使TR0=1来启动新的定时了么,那如果程序的中断程序中没有写TR0=1的话,蜂鸣器在延时程序delay()中不是只应该改变一次状态么,那为什么还会响TR0不会被溢出和中断改变,定时器溢出时将TF0置位,进入中断后自动将TF0清0.所以TR0在中断服务程序里不用处理。你可能将之与串口的RI和TI搞混了。

  a展开全部1、通过改变定时器中断的时间改变了触发蜂鸣器频率2、更多交流参考我空间文章。