C51编程15-中断篇(定时器中断2)

使用定时器/计数器中断,需要将满足以下的条件。

    1)中断总允许打开 EA = 1;

    2)中断源允许打开  ET0 = 1或者 ET1= 1;

    3)设置定时器计/计数器的工作方式(设置TMOD)

    4)装载定时器,设置计数器的初始计算值。

    5)开启定时器(TCON中的TR0 = 1或者TR1 = 1)

    6)中断服务函数

  在满足上面的条件后,就使用定时器了,但为了对定时器的4种方式更深入的了解,下面从逻辑图上讲解4种方式。

    

    方式0:

    逻辑结构图    

    

    从上面的逻辑结构图中,逻辑结构主要分为三个部分;

    1)计数源:计数源可以选择振荡器12分频(机器周期);计数源也可以选择T0(P3.4)引脚。当C/T = 0,选择机器周期;当C/T = 1,选择P3.4引脚。

    2)定时器启动控制:T0启动控制关系为TR0&((!GATE)+INT0),当GATE=0,启动仅有TR0控制,TR0=1启动定时器;当GATE=1,需要启动定时器启动,需要保证TR0 = 1,还需要保证INT0=1。 

    3)计数器位数,TL0(5)+TH0(8) = 13,因此方式0为13位的定时器/计数器。

 

    注:

          1)选择T0引脚计数,是负跳变(下降沿)的计数;

          2)T1的启动控制关系为TR1&((!GATE)+INT1);

          3)  方式0中,TL有8位,只有低5位起作用。

          4)当数据溢出时,TF0/TF1置1,响应中断后(TF0/TF1复位),进入定时器中断服务函数(因为数据溢出已经TH与TL清空,需要再次重装初值)。

    

     方式1的逻辑结构与方式0的相似,方式1是16位的定时器/计数器,因此TL的8位数据全部用完 TL0(8)+TH0(8) = 16

    

    方式2:

       逻辑结构图:

    

        

    从逻辑结构图上看,计数源选择、定时器/计数器启动控制与方式0(1)是一样的。TL0的8位,用于计数;TH0的(8位)用于自动重装。也就是说设置的时候TL0 = TH0,当TL0计数时,CPU响应响应中断,TH0重新自动复制给TL0,不需要在函数中再设置TL的数值。

 

    方式3:

    逻辑结构图:

    

        

    从方式3中,可以看到蓝色区域与与绿色区域的构成的定时器/计数器与方式0、1的一致,不过它是TL0是8位定时器/计数器。

    而红色区域则是当使用方式3,定时器/计数器T0的TH0将会占用T1的中断标记TF1与TR1控制定时器启动,TH0只能对机器周期进行计数。

    

    总结:

    1)除了方式2,以外其余的方式都要在定时器中断函数中,对TH0与TL0重新赋值;

    2)方式3,将会占用T0将会占用T1的TR1与TF1。而且TH0构成的定时器/计数器只用于机器周期的计数。

 

---------------------------------------------------------

如果觉得文章还不错,那就扫码关注吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颖川初尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值