新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 跟我学51单片机(二):单片机内部定时/计数器和中断系统

跟我学51单片机(二):单片机内部定时/计数器和中断系统

作者:时间:2013-02-07来源:网络收藏

  在上文中提到定时器溢出和中断,什么是定时器溢出呢?我们可以这样理解:往一个盆中滴水,水滴持续落下,盆中的水持续变满,最终会有一滴水使得盆中的水满了(这相当于计数到最大值)。这个时候如果再有一滴水落下,这时水就会漫出来,这就是“溢出”。当然,水溢出是流到地上,而定时器溢出后将使得TF0 变为“1”。一旦TF0 由0 变成1,就会产生中断。中断就是由于某个事件的发生,CPU 暂停当前正在执行的程序,转而执行处理该事件的一个程序。该程序执行完成后,CPU 接着执行被暂停的程序的这样一个过程。这正如我们本来在做某事,有人过来请求帮忙,我们停下手中的活去帮忙,完事之后回来接着做原来的事情。根据中断引发的不同,或者CPU 响应中断的不同条件,也可以把中断划分为可屏蔽中断(也就是说我们可以拒绝帮别人忙,继续做自己的事情)和不可屏蔽中断(事情做累了,必须休息)两种。

  了解了中断原理之后,我们来看中断允许控制寄存器IE(见表4)和中断优先寄存器IP(见表5)。

表4 IE寄存器

  EA:中断允许总控制位。EA=0,禁止所有中断;EA=1,开放所有中断,但是否允许各中断源的中断请求,还要取决于各中断源的中断允许控制位的状态。这点要注意,初学者往往容易忘了开放所有中断,从而导致没法进入中断源。

  ET2 :时器/ T2 的中断允许位。

  ES :串行口的中断允许位。

  ET1 :定时器/ T1 的中断允许位。

  EX1 :外部中断1(INT1) 的中断允许位。

  ET0 :定时器/ T0 的中断允许位。

  EX0 :外部中断0(INT0) 的中断允许位。

  以上7 个中断允许控制位为0 时,禁止中断,为1 时允许中断。

表5 IP寄存器

  PT2 :定时器/ 计数器T1 中断优先级控制位。

  PS :串行口中断优先级控制位。

  PT1 :定时器/ 计数器T1 中断优先级控制位。

  PX1 :外部中断1 优先级控制位。

  PT0 :定时器/ 计数器T0 中断控制位。

  PX0 :外部中断0 中断优先级控制位。

  以上6 个中断优先级控制位分别为“0”时为低级中断,为“1”时为高级中断。如果几个同一优先级的中断源同时向CPU 申请中断,CPU 通过内部顺序查询逻辑电路,按自然优先级顺序确定该响应哪个中断请求。自然优先级由硬件形成,其优先级别从高到底为外部中断0、定时器/ 计数器T0、外部中断1、定时器/ 计数器T1、串行口中断、定时器/ 计数器T2。

  至此,对定时器控制相关的重要寄存器都介绍完毕了,接下来通过编写程序来进行验证实践。

  二、电路详解

  此讲采用和上讲一样的电路,在此不做赘述(见图1)。

图1 定时器应用实验电路图

  三、程序设计

  定时器0 应用测试程序( 控制D1 闪烁)。

  #includeAT89X52.h> (1)

  #define led P0_0 (2)

  unsigned char count=0; (3)

  void main(void) (4)

  {

  TMOD=0X01; (5)

  TH0=(65536-50000)/256; (6)

  TL0=(65536-50000)%256; (7)

  EA=1; (8)

  ET0=1; (9)

  TR0=1; (10)

  PT0=1; (11)

  while(1) ; (12)

  }

尘埃粒子计数器相关文章:尘埃粒子计数器原理


评论


相关推荐

技术专区

关闭