260 likes | 497 Views
13. 中断的概念及 51 单片机的中断系统. 本讲主要内容:. 13-1. 演示 范例 —— 声控小车 13-2. 中断的概念 13-3. P89V51RD2 单片中断系统的构成. 13-1. 演示范例 —— 声控小车. 利用声音控制小车运动状态。 要求:编程使小车按照顺时针方向旋转,通过拍手使小车逆时针旋转 3 秒后又恢复为顺时针旋转状态。. 13-1. 演示范例 —— 声控小车. 范例分析: 设计中的主要任务: 正常状态下的顺时针运动方式; 根据拍手及时地更改运动状态; 拍手动作响应后恢复为原有运动状态。 程序设计中需要解决的主要问题 :
E N D
13 中断的概念及51单片机的中断系统
本讲主要内容: 13-1. 演示范例——声控小车 13-2. 中断的概念 13-3. P89V51RD2单片中断系统的构成 SiChuan Engineering Technical Colledge-1959
13-1. 演示范例——声控小车 • 利用声音控制小车运动状态。 • 要求:编程使小车按照顺时针方向旋转,通过拍手使小车逆时针旋转3秒后又恢复为顺时针旋转状态。 SiChuan Engineering Technical Colledge-1959
13-1. 演示范例——声控小车 • 范例分析: • 设计中的主要任务: • 正常状态下的顺时针运动方式; • 根据拍手及时地更改运动状态; • 拍手动作响应后恢复为原有运动状态。 • 程序设计中需要解决的主要问题: • 如何及时响应拍手的动作? SiChuan Engineering Technical Colledge-1959
13-1. 演示范例——声控小车 • 拍手动作的响应——硬件接口 • 声音检测电路的工作原理 • 主电路板上的声音检测电路在没有检测到声音时其输出端为高电平,当麦克风接收到一定强度的声音时其输出端变为低电平。用跳线帽短接JP17的2、3脚就可以把声音检测电路的输出接到单片机的INT0(P3.2)端。 SiChuan Engineering Technical Colledge-1959
13-1. 演示范例——声控小车 • 拍手动作的响应——硬件接口 • 声音检测电路的工作原理——灵敏度调节 • 调节RP1电位器可以调节声音检测电路的灵敏度,环境噪声比较大时,应降低灵敏度,在环境噪声较小时可以提高灵敏度。 SiChuan Engineering Technical Colledge-1959
13-1. 演示范例——声控小车 无法对外部事件实现实时响应。 没有提高资源利用率,实现资源共享。 • 拍手动作的响应——程序设计 • 方案一:根据硬件特点,当有声音时,单片机的P3.2出现低电平,故可在程序中通过查询P3.2的状态得知是否拍手。可在顺时针运动一段时间后查询P3.2的状态,查询部分程序如下: JB P3.2 EXIT ;若无拍手则返回执行原来运动状态 • 方案一存在的问题: 由于查询是在每个动作结束后进行,可能会存在如下问题: • 在小车每种运动的5秒钟内,无法查询到拍手的动作; • 当5秒钟运动结束后可能拍手的动作已过去了,查不到了,没能响应; • 反复查询和判断,使CPU利用率降低; SiChuan Engineering Technical Colledge-1959
13-1. 演示范例——声控小车 这样可以提高CPU的利用率,并对拍手动作作出及时响应。 • 拍手动作的响应——程序设计 • 方案二:只有当拍手时才中断小车当前运动,转去处理拍手动作,没有拍手动作时保持原有运动状态。 • 方案二基本思路: • 无拍手动作时,程序正常执行原有功能; • 当拍手时,“通知”CPU去处理; • CPU暂停目前的工作,根据拍手次数执行相应的操作; • 动作处理完毕后,回到暂停前的状态继续执行原有功能。 SiChuan Engineering Technical Colledge-1959
13-2. 中断的概念 事件A 事件B的处理过程 事件B 中断是 什么? 中 断 中断请求→中断响应→中断服务→中断返回 • CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生或中断请求); • CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); • 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回)。 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 • 中断源——中断的申请方 • 中断控制寄存器——中断的控制“工具” • 中断响应——中断的“内容” • 中断返回——中断结束 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 那些部件可以向CPU发出中断申请呢? • 中断源 • 51单片机P89V51RD2有8个中断源 • 外部中断0——/INT0 • 外部中断1——/INT1 • 定时器/计数器T0中断 • 定时器/计数器T1中断 • 串行通信口中断 • PCA(可编程计数器阵列)中断 • 定时器/计数器T2中断 • 掉电中断 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 允许哪些中断? 不允许哪些中断? • 中断控制寄存器——中断允许控制寄存器 • 中断允许控制(1)——特殊功能寄存器IEN0 • EX0:允许/禁止外部中断0申请中断 • EX1:允许/禁止外部中断1申请中断 • ET0:允许/禁止定时器T0申请中断 • ET1:允许/禁止定时器T1申请中断 • ES :允许/禁止串口申请中断 • ET2 :允许/禁止定时器T2申请中断 • EC :允许/禁止PCA申请中断 • EA :中断总控位 =1,允许中断 =0,禁止任何中断 1:允许 0:禁止 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 • 中断控制寄存器——中断允许控制寄存器 • 中断允许控制(2)——特殊功能存器IEN1 • EBO:允许/禁止掉电申请中断 1:允许 0:禁止 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 • 中断控制寄存器——中断允许控制寄存器 例1:假如允许两个外部中断源INT0和INT1申请中断,如何设置? 方法二 SETB EA ;开中断总控位 SETB EX0;允许INT0中断 SETB EX1;允许INT1中断 方法一 MOV IEN0,#85H 或 MOV 0A8H,#85H SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 先响应那些中断? 后响应那些哪些中断? • 中断优先级控制(硬件优先+软件优先) • 硬件优先——单片机内部有一个默认的中断优先级顺序(8个优先级) 外部中断0 优先级最高 掉电 定时器T0 外部中断1 定时器T1 PCA 串口/SPI 定时器T2 优先级最低 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 可以人为改 变优先级吗? • 中断控制寄存器——优先级控制寄存器 • 中断优先级0低字节控制寄存器 IP0 • PX0(IP0.0):外部中断0优先级低位设定位 • PT0(IP0.1):定时/计数器T0优先级低位设定位 • PX1(IP0.2):外部中断1优先级低位设定位 • PT1(IP0.3):定时/计数器T1优先级低位设定位 • PS(IP0.4):串行口优先级低位设定位 • PT2(IP0.5):定时/计数器T2优先级低位设定位 • PPC(IP0.6):PCA中断优先级低位设定位 1:优先 0:滞后 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 • 中断控制寄存器——优先级控制寄存器 • 中断优先级0高字节控制寄存器 IP0H • PX0H(IP0H.0):外部中断0优先级高位设定位 • PT0H(IP0H.1):定时/计数器T0优先级高位设定位 • PX1H(IP0H.2):外部中断1优先级高位设定位 • PT1H(IP0H.3):定时/计数器T1优先级高位设定位 • PSH (IP0H.4):串行口优先级高位设定位 • PT2H(IP0H.5):定时/计数器T2优先级高位设定位 • PPCH(IP0H.6):PCA中断优先级高位设定位 1:优先 0:滞后 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 • 中断控制寄存器——优先级控制寄存器 • 中断优先级1低字节控制寄存器 IP1 • PBO(IP1.3):掉电中断优先级低位设定位 • 中断优先级1高字节控制寄存器 IP1H • PBO(IP1H.3):掉电中断优先级高位设定位 1:优先 0:滞后 1:优先 0:滞后 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 • 优先级对中断响应的影响: • CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。 • 正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。 • 正在进行的低优先级中断服务,能被高优先级中断请求所中断。这称之为“中断嵌套”。 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 还不能肯定吗? • 中断响应 CPU响应中断的条件是: • 中断源有中断请求 • 此中断源的中断允许位为1 • CPU开中断(即EA=1) • 同时满足时,CPU才有可能响应中断。 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 • 中断响应 遇到以下任一情况,中断响应将受阻: • CPU正在处理同级或高优先级中断; • 当前查询的机器周期不是所执行指令的最后一个机器周期。即在完成所执行指令前,不会响应中断,从而保证指令在执行过程中不被打断; • 正在执行的指令为RET、RETI或任何访问IE或IP寄存器的指令。即只有在这些指令后面至少再执行一条指令时才能接受中断请求。 • 若由于上述条件的阻碍中断未能得到响应,当条件消失时该中断标志却已不再有效,那么该中断将不被响应。就是说,中断标志曾经有效,但未获响应,查询过程在下个机器周期将重新进行。 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 主程序 中断服务程序的入口地址 断点 应 中断申请 响 断 中断服务子程序 中 • 中断响应 一旦CPU决定响应中断,则CPU会去执行相应的中断服务程序。 中断响应的过程包括: • 保护断点地址 • 程序转至中断服务程序的入口地址 • 执行中断服务子程序 • 保护和恢复现场 • 处理中断源请求 系统自动放入堆栈保护! 放到哪里去呢? SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 怎样才能找到正确的中断程序呢? • 中断响应 一旦CPU决定响应中断,则CPU会去执行相应的中断服务程序。 CPU是根据每个中断的入口来进行响应的。 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 主程序 断点 应 中断申请 响 断 中断服务子程序 中 • 中断响应 一旦CPU决定响应中断,则CPU会去执行相应的中断服务程序。 中断响应的过程包括: • 保护断点地址 • 程序转至中断服务程序的入口地址 • 执行中断服务子程序 • 保护和恢复现场 • 处理中断源请求 中断服务程序的入口地址 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 保护现场 应 响 断 中 中断源处理 回 返 恢复现场 断 中 • 中断响应——中断服务 • 保护现场 • 处理中断源要求 • 恢复现场 主程序 中断申请 SiChuan Engineering Technical Colledge-1959
13-3. P89V51RD2中断系统的构成 主程序 中断服务程序的入口地址 断点 应 中断申请 响 断 中断服务子程序 中 回 返 断 中 • 中断返回 CPU完成中断服务后,返回到原来暂停的位置(即断点),继续执行原来的程序。 • 返回方式:使用RETI指令返回 • RETI指令的任务: • 取出保存的断点地址给PC; SiChuan Engineering Technical Colledge-1959