MCS--51中断系统

来源:互联网 发布:mac 极点五笔输入法 编辑:程序博客网 时间:2024/05/01 19:16

MCS-51系列单片机的中断系统及定时器/计数器

1中断源

 通常,计算机的中断源有下列几种:

 (1)一般输入/输出设备。当外设准备就绪时可以向CPU发出中断请求,从而实现外设与CPU的通信。如键盘、打印机等。

 (2)实时时钟或计数信号。如定时时间或计数次数一到,则向CPU发出中断请求,要求CPU予以处理0

 (3)故障源。当采样或运算结果出现超出范围或系统停电时,可以通过报警、掉电等信号向CPU发出中断请求,要求CPU加以处理。

 (4)为调试程序而设置的中断源。为了便于控制程序的调试,及时检查中间结果可以在程序中设置一些断点或单步执行等。
2. MCS-51系列单片机的中断系统

               图32 MCS51系列单片机8051的中断系统内部结构图


3.定时器/计数器控制寄存器TCON

   TCON为定时器/计数器控制寄存器,

TFl

TRl

TF0

TRO

IEl

ITl

IEO

IT0


  TCON寄存器各位的含义如下:
  IT0:外部中断INTO的中断触发方式选择位。
  IT0位清为0时,外部中断INTO为电平触发方式。在这种触发方式中,CPU在每一个机器周期采样INTO(P32)引脚的输入电平,当采样到低电平时,置INT0的中请求标志位IE01,采样到高电平清IE0位为0。在采用电平触发方式时,外部中断源(输入到INTO,即P32引脚)上的必须保持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行结束之前,外部中断源的有效信号必须被清除,否则将产生另一次中断。

外部中断电平触发方式为低电平有效,所以为了保证CPU能正确采样电平状态,要求外部中断源INT0interrupt)有效的低电平信号至少维持一个周期,因为它一个周期一采集嘛,

IT0位置为1时,外部中断INT0为边沿触发方式。在这种触发方式中,CPU在每个机器周期采样INTO(P32)引脚上的输入电平。如果在相继的两个机器周期,一个周期采样到INTO为高电平,而接着的下一个周期采样到低电平,则置INTO的中断请求标志位IE01,即当IE0位为l时,表示外部中断INTO正在向CPU请求中断,直到该中断被CPU响应时,才由硬件自动将IE0位清为0。因为CPU在每一个机器周期采样一次外部中断源输入引脚的电平状态,因此采用边沿触发方式时,外部中断源输入的高电平信号和低电平信号时间必须保持在一个机器周期以上,才能保证CPU检测到此信号由高到低的负跳变。

  IE0:外部中断:当IE0位为l时,表示外部中断INTO正在向CPU请求中断,且当CPU响应该中断时由硬件自动对IE0进行清0
  1T1:外部中断INTO的中断触发方式选择位。功能与IT0相同。
  IEl:外部中断INTO的中断请求标志位。功能与IE0相同。
  TR0:定时器/计数器T0的启动标志位。当TR0位为0时,不允许T0计数工作;当TRO位为l时,允许T0定时或计数工作。
  TF0:定时器/计数器T0的溢出中断请求标志位。在定时器/计数器T0被允许计数后,从初值开始加l计数,当产生计数溢出时由硬件自动将TF0位置为1,通过TF0位向CPU申请中断,一直保持到CPU响应该中断后才由硬件自动将TF0位清为0。当TF0位为0时,表示T0未计数或计数未产生溢出
  TRl:定时器/计数器Tl的启动标志位。功能与TR0相同。
  TFl:定时器/计数器Tl的溢出中断请求标志位。功能与TF0相同。

4.串行口控制寄存器SCONserial

SM0

SMl

SM2

REN

TB8

RB8

TI

RI


  SCON寄存器各位的含义如下:

  R1:串口接收中断请求标志位。当串行以一定方式接收数据时,每接收完一帧数据,由硬件自动将Rl位置为1。而Rl位的清0必须由用户用指令来完成。
  T1:串口发送中断请求标志位。当串口以一定方式发送数据时,每发送完一帧数据,由硬件自动将Tl位置为l。而Tl位的清0也必须由用户用指令来完成。

  写程序时要注意注意:在中断系统中,将串行口的接收中断Rl和发送中断Tl经逻辑或运算后作为内部的一个中断源。CPU响应串口的中断请求时,CPU并不清楚是由接收中断产生的中断请求还是由发送中断产生的中断请求,所以用户在编写串口的中断服务程序时,在程序中必须识别是RI还是Tl产生的中断请求,从而执行相应的中断服务程序。

5中断允许控制

   MCS51系列单片机的5个中断源都是可屏蔽中断。也就是说用户则可以通过软件方法来控制它们是否允许CPU去响应由图32可知,CPU对中断源的中断开放或中断屏蔽的控制是通过中断允许控制寄存器IE来实现的。IE的字节映像地址为0A8H,既可以按字节寻址,也可以按位寻址。当单片机复位时,IE被清为0
  通过对IE的各位的置1或清0操作,实现开放或屏蔽某个中断,也可以通过对EA位的清O来屏蔽所有的中断源。IE的格式如下.

EA

----

-----

ES

ET1

EX1

ETO

EX0


  IE寄存器各位的含义为:
  EA:总中断允许控制位。当EA位为l时,开放所有的中断。
  ES:串口中断允许控制位。当ES位为lEA位也为1时,开放串口中断。
  ETl:定时器/计数器Tl的中断允许控制位。当ETl位为lEA位也为1时,开放Tl的溢出中断。
  EXlINT1的中断允许控制位。当EXl位为lEA位也为1时,开放INT1
  ET0:定时器/计数器T0的中断允许控制位。功能与ETl相同。
  EX0INT0的中断允许控制位。功能与EXl相同。
               
6中断优先权管理

  在中断系统中,要使某一个中断被优先响应的话,就要依靠中断优先权控制。MCS-51系列单片机对所有中断设置了两个优先权,每一个中断请求源都可以编程设置为高优先权中断或低优先权中断,从而实现二级中断嵌套。为了实现对中断优先权的管理,在MCS51内部提供了一个中断优先级寄存器IP


-------

--------


PS


PTl


PXl


PT0


PXO

 

  IP寄存器各位的含义如下:
  PX0PT0PXlPTlPS分别为INTOTOINT1Tl和串口中断优先级控制位。当相应的位为0时,所对应的中断源定义为低优先级,相反则定义为高优先级。

          
 7.定时器/计数器T0Tl的方式寄存器TMOD

  特殊功能寄存器TMODT0Tl的工作方式寄存器,其格式如下:

TMOD的低4位为T0的方式字段,高4位为Tl的方式字段,它们的含义是完全相同的。
  M1 M0T0Tl的工作方式选择位,其对应关系如表31所示。
  表31 T0T1工作方式选择位的意义

M1  M2

工作方式

功能说明

0  0

方式0

3位定时器/计数器工作方式

0  1

方式1

16位定时器/计数器工作方式

1  0

方式2

自动再装入的8位定时器/计数器工作方式

1  1

方式3

T0:分为两个8位定时器肘数器,Tl:停止计数

 

 

CT:定时器或计数器方式选择位。当CT位为0时,选择定时器方式。在定时器方式中,以时钟信号的l2分频信号作为计数信号,也就是每一个机器周期定时器加1。当系统的时钟信号频率确定后,定时器从初值开始加1,到定时器溢出所需要的时间是固定的,所以称为定时器方式。

  当CT位置为1时,选择计数器方式。在计数器方式中,对外部引脚(T0P34TlP35)上的输入脉冲信号进行计数


  GATET0Tl的门控位。GATE位为0,定时器计数器T0Tl的运行仅受TR0TRl的控制,不受外部引脚电平的状态的影响。GATE位置为l,定时器/计数器T0Tl的运行不仅受TR0TRl的控制,而且还受到外部引脚电平状态的控制(INT0控制T0INT1控制Tl)。即只有当INT0(INTl)引脚为高电平且TRO(TRl)位为l时才启动TO(T1)计数,当INTO(INTl)引脚为低电平或TR0(TRl)位为0时均使T0(T1)停止计数。

8 定时器/计数器T0Tl的工作方式

  1.方式0

  方式013位定时器/计数器工作方式,方式0的内部结构如图35所示
  方式0TL0TLl的低5位和TH0THl8位组成。当TL0TLl的低5位产生溢出进位时向TH0THl进位,TH0THl计数溢出时置溢出中断请求标志位TF0TFl1,向CPU请求中断。
  由图35可知,在方式0T0Tl计数脉冲控制电路中,有一个方式电子开关和允许计数控制电子开关。CT位为0,方式电子开关与上面接通,以时钟频率的l2分频信号作为T0Tl的计数信号;CT位为l,方式电子开关与下面接通,此时以TO(P34)Tl(P35)引脚上的输入脉冲作为T0Tl的计数脉冲。当GATE位为0时,由TR0TRl控制定时器工作,当GATE位为l时,定时器不仅受TR0TRl的控制,而且还受INT0/INT1引脚上的电平控制。

  
   2.方式1

   方式l16位定时器/计数器工作方式,方式1的内部结构如图36所示。
方式lTL0TLl8位和TH0THl8位组成。当TL0TLl8位产生溢出进位时向TH0THl进位,TH0THl计数溢出时置溢出中断请求标志位TF0TFl1,向CPU请求中断。

                       图36方式l的内部结构图


  由图36可知,方式1T0Tl计数脉冲控制电路与它们方式0的情况相似,仅仅是计数器的位数不同而已。

   3.方式2

  方式2为自动恢复计数初值的8位定时器/计数器工作方式。T0Tl工作于方式0或方式1时,若需要重复计数,就需要用户用指令重新填充初值;而方式2在计数器溢出时会自动地装入新的计数初值,开始新一轮的计数。由于方式0或方式1是通过指令装入计数初值的,而执行指令需要时问,因此,在方式2的定时时间比较准确。方式2的内部结构如图37所示。




  37方式2的内部结构图


  在方式2时,TL0TLl作为8位计数器,TH0THl为自动恢复初值的8位计数器。当TL0TLl计数发生溢出时,一方面置溢出中断请求标志TF0TFl1,向CPU请求中断,同时又将T0THl的内容送入TL0TLl,使T0Tl从初值开始重新加l计数。因此T0Tl工作于方式2时,定时精度高,但定时时间范围小。
  由图3.7可知,方式2TO/T1计数控制与方式0和方式1完全相同,不同之处在于当CPU响应T0Tl的溢出中断后会自动将TH0THl的内容填充到TL0TLl

  4.方式3
  方式3为两个8位定时器肘数器工作方式,它只适用于定时器/计数器T0,若将Tl设置为方式3,则Tl将停止计数。方式3内部逻辑结构如图38所示。

   由图38可知,方式3是将T0拆分为两个8位定时器/计数器。其中8位计数器TL0,使用原来T0的控制位(CTGATETR0IN T0)形成一个8位的定时器/计数器,它既可以定时(对时钟频率的l2分频信号进行计数),也可以实现计数;而8位计数器TH0,占用原来Tl的控制位(TRlTFl),它只能对内部计数脉冲进行计数,其运行仅受TRl位的控制,而与外部引脚INTl的电平状态无关。
   定时器/计数器T0工作于方式3时,定时器/计数器Tl仍可设置为方式0、方式1、方式2。但由于TRlTFl已被定时器TH0占用,此时定时器/计数器仅由控制位CT设置其定时或计数方式,当计数器计满发生溢出时,只能将输出送往串行口。在这种情况下,Tl一般用做串行口波特率发生器,或不需要中断的场合。

               

原创粉丝点击