MCS-51系列单片机的中断系统.ppt_第1页
MCS-51系列单片机的中断系统.ppt_第2页
MCS-51系列单片机的中断系统.ppt_第3页
MCS-51系列单片机的中断系统.ppt_第4页
MCS-51系列单片机的中断系统.ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章MCS 51系列单片机的中断系统 5 1中断概述5 2MCS 51中断系统5 3中断响应5 4中断系统的应用 5 1中断概述 中断技术具有以下优点 分时操作 CPU可以分时为多个I O设备服务 提高了计算机的利用率 实时响应 CPU能够及时处理应用系统的随机事件 系统的实时性大大增强 可靠性高 CPU具有处理设备故障及掉电等突发性事件能力 从而使系统可靠性提高 1 中断当CPU正在处理某项事件时 如果外界或内部发生了紧急情况 中断请求 CPU暂停正在处理的工作转而去处理这个紧急情况 中断响应和中断处理 待处理完以后再回到原来被中断的地方 继续执行原来被中断了的程序 中断返回 这一过程称为中断 在中断系统中 经常要用到以下几个概念 主程序 CPU正常情况下运行的程序中断源 把向CPU提出中断申请的设备中断请求 由中断源向CPU所发出的请求中断的信号中断响应 CPU在满足条件情况下接受中断申请 终止现行程序转而为申请中断的对象服务中断服务子程序 为服务对象服务的程序断点 现行程序被中断的地址中断返回 中断服务子程序结束后返回到原来程序见下图这里需要注意的有两个概念 保护断点和保护现场 保护断点 指的是当CPU响应外设提出的中断请求 在转入中断服务子程序之前 把主程序断点也就是程序计数器PC的当前值保存起来 以便中断服务子程序执行结束后返回到主程序 从断点处继续执行主程序 保护现场 指的是由于CPU执行中断服务子程序时 可能要使用主程序中使用过的累加器 寄存器或标志位 为了使这些元件的值在中断服务子程序中不被冲掉 在进入中断服务子程序前 要将有关寄存器保护起来 在中断服务子程序执行完时 还必须恢复原寄存器的内容及原程序中断处的地址 即恢复现场和恢复断点 保护现场和恢复现场是通过在中断服务子程序中采用堆栈操作指令PUSH和POP实现的 而保护断点 恢复断点是由CPU响应中断和断点返回时自动完成的操作 2 中断源中断源是指在中断系统中 向CPU发出中断请求的来源 中断可以人为设定 也可以是为响应突发性随机事件而设置 通常有I O设备 实时控制系统中的随机参数和信息故障源等 MCS 51单片机共有五个中断源 分别是外部中断0 定时器 计数器0溢出 外部中断1 定时器 计数器1溢出 串行口中断等 3 中断源入口地址具体入口如下 中断源入口地址INT00003 T0000BHINT10013HT1001BHRI TI0023H在这些单元中往往是一些跳转指令 跳到真正的中断服务程序 因为给每个中断源安排的空间只有8个单元 4 中断嵌套中断优先级越高 则响应优先权就越高 当CPU正在执行中断服务程序时 又有中断优先级更高的中断申请产生 这时CPU就会暂停当前的中断服务转而处理高级中断申请 待高级中断处理程序完毕再返回原中断程序断点处继续执行 这一过程称为中断嵌套 MCS 51系列单片机能实现二级中断嵌套 中断嵌套过程如图5 1所示 图5 1中断嵌套过程示意图 5 中断优先级及排队当系统有多个中断源时 就可能出现同时有几个中断源申请中断 而CPU一个时间只能响应并处理一个中断请求 则要排队 1 按优先级排队 根据任务的轻重缓急 安排优先级 任务紧急的先响应 可以暂缓的后响应 2 循环轮流排队 不分级别高低 CPU轮流响应各个中断源的中断请求 5 2MCS 51中断系统 中断系统是指能实现中断功能的那部分硬件电路和软件程序 中断系统需要完成的工作 1 自动 及时响应中断 异常事件 2 进行中断优先权的排队3 实现中断嵌套4 实现中断返回 5 2 1MCS 51的中断系统的内部结构 1 中断源 1 外部中断源 外部中断0 INT0 由P3 2提供 外部中断1 INT1 由P3 3提供 2 内部中断源T0溢出中断 片内定时器0或P3 4引脚上计数器0溢出中断请求T1溢出中断 片内定时器1或P3 5引脚上计数器1溢出中断请求串行口中断RI TI 由片内串行口提供 2 MCS 51单片机中断系统的内部结构 5 2 2MCS 51单片机与中断有关的特殊功能寄存器 与中断控制有关的控制寄存器有四个 TCON 定时器 计数器控制寄存器SCON 串行口控制寄存器IE 中断允许控制寄存器IP 中断优先级控制寄存器 1 定时器 计数器控制寄存器TCONTCON寄存器是用来锁存定时器 计数器T0 T1的溢出中断请求源和外部中断请求源 字节地址为88H 可以位寻址 位地址是88H 8FH TCON 0 TCON 7 其格式为 TCON寄存器中和中断请求及控制相关的位主要有 TF1 定时器 计数器1 T1 的溢出中断标志位 当T1从初值开始加1计数到计数满产生溢出时 由硬件将TF1置1 直到CPU响应中断时由硬件复位 也可用软件查询该标志 并由软件清0 TF0 定时器 计数器0 T0 的溢出中断标志位 IT1 外部中断1的中断触发方式控制位 当IT1 0时 外部中断1为电平触发方式 此时外部中断是通过检测INT1端的输入电平 低电平 来触发的 采用电平触发时 输入到INT1的外部中断源必须保持低电平有效 直到该中断被响应 同时在中断返回前必须使电平变高 否则将再次产生中断 当IT1 1时 外部中断1为下降沿触发方式 CPU如果在一个周期中采样到高电平 在下个周期中采样到低电平 则硬件使IE1置1 向CPU请求中断 IT0 外部中断0的中断触发方式控制位 IE1 外部中断1 INT1 的中断请求标志位 如果IT1 1 则外部中断1引脚上得电平由1变为0时 IE1由硬件置位 外部中断1请求中断 在CPU响应该中断时自动由硬件复位清零 IE0 外部中断0 INT0 的中断请求标志位 2 串行口控制寄存器SCON串行口控制寄存器SCON中的D1和D0两位为TI和DI 分别用作串行口的接收中断请求和发送中断请 字节地址为98H 位地址为98H 9FH SCON 0 SCON 7 其格式如下 TI SCON 1 串行发送中断标志 RI SCON 0 串行接收中断标志 当CPU转入串行口中断服务程序入口时不复位DI TI 必须由用户用软件来复位 RI TI的中断入口都是0023H 所以CPU响应后转入0023H开始执行服务程序 首先必须判断是RI中断还是TI中断 然后进行相应服务 在返回主程序之前必须用软件将RI或TI清除 否则会出现一次请求多次响应的错误 3 中断允许控制寄存器IE在MCS 51中断系统中 中断允许或禁止是由中断允许寄存器IE控制的 字节地址为0A8H 其格式如下 中断允许寄存器IE对中断的开放和关闭实行两级控制 所谓两级控制 就是有一个总开关中断控制位EA 当EA 0时 则屏蔽所有的中断申请 即任何中断申请都不接受 当EA 1时 CPU开放中断 但其它的中断源是否可被CPU响应 还要由IE中对应位的状态来决定 IE中的各位功能如下 EA CPU中断允许位 EA 0 CPU禁止所有中断 即CPU屏蔽所有的中断请求 EA 1 CPU开放中断 但每个中断源的中断请求是允许还是被禁止 还需由各自的允许位确定 ES 串行口中断允许位 ES 1 允许串行口中断 ES 0 禁止串行口中断 ET1 定时器 计数器1 T1 的溢出中断允许位 ET1 1 允许T1中断 ET1 0 禁止T1中断 EX1 外部中断1中断允许位 EX1 1 允许外部中断1中断 EX1 0 禁止外部中断1中断 ET0 定时器 计数器0 T0 的溢出中断允许位 ET0 1 允许T0中断 ET0 0 禁止T0中断 EX0 外部中断0中断允许位 EX0 1 允许外部中断0中断 EX0 0 禁止外部中断0中断 中断允许寄存器中各相应位的状态 可根据要求用指令置位或清零 从而实现该中断源允许中断或禁止中断 复位时IE寄存器被清零 例5 1如果我们要设置外中断1 定时器1中断允许 其它不允许 请设置IE的相应值 a 用字节操作指令实现MOVIE 8CH或MOVA8H 8CH b 用位操作指令实现SETBEA 使EA 1 CPU开中断SETBET1 使ET1 1 定时 计数器1允许中断SETBEX1 使EX1 1 外中断T1允许中断 4 中断优先级控制寄存器IPMCS 51中断系统提供两个中断优先级 每一个中断请求源都可以设置为高优先级中断源或低优先级中断源 字节地址为B8H 位地址为B8H BCH IP 0 IP 4 其格式如下 专用寄存器IP为中断优先级寄存器 用户可用软件设定相应位为1 对应的中断源被设置为高优先级 相应位为0 对应的中断源被设置为低优先级系统复位时 均为低优先级该寄存器可以位寻址 自然优先权顺序 例5 2设有如下要求 将T0 外中断1设为高优先级 其它为低优先级 求IP的值 解 IP的前3位没用 可任意取值 设为000 后面根据要求写就可以了 IP的值就是06H 5 中断优先级遵循的基本规则MCS 51中断系统具有两级优先级 由IP寄存器把各个中断源的优先级分为高优先级和低优先级 它们遵循下列两条基本规则 1 低优先级中断源可被高优先级中断源所中断 而高优先级中断源不能被任何中断源所中断 2 一种中断源 不管是高优先级或低优先级 一旦得到响应 与它同级的中断源不能再中断它 5 3中断响应 1 中断响应的过程单片机一旦响应中断请求 就由硬件完成以下功能将相应的优先级状态触发器置1 以阻断后来的同级或低级的中断请求 执行一条硬件LCALL指令 即把程序计数器PC的内容压入堆栈保存 再将相应的中断服务程序的入口地址送入PC执行中断服务程序 中断响应过程的前两步是由中断系统内部自动完成的 而中断服务程序则要由用户编写程序来完成 CPU封锁对中断的响应的情况 同级或高优先级的中断已在进行中 当前的机器周期还不是正在执行指令的最后一个机器周期 正在执行的指令完成前 任何中断请求都得不到响应 正在执行的是一条RETI或者访问特殊功能寄存器IE或IP的指令 在RETI或读写IE或IP之后 不会马上响应中断请求 而至少执行一条其它指令之后才会响应 使用时 通常在这些入口地址处存放一条跳转指令 使程序跳转到用户安排的中断服务程序起始地址上去 ORG0000HLJMPSTAORG0003HLJMPINT0ORG0100HSTA INT0 RETI 中断返回RETI指令的具体功能是 将中断响应时压入堆栈保存的断点地址从栈顶弹出送回PC CPU从原来中断的地方继续执行程序 将相应中断优先级状态触发器清0 通知中断系统 中断服务程序已执行完毕 注意 不能用RET指令代替RETI指令 在中断服务程序中PUSH指令与POP指令必须成对使用 否则不能正确返回断点 2 中断响应条件和时间1 中断响应条件中断源有中断请求 此中断源的中断允许位为1 CPU开中断 即EA 1 同时满足时 CPU才有可能响应中断 2 中断响应时间响应时间 从查询中断请求标志位到转向中断服务入口地址所需的机器周期数 1 最快响应时间以外部中断的电平触发为最快 从查询中断请求信号到中断服务程序需要三个机器周期 1个周期 查询 2个周期 长调用LCALL 2 最长时间若当前指令是RET RETI和访问IP IE指令 紧接着下一条是乘除指令发生 则最长为8个周期 2个周期执行当前指令 其中含有1个周期查询 4个周期乘除指令 2个周期长调用 8个周期 3 中断处理过程中断请求中断响应中断处理中断返回 5 4中断系统的应用 在中断服务程序编程时 首先要对中断系统进行初始化 也就是对几个特殊功能寄存器的有关控制位进行赋值 具体来说 就是要完成下列工作 开中断和允许中断源中断 确定各中断源的优先级 若是外部中断 则应规定是电平触发还是边沿触发 1 主程序的初始化在MCS 51单片机中 管理和控制中断源的项目有 1 CPU开中断与关中断 2 某个中断源中断请求的允许和禁止 屏蔽 3 各中断源优先级别的设定 4 外部中断请求的触发方式 中断管理和控制程序一般不独立编写 而是通过主程序的初始化来实现 所谓初始化 是对将要用到的MCS 51系列单片机内部部件或扩展芯片进行初始工作状态设定 针对中断来说 就是对IE IP进行初始化编程 实现上述要求 2 中断服务程序 中断服务程序是一种具有特定功能的独立程序段 它为中断源的特定要求服务 以中断返回指令结束 在中断响应过程中 断点的保护主要由硬件电路来完成 对用户来说 在编写中断服务程序时 主要需考虑现场的保护与恢复 CH1 PUSHACC POPACCRETI 中断服务程序一般编写格式 3 中断服务程序编写中的注意事项 1 视需要确定是否保护现场 2 及时清除那些不能被硬件自动清除的中断请求标志 以免产生错误的中断 3 中断服务程序中的压栈 PUSH 与出栈 POP 指令必须成对使用 以确保中断服务程序的正确返回 4 主程序和中断服务程序之间的参数传递与主程序和子程序的参数传递方式相同 例 空调制冷控制系统温度预置案例 外部中断0服务程序入口ORG0003HSJMPUP 外部中断1服务程序入口ORG0013HSJMPDOWN 温度设定中断子程序 按升温按钮的中断服务程序ORG0050HUP PUSHACCCJNE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论