51单片机定时器 中断

如何使用定时计数器:

1. 首先明确一般的51单片机有两个定时/计数器,为T0和T1,

TH0/TL0 用于 T0,TH1/TL1 用于 T1。 

比如我们的定时器设置成 16 位的模式,那么每经过一个机器周期,TL1加 1 一次,当 TL1 加到 255 后,再加 1,TL1 变成 0,TH1 会加 1 一次,如此一直加到 TH1和 TL1 都是 255(即 TH1 和 TL1 组成的 16 位整型数为 65535)以后,再加 1 一次,就会溢出了,TH1 和 TL1 同时都变为 0,只要一溢出,TF1 马上自动变成 1,告诉我们定时器溢出了

b46071dc698049f694819c83b9d0b2f6.png

2.下面了解定时器的使用,定时器是通过寄存器来配置的,需要配置的寄存器有TCON和TMOD。

3.首先是通过特殊功能寄存器TCON来启动定时计数器,然后是设计定时计数器的工作模式 ,通过TMOD特殊功能寄存器。

下面看一下寄存器TCON9f3bde5e7d444173a741de1343ba88b3.png

低四位与外部中断有关的。先不管 B0-B4,我们现在只看B4-B7。B4、B5是控制定时器0,以定时器0为例:TF0位是中断标志位,当TH0和TL0位溢出后,就自动将TF0位置1,这时就发出中断请求,发生中断后,硬件置0,也就是不需要我们软件将它清0,但如果不发生中断,也就是我们只是让它产生一个定时,定时到后不进入中断,那么这一位就不会自动清0,此时,就需要软件将它清0。TR0是定时器运行控制位,当它置1时,开始计数,置0时,禁止计数,就是像一个开关。

所以我们现在来总结一下,对于TCON,我们使用定时器➕中断时,只需配置TR位。是不是很简单。

接下来看一下定时器模式寄存器TMOD

89d4d620372c436d91466a67841e4c42.png 

95271c7c5ca041c596e0f7970ab675dd.png 

 不可位寻,只能用十六进制赋值

GATE默认是0,一般设置为0就可
C/T:默认是0,0是定时器、1是计数器
4、5位是控制定时器T1,0、1是控制定时器T0

以定时器T0为例,M0和M1有四种组合,对应四种工作模式,其中要重点掌握模式一和模式二,模式一为16为定时/计数模式,即TH和TL组成16位定时器,最大数为65535,超出后就将溢出,会使TF位置1。

下面尝试计算为TH和TL赋值

十六位定时器溢出是65535
我们可以给给 TH0 和 TL0一个初始值,让它们经过 18432 个机器周期后刚好达到 65536
 初值 y = 65536 - 18432 = 47104
转成 16 进制就是 0xB800,也就是 TH0 = 0xB8,TL0 = 0x00。  

定时器讲完了 我们来讲讲中断

8051单片机提供5个中断源,包括两个外部中断源 
INT0和INT1 ,两个定时器/计数器中断源T0和T1,以及一个串口中断源。

d02ce7550a984d9fbf8a70c8108aff96.png

 与中断有关的定时器有三个,分别为TCON、IE和IP。

先来讲讲TCON,记不记得我们之前在配置定时器时曾使用过这个寄存器,其中第四位我们没有用,因为那是和中断有关的寄存器位

6ac3cc12063f413a806f29d1140d0379.png

71c657c217944e49b560ccc924eef207.png 

IE0和IE1时外部中断允许标志位,IT是用来控制两个外部中断的触发方式 ,以IT1为例,IT1为1时,触发方式为下降沿触发,为0时,是低电平触发,当发生中断时,会将IE1置1,相当于之前讲过的TF位。

第二个寄存器IE

8e897b2b0345415a826c505e81a980a0.png

EA为总开关

其余几个相当于各个中断的小开关,当EA位0时,整个中断被禁止,当EA位1时,再看各个小开关

第三个寄存器IP

94731f463ff046d1a8ef2979e8a325e1.png 

下面讲讲中断函数的编程格式

eff76c6ab0744a3bb8334ea30a58a5d8.png

abe76e58f037447fb43771ea6f335047.png

95a426a92dca4f4387362e3c9d1505ac.png  

下面是中断的基本配置方式和代码

e84300018d214ce8ad7753a8f8047c3d.png 

fcb294dd9f694331b33ab3b5ba199e5e.png

c8fece36cec24c7ca30e1b8cc7335ce7.png 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值