c语言 精确定时程序,微调定时精确时间
1.定时器&蜂鸣器
一般定时器中断函数里的内容最好是能够快速地去执行完,比如只执行几条简单的语句,这样与主函数配合才会使程序更加高效。前期教学里,我们只使用定时器中断负责某个IO引脚间隔跳变或者使一个变量间隔自加1的简单语句。
比如我们现在要实现间隔50ms左右的时间让流水灯左右循环移动的同时,还需要无源蜂鸣器一直响,这样的功能,思路该怎么去思考?
首先我们知道无源蜂鸣器要想鸣叫的比较尖锐,那P1.6需要一个合适的脉冲信号,这个信号笔者打算使P1.6高低电平保持的时间为300微秒不断循环。
所以我们用定时器中断实现P1.6的电平间隔跳变,主函数里负责完成流水灯的任务即可。
2.代码#include
#include //详见第六章第8讲
u8 T0RH, T0RL;
void TIM0_Init(u32 us,int trim)//trim:微调
{
u32 tmp; //临时变量
tmp = 11059200 / 12; //定时器计数频率
tmp = ( tmp * (us/100) )/10000;//计算所需的计数值
tmp = 65536 - tmp; //计算定时器重载值
tmp = tmp+trim; //补
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!