您的位置:首页 > 其它

8051定时器应用

2011-04-29 20:51 134 查看
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++; // 溢出次数统计

}

当外部脉冲有高电平变化为低电平时,产生外部中断0,在外部中断0中结束计算计时时间

void int_ext0() interrupt 0

{

    long x = TH0*256 + TL0;

    if(bOverflow)

    {

        bOverflow = 0;

         x += over_times * 65536;

    }

}

要使用外部中断0,还要对它初始化操作

void init_Ext0()

{

    EX0 = 1;

    IT0 = 1; // 下降沿触发方式

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: