1 / 31

第七章 中断系统

第七章 中断系统. 7.1 中断系统概述 7.2 MCS-51 中断系统 7.3 中断系统应用. 1. 教学内容 : 中断的几个相关概念 MCS-51 单片机的中断系统的组成和工作过程 几个应用实例 2. 教学重难点 中断的工作过程 , 中断入口地址 3. 课时 4 4. 作业 习题 3 ,4 , 5 ,7 ,8 , 11. 7.1 中断系统概述. 7.1.1 中断概念

ovid
Télécharger la présentation

第七章 中断系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第七章 中断系统 7.1 中断系统概述 7.2 MCS-51中断系统 7.3 中断系统应用

  2. 1.教学内容: 中断的几个相关概念 MCS-51单片机的中断系统的组成和工作过程 几个应用实例 2.教学重难点 中断的工作过程,中断入口地址 3.课时 4 4.作业 习题3 ,4,5 ,7 ,8,11

  3. 7.1 中断系统概述 7.1.1中断概念 中断是指计算机在执行某一程序的过程中, 由于计算机系统内、 外的某种原因, 而必须中止原程序的执行, 转去执行相应的处理程序, 待处理结束之后, 再回来继续执行被中止的原程序的过程。  采用了中断技术后的计算机, 可以解决CPU与外设之间速度匹配的问题, 使计算机可以及时处理系统中许多随机的参数和信息, 同时, 它也提高了计算机处理故障与应变的能力。 “中断”与“查询”相比: 执行效率↑实时性 ↑

  4. 7.1.2 中断源 中断源是指在计算机系统中可以向CPU发出中断请求的来源。有内部中断和外部中断两类 中断响应后所执行的处理程序称为中断服务子程序 原来正常执行的程序为主程序 主程序被断开的位置为断点 中断服务子程序的调用不是事先安排的,由硬件自动完成

  5. 7.1.3 中断系统的功能 • 实现中断调用和返回 • 实现中断优先权排队 • 实现中断嵌套 接到中断申请,并满足条件时,先压栈保护;再转入中断服务程序的入口地址;执行中断程序,并清除中断请求标志;执行完后再恢复现场,返回断点

  6. 中断优先级越高, 则响应优先权就越高。当CPU正在执行中断服务程序时, 又有中断优先级更高的中断申请产生, 这时CPU就会暂停当前的中断服务转而处理高级中断申请, 待高级中断处理程序完毕再返回原中断程序断点处继续执行, 这一过程称为“中断嵌套”。

  7. 7.2 MCS-51的中断系统 图7.1 MCS - 51中断系统结构框图

  8. 7.2.1 中断源 表 7.1 8051 中 断 源

  9. 表 7.2 中断服务程序入口地址表

  10. 7.2.2 中断的控制与管理 • MCS-51的中断的控制与管理由TCON、SCON、IE、IP四个特殊功能寄存器完成。 • CPU响应中断的前提是有中断源发出中断申请 • 中断源发出中断申请时,将由硬件置位相应的标志位 • 这些标志位由TCON和SCON锁存

  11. 1. 定时器/计数器控制寄存器TCON(88H ) (LSB) (MSB) IT0:外部中断0触发方式选择位 0:低电平触发 1: 负跳变触发 IE0:外部中断0中断请求标志 IT1、IE1 类似 IT0、IE0 TR0:定时/计数器0运行控制位 0:停止 1:运行 TF0:定时/计数器0中断溢出标志位:T0被允许计数后,计满溢出后,硬件将其置为1,向CPU发中断申请 TR1、TF1 类似 TR0、TF0

  12. 2. 串行口控制寄存器SCON(98H) MSB LSB SM0和SM1:串行口工作方式选择位 SM2:多机通信使能位 REN: 接收允许位 TB8:发送数据位8 RB8:接收数据位8 TI: 串行口发送中断请求标志 RI: 串行口接收中断请求标志

  13. 3. 中断允许寄存器 MCS - 51单片机有 5个(8052有 6个)中断源, 为了使每个中断源都能独立地被允许或禁止, 以便用户能灵活使用, CPU内部在每个中断信号的通道中设置了一个中断允许触发器, 它控制CPU能否响应中断。只有对应的中断允许触发器被使能(置“1”),相应的中断才能得到相应。

  14. 中断允许控制寄存器IE (0A8H) (MSB) (LSB) EX0:外部中断0允许位 ET0:定时器/计数器0中断允许位 EX1:外部中断1允许位 ET1:定时器/计数器1中断允许位 ES : 串行口中断允许位 EA :中断总允许位 单片机复位后,IE被清0,由用户程序设置IE的相应位来控制中断的禁止与允许

  15. 4. 中断优先级控制寄存器IP(0B8H) (MSB) (LSB) PX0:外部中断0(1-高优先级,0-低优先级) PT0:定时器/计数器0中断优先级控制位(1-高优先级,0-低优先级) PX1:外部中断1中断优先级控制位(1-高优先级,0-低优先级) PT1:定时器/计数器1中断优先级控制位(1-高优先级,0-低优先级) PS : 串行口中断中断优先级控制位(1-高优先级,0-低优先级)

  16. 当两个以上的中断源同时提出申请时,CPU到底相应哪个中断呢?当两个以上的中断源同时提出申请时,CPU到底相应哪个中断呢? 中断响应遵循两条规则: (1)低优先级中断可以被高优先级中断所中断,反之不能; (2)一种中断(不论哪个优先级)一旦得到响应,与它同级的中断不能再中断它。

  17. 当同时收到处于同一优先级的多个中断请求时,哪一个中断能得到响应,取决于“内部查询次序”,相当于在每个优先级中,还有一个“内部优先级”,如下表所示:当同时收到处于同一优先级的多个中断请求时,哪一个中断能得到响应,取决于“内部查询次序”,相当于在每个优先级中,还有一个“内部优先级”,如下表所示: 表 3.3 同级内第二优先级次序

  18. 例如, 某软件中对寄存器IE、 IP设置如下: MOV IE, # 8FH MOV IP, # 06H 则此时该系统中:  · CPU中断允许;  · 允许外部中断 0、 外部中断 1、 定时器 /计数器 0、 定时器 /计数器1提出的中断申请;  · 允许中断源的中断优先次序为:  定时器 /计数器 0>外部中断 1>外部中断 0>定时器/计数器 1。

  19. 7.3 中断系统应用 中断的过程 1. CPU响应中断的条件 • 1) 中断源发出中断申请,中断标志被锁存在TCON和SCON中 • 2)CPU允许中断 • 3)根据中断优先级排队,选出级别最高的准备响应 • 4)若CPU要响应一个中断,应没有同级或级别更高的中断正在处理 • 5)当前指令处理完成,即执行的指令到了最后一个机器周期时,才能响应中断 • 6)正在执行的指令不能与中断有关,如访问IE、IP、RETI的指令

  20. 2. 响应中断的过程 单片机一旦响应中断请求, 由硬件完成以下功能:  (1) 根据响应的中断源的中断优先级, 使相应的优先级状态触发器置 1;  (2) 通过硬件自动生成调用指令(LCALL), 并把当前程序计数器PC的内容压入堆栈;  (3) 清除相应的中断请求标志位(串行口中断请求标 志 RI和 TI除外);  (4) 把被响应的中断源所对应的中断服务程序的入口 地址(中断矢量)送入PC, 再通过转移指令转入相应的中断服务程序。

  21. 3. 中断处理过程中的问题 • CPU响应中断后,T0和T1的中断申请会自动撤消 和串行口的中断申请需要及时清除,以免被CPU再次查到误以为又有中断申请而再次响应 1) 外部中断的撤消: 利用D触发器和指令共同完成. 收到外部中断请求信号时, D触发器的CP脉冲有效, D触发器将中断请求信号锁存并送到 CPU响应中断后,应使Q端变高,撤消中断请求

  22. ANL P1, #1111 1110B ;SD有效,Q=1, 撤消中断 • ORL P1, #0000 0001B ;SD无效,CP控制Q,接受中断 • 申请 • 2) 串行口中断申请的撤消 • CPU响应中断后,要通过软件撤消中断申请 • CLR TI • CLR RI

  23. 1. 借用定时器扩展外部中断源 T0和T1是两个内部中断源,若不作为定时器和计数器使用,可将其扩展为外部中断源 方法: 将T0或T1设置为计数器工作方式, 初值最大,来一个脉冲,加1即产生溢出中断

  24. 例如: 将T0设置为方式2计数,TH1=TL1=0FFH • 初始化程序: • MOV TMOD #60H • MOV TL0 , #0FFH • MOV TH0 , #0FFH • SETB EA • SETB ET0 • SETB TR0 • T1脚(P3.5)上每来一个负跳变就会向CPU发出中断申请,相当增加一个边沿触发的外部中断源

  25. +5V • 2. 中断和查询结合的方法 • 在外部中断1引脚上连接4个外设的中断源,通过OC门产生中断请求信号,无论哪个外设提出中断请求,都会使变低,并可通过查询P1.0-P1.3得知是哪个外设提出中断申请 (将一个外部中断源变为4个中断源) WS1 WS2 WS3 8031 WS4 P1.0 P1.1 P1.2 P1.3

  26. ORG 0013H • LJMP ZDZ • ZDZ: PUSH PSW • PUSH A • JB P1.0, AWS1 • JB P1.1, AWS2 • JB P1.2, AWS3 • JB P1.3, AWS4 • INTR: POP A • POP PSW • RETI • AWS1: • ………

  27. 3. 例:规定外部中断1为边沿触发方式,低优先级, • 在中断服务程序中将寄存器B的内容右循环移一位, • B的初值为10H,试编写主程序和中断服务子程序. • 先初始化 • 再给定中断服务程序的入口地址 • 再写主程序和中断服务子程序

  28. ORG 0000H • LJMP MAIN • ORG 0013H • LJMP INT • MAIN: SETB EA • SETB EX1 • CLR PX1 • SETB IT1 • MOV B, #10H • LOOP: SJMP LOOP • INT: MOV A, B • RR A • MOV B, A • RETI

  29. 例: 在INT0引脚外接脉冲信号,要求每送来一个脉冲,就把50H单元的内容加1,若50H单元计满,则进位51H单元,利用中断结构编制一个脉冲计数程序 ORG 0000H AJMP MAIN ORG 0003H AJMP SUBG ORG 2000H MAIN: MOV A, #00H MOV 50H, A ; 单元内容清零 MOV 51H, A ;单元内容清零 MOV SP, #70H

  30. SETB IT0 • SETB EA • SETB EX0 • AJMP $ • ORG 3000H • SUBG: PUSH ACC • INC 50H • MOV A,50H • JNZ BACK • INC 51H • BACK: POP ACC • RETI

  31. 4.用优先编码器扩展中断源

More Related