8051系列单片机中的定时器如何用来测量外部脉冲的周期。
有看到过相关资料谈及使用定时器来测量外部脉冲的周期,但不够详细,这次在试验的过程中遇到一个类似的问题,
在教科书上只是简单提及,究竟怎么样使用,没有详细说明,
使用方法也不难,要使用定时器来测量外部脉冲的周期,首先对定时器初始化,方式选择依据你的实际要求选择方式1或2;然后GATE位置1,表示由外部中断引脚INT0的高低电平控制定时器0的启动和停止,INT0为高电平启动定时器计数,INT0为低电平时停止计数;C/T还是设为0,即作定时器使用,TH0,TL0的初值设为0;并允许中断,初始化函数如下:
void init_time0()
{
TMOD = 0x9;
TH0 = TL0 = 0;
EA = ET0 = TR0 = 1;
}
定时器选择方式1,最大计时时间为65.536ms。如果脉冲周期超过这个时间则要注意溢出的情况。出现溢出的时候,就产生中断:
void int_time0() interrupt 1
{
bOverflow = 1;
over_times++; // 溢出次数统计
}