单片机原理及利用 - 中断零碎

中断就是对紧急事件实时处理能力,中断响应和处理过程:

  1. 中断请求源收回中断请求
  2. 如果中断请求被容许,单片机暂停停止以后正在执行的主程序保留状态
  3. 转向中断服务处理程序解决中断服务申请
  4. 解决完中断请求后,回到原来被停止程序之处(断点),继续执行被中断的程序

硬件主动生成一条长调用指令 LCALL addr16;,addr16 就是程序存储区中的中断入口地址,而后 CPU 执行该指令,首先将 PC 的内容压入堆栈爱护断点,再将中断入口地址装入 PC,使程序转向响应中断请求的中断入口地址,通常中断入口地址处寄存的是无条件转移指令,使得程序执行转向到中断服务程序入口

劣势没有中断时须要定时查问是否有服务申请产生,应用中断时能够缩小定时查问工夫,进步了工作效率实时性

每个中断源都能够用软件独立地管制为容许中断或关中断,每一个中断源的中断优先级均可用软件设置

中断请求源

中断名英文中断入口地址
内部中断请求 0INT0*0003H
定时器/计数器 T0T0000BH
内部中断请求 1INT1*0013H
定时器/计数器 T1T1001BH
串口中断请求TX/RX0023H

中断请求标记寄存器

TCON 寄存器

TCON 为定时器/计数器的管制寄存器,用于管制 T0 T1 的启动和进行计数,同时蕴含了 T0 T1 的状态,字节地址为 88H,可位寻址

  • TF1:定时器/计数器 T1 的溢出中断请求标记位
  • TR1: 计数运行管制位
  • TF0:定时器/计数器 T0 的溢出中断请求标记位
  • TR0:计数运行管制位
  • IE1:内部中断请求 1 的中断请求标记位
  • IT1:抉择内部中断请求 1 的中断请求标记位
  • IE0:内部中断请求 0 中断请求标记位
  • IT0:抉择内部中断请求 0 中断请求标记位

溢出中断请求标记位:当启动 T1/T0 计数后从初值开始加 1 计数,当最高位产生溢出后由硬件使 TF1/TF0 置 1,而后向 CPU 申请中断请求,CPU 响应中断使得 TF1/TF0 标记由硬件主动清 0,TF1/TF0 也可由软件清 0

计数运行管制位TR1/TR0 = 1 启动定时器/计数器工作的必要条件,TR1/TR0 = 0 进行定时器/计数器工作

IT0/IT1 = 0,电平触发,加到引脚 INT0* 的内部中断请求输出信号为低电平无效,并把 IE1 置为 1,转向中断服务程序时,硬件主动把 IE1 清 0
IT0/IT1 = 1,跳沿触发,加到引脚 INT0* 的内部中断请求输出信号电平从高到低的负跳变无效,并把 IE1 置为 1,转向中断服务程序时,硬件主动把 IE1 清 0

SCON 寄存器

SCON 为串行口管制寄存器,字节地址为 98H,可位寻址,低 2 位锁存串行口的发送中断接管中断的中断请求标记 TI 和 RI

  • TI:串行口的发送中断请求标记位,
  • RI:串行口的承受中断请求标记位,

TMOD 寄存器

TMOD 寄存器用于抉择定时器/计数器 T0 T1 的工作模式工作办法

  • GATE:门控位,0 时仅由运行管制位 TRx 来管制定时器/计数器运行,1 时用外中断引脚(INT0* 和 INT1*)上的电平和运行管制位 TRx 独特管制定时器/计数器运行
  • C/T* :计数器模式和定时器模式抉择位,0 为定时器工作模式,1 为计数器工作模式
  • M1 M0:工作形式抉择位

中断请求与中断优先级管制

中断容许寄存器 IE

  • EA:中断容许总开关管制位,1 开,0 闭
  • ES:串行口中断管制位,
  • ET1:定时器/计数器 T1 的溢出中断容许位
  • EX1:内部中断 1 中断容许位
  • ET0:定时器/计数器 T0 的溢出中断容许位
  • EX0:内部中断 0 中断容许位

单片机复位后,IE 被清 0,所有中断请求被禁止,能够应用指令 SETB bit; CLR bit; 关上或敞开中断请求,也能够用字节操作指令实现

中断优先级寄存器 IP

AT89S51 的中断请求源有两个中断优先级,每一个中断请求源可由软件设置为高优先级中断低优先级中断,也可实现两级中断嵌套

两级中断嵌套:AT89S51 正在执行低优先级中断的服务程序时,可被高优先级中断请求所中断,待高优先级中断处理完毕后,再返回低优先级中断服务程序

AT89S51 复位后 IP 内容为 0,各个中断源均为低优先级中断

各中断源的中断优先级两个根本规定:

  1. 低优先级可被高优先级中断,高优先级不能被低优先级
  2. 任何中断一旦失去响应,不会再被它的同级中断源所中断

  • PS:串行口中断优先级管制位
  • PT1:定时器 T1 中断优先级管制位
  • PX1:内部中断 1 中断优先级管制位
  • PT0:定时器 T0 中断优先级管制位
  • PX0:内部中断 0 中断优先级管制位

响应中断请求的条件

中断请求被容许的条件:

  1. 总中断容许,即 IE 寄存器中的 EA = 1
  2. 该中断源收回中断请求,即对应中断请求标记 = 1
  3. 中断源中断容许位 = 1,即该中断被容许
  4. 同级更高级中断正在被服务

中断请求被封闭的条件:

  1. CPU 正在解决同级或更高级中断
  2. 所查问的机器周期不是正在执行指令的最初一个机器周期,确保指令执行完整性
  3. 正在执行 RETI 或是拜访 IEIP 的指令

内部中断触发形式

电平触发

内部中断申请触发器的状态随着 CPU 在每个机器周期采样到的内部中断输出引脚的电平变动而变动,能进步 CPU 对外部中断请求的响应速度

跳沿触发

内部中断申请触发器能锁存内部中断输出线上的负跳变,即使 CPU 临时不能响应,中断请求标记也不会失落,适宜以负脉冲模式输出的内部中断请求

中断请求的撤销

定时器/计数器中断请求的撤销

定时器/计数器中断的中断请求被响应后,硬件会主动把中断请求标记位(TF0或TF1)清 0,定时器/计数器中断请求是主动撤销的

内部中断请求的撤销

  1. 跳沿形式内部中断请求的撤销:包含中断标记位清 0外中断信号的撤销中断标记位清 0 是在中断响应后由硬件主动实现的,外中断请求信号的撤销因为跳沿信号过后主动隐没了,因而也是主动撤销的
  2. 电平形式内部中断请求的撤销:中断请求标记的撤销是主动的,但中断请求信号的低电平可能持续存在,须要利用电路在中断响应后把中断请求信号输出引脚从低电平强制改成高电平
  3. 串行口中断请求的撤销:只能够应用软件形式 CLR TI; CLR RI; 分明中断标记位

定时器/计数器构造

定时器/计数器 T0 和 T1 别离由 TH0 TL0TH1 TL1 组成

定时器/计数器 4 种工作形式

形式 0 和形式 1 在计数溢出后计数器会变为 0,从新开始计数

形式 2 和形式 3 在计数溢出后会主动复原初值

形式 0

M1 M000 时,定时器/计数器被设置为工作形式 0,此时为 13 位定时器/计数器,由 TLx 低 5 位THx 高 8 位形成,TLx 低 5 位溢出则向 THx 进位,THx 溢出则把 TCON 中溢出标记位 TFx 置 1

形式 1

M1 M001 时,定时器/计数器被设置为工作形式 1,此时为 16 位定时器/计数器,由 THx 高 8 位TLx 低 8 位形成,TLx 低 8 位溢出则向 THx 进位,THx 溢出则把 TCON 中溢出标记位 TFx 置 1

形式 2

M1 M010 时,定时器/计数器被设置为工作形式 2,此时为主动复原初值的 8 位定时器/计数器,TLx 作为常数缓冲器,当 TLx 计数溢出时,溢出标记 TFx 置 1 的同时,主动将 THx 的初值送至 TLx,使得 TLx 从新计数

形式 3

M1 M011 时,定时器/计数器被设置为工作形式 3,此时减少了一个附加的 8 位定时器/计数器,使得 AT89S51 具备 3 个定时器/计数器