MCS-51单片机中断源的种类及工作方式.ppt_第1页
MCS-51单片机中断源的种类及工作方式.ppt_第2页
MCS-51单片机中断源的种类及工作方式.ppt_第3页
MCS-51单片机中断源的种类及工作方式.ppt_第4页
MCS-51单片机中断源的种类及工作方式.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

2,MCS-51单片机中断源的种类及工作方式 中断控制寄存器IE、中断优先级寄存器IP及定时 器/计数器及外部中断控制寄存器TCON的使用方 法 MCS-51型单片机中断响应过程 外部中断的结构及原理 熟练编制中断服务程序,本章学习目标,3,5.1 中断的概念,执行主程序,主程序,继续执行主程序,断点,中断请求,中断响应,执行中断处理程序,中断返回,定义:当CPU正在执行程序时, 外部发生了某一随机事件请求CPU迅速处理。CPU暂时中止执行的程序, 转去处理所发生的事件,中断处理完毕,再回到原来被中止的断点继续执行原程序,这个过程叫中断。 用途:中断常用于I/O处理,故障处理。,4,中断源,发出中断请求的来源称为 中断源,软件中断源,硬件中断源,由中断指令引起中断,例如 8086CPU的 INT n 指令 MCS-51 无软件中断指令,由外设发出中断请求信号给 CPU 称硬件中断源 PC/XT 微机外设向 CPU 发中断请求信号 控制系统各种传感器发出的中断请求信号,中断系统,能够实现中断处理功能的部件称为 中断系统,5,硬件中断的分类,可屏蔽中断,非屏蔽中断,中断请求 (中断允许) 中断响应 中断请求 (中断屏蔽) X 中断响应,中断请求 中断响应,注: MCS-51 有此中方式,注: MCS-51 无此中方式,6,中断允许与中断屏蔽,中断允许开中断,中断屏蔽关中断,开/关中断的方法,有外设中断请求就有 CPU 中断响应,有外设中断请求但无 CPU 中断响应,专用标志位法,专用寄存器法,8086CPU 中对控制标志位 IF 进行操作,MCS-51 中对专用寄存器 IE 进行操作,7,5.2 MCS-51中断系统的结构,8,5.3 中断请求源,MCS-51中断系统有5个中断请求源: /INT0-外部中断0请求,低电平有效。通过P3.2引脚输入。 /INT1 -外部中断1请求,低电平有效。通过P3.3引脚输入。 T0 -定时器/计数器0溢出中断请求。 T1 -定时器/计数器1溢出中断请求。 TX/RX -串行口中断请求。当串行口完成一帧数据的发送或接收时,便请求中断。,9,MCS-51 中的中断标志位,标志位定义,标志位含义,标志位特点,由某个特殊寄存器相关位确定,若相关标志位清 0,无中断请求产生 若相关标志位置 1,有中断请求产生,中断请求发生,相关标志位自动置 1 中断处理开始,相关标志位自动清 0 中断处理开始,相关标志位手动清 0,10,定时器控制寄存器 TCON 中的中断标志位,TCON 的字节地址 88H,TCON 的位地址 88H 8FH,TCON 的标志位 IE0、IE1、TF0、TF1,TCON 的服务位 IT0、IT1、TR0、TR1,位,符号,位地址,11,TCON 中的标志位含义,与外部中断请求状态有关的标志位,IE0 /INT0 的中断请求标志位,IE1 /INT1 的中断请求标志位,若 /INT0 有效,则 IE0 = 1,由硬件自动置 1 若 MCU 响应,则 IE0 = 0,由硬件自动清 0,若 /INT1 有效,则 IE1 = 1,由硬件自动置 1 若 MCU 响应,则 IE1 = 0,由硬件自动清 0,注:外部中断为硬件自动置 1 清 0,12,TCON 中的标志位含义,与内部定时器/计数器中断有关的标志位,TF0 定时器/计数器 T0 溢出中断标志位,TF1 定时器/计数器 T1 溢出中断标志位,若 T0 溢出,则 TF0 = 1,由硬件自动置 1 若MCU响应,则 TF0 = 0,由硬件自动清 0,若 T1 溢出,则 TF1 = 1,由硬件自动置 1 若MCU响应,则 TF1 = 0,由硬件自动清 0,注:定时器/计数器中断为硬件自动置 1 清 0,13,解读: TF1-定时器/计数器T1的溢出中断请求标志位。当启动T1计数以后,T1从初值开始计数,计数器产生溢出时,由硬件使TF1置1,并向CPU发出中断请求。当CPU响应中断时,硬件将自动对TF1清0。 IE1-外部中断1的中断请求标志。当检测到INT1引脚上存在有效的中断请求信号时,由硬件使IE1置1。当CPU响应该中断请求时,由硬件使IE1清0。,14,TCON 中的服务位含义,与外部中断输入信号有关的服务位,IT0 /INT0 的中断请求触发方式选择,IT1 /INT1 的中断请求触发方式选择,IT0 = 0 电平触发方式,低电平有效 IT0 = 1 边沿触发方式,下降沿有效,IT1 = 0 电平触发方式,低电平有效 IT1 = 1 边沿触发方式,下降沿有效,注:电平触发、边沿触发的应用特点,15,TCON 中的服务位含义,与定时器/计数器工作有关的服务位,TR0 T0 计数开启/停止方式选择,TR1 T1 计数开启/停止方式选择,TR0 = 0 T0 停止计数 TR0 = 1 T0 开始计数,TR1 = 0 T1 停止计数 TR1 = 1 T1 开始计数,注:TR0、TR1 的应用在定时/计数器中讲,16,串行口控制寄存器SCON中的中断标志位,位,符号,位地址,SCON 的字节地址 98H,SCON 的位地址 98H 9FH,SCON 的标志位 TI、RI,SCON 的功能位 RB8、TB8、REN SM0、SM1、SM2,注:功能位在串行口通信中讲,17,SCON 中的标志位含义,与串行通信有关的标志位,TI 发送数据后的中断标志位,RI 接收数据后的中断标志位,若串口发送完数据,则 TI = 1,由硬件自动置 1 若串口还要发数据,则应手动编程使 TI = 0,若串口接收完数据,则 RI = 1,由硬件自动置 1 若串口还要收数据,则应手动编程使 RI = 0,注:串行口中断为编程手动清 0,18,解读: TI-串行口发送中断请求标志。CPU将一个数据写入发送缓冲器SBUF时, 就启动发送。每发送完一帧串行数据后,硬件置位TI。但CPU响应中断时,并不清除T1, 必须在中断服务程序中由软件对TI清0 RI-串行口接收中断请求标志。在串行口允许接收时,每接收完一个串行帧, 硬件置位。CPU响应中断时不会清除RI, 必须用软件对其清0。,19,中断标志位的总结,中断标志位专用寄存器 TCON、SCON,外部中断 /INT0、/INT1 的标志位 IE0、IE1,定时器/计数器 T0、T1 的标志位 IF0、IF1,串行口通信中的标志位 TI、RI,注:5 个中断源、6 个中断标志位,20,中断标志位的置 1 和清 0,自动置 1,当中断源 /INTn、Tn、T1、串口有中断请求时 对应标志位 IEn、IFn、TI、RI 自动置 1,自动清 0,手动清 0,若 MCU 响应 标志位 IE0、IE1、IF0、IF1 自动清 0,若还需继续传送数据 标志位 TI、RI 手动清 0,21,5.4 中断控制,5.4.1 中断允许寄存器IE,位,符号,位地址,IE 的字节地址 A8H,IE 的位地址 A8H AFH,IE 的总控制位 EA,IE 的分控制位 EX0、EX1 ET0、ET1 ES,22,IE 中的位含义,全部中断源中断允许/屏蔽控制位,EA = 0 总中断屏蔽有效 EA = 1 总中断允许有效,EA = 1时,各中断源中断允许/屏蔽控制位,EX0(EX1)= 0,/INT0 (/INT1)中断屏蔽 EX0(EX1)= 1,/INT0 (/INT1)中断允许,ET0(ET1)= 0,T0 (T1)中断屏蔽 ET0(ET1)= 1,T0 (T1)中断允许,ES = 0,串行口中断屏蔽 ES = 1,串行口中断允许,EA,EX0,ET0,EX1,ET1,ES,7 0,23,IE 中的位操作举例,对外部 /INT0 开中断(中断允许),对外部 /INT1 关中断(中断屏蔽),字节操作:MOV IE,#1XXXXXX1B MOV 0A8H,#1XXXXXX1B,位操作: SETB EA SETB EX0,SETB 0AFH SETB 0A8H,字节操作:MOV IE,#XXXXXXX0B MOV IE,#0XXXXXXXB,位操作: CLR EX0 CLR EA,注: 系统复位时,IE = 00H,即均中断屏蔽,24,位,符号,位地址,IP 的字节地址 B8H,IP 的位地址 B8H BFH,IP 的控制位 PX0、PX1 PT0、PT1 PS,5.4.2 中断优先级寄存器IP,25,IP 中的位含义,中断源与位的关系,PX0 /INT0 中断优先级控制位 PX1 /INT1 中断优先级控制位 PT0 T0 中断优先级控制位 PT1 T1 中断优先级控制位 PS 串口中断优先级控制位,优先级判别,位置 1 高级别中断 位清 0 低级别中断,26,高优先级中断可以中断低优先级中断。 同级中断不能响应 同时请求中断,高优先级中断先得到响应,同级中断 按照同级中断源优先级排列顺序进行响应,/INT0 T0 /INT1 T1 串行口,等优选级序,27,图5-6,28,5.5 响应中断请求的条件,CPU响应中断的条件: 中断总允许位EA=1, 即CPU开中断。 有中断源发出中断请求。 申请中断的中断源的中断允许位为1, 即中断没有被 屏蔽。 无同级或更高级中断正在被服务。 当前的指令执行结束。 若现行指令为RETI或者是访问IE或IP指令时,该指 令以及紧接着的另一条指令已执行完。,29,响应过程-单片机响应中断后,自动执行下列操作: 置位中断优先级有效触发器,即关闭同级和低级中断: 调用入口地址,断点入栈,相当于LCALL指令; 保存断点,(PC) 栈顶单元 进入中断服务程序。 转入中断服务程序入口,中断矢量 PC 硬件自动清除TF0、TF1、IE0、IE1中断标志,30,中断入口地址表,中断响应指令,LCALL 0003H LCALL 000BH LCALL 0013H LCALL 001BH LCALL 0023H,31,5.6 外部中断的响应时间,响应时间-从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。 (1)最快响应时间 以外部中断的电平触发为最快。 从查询中断请求信号到中断服务程序需要三个机器周 期: 1个周期(查询)2个周期(长调用LCALL) (2)最长时间 若当前指令是RET、RETI和IP、IE指令,紧接着下 一条是乘除指令发生,则最长为8个周期: 2个周期执行当前指令(其中含有1个周期查询)4 个周期乘除指令2个周期长调用8个周期。,32,5.7 外部中断的触发方式选择,5.7.1 电平触发方式,若外部中断定义为电平触发方式,外部中断申请触发器的状态随着CPU在每个机器周期采样到的外部中断输入线的电平变化而变化,这能提高CPU对外部中断请求的响应速度。当外部中断被设定为电平触发方式时,在中断服务程序返回之前,外部中断请求输入必须无效(即变为高电平),否则CPU返回主程序后会再次响应中断。 所以,电平触发方式适合于外部中断以低电平输入而且中断服务程序能清除外部中断请求源(即外部中断输入电平又变为高电平)的情况。,33,5.7 外部中断的触发方式选择,5.7.2 跳沿触发方式,若外部中断定义为跳沿触发方式,外部中断申请触发器能锁存外部中断输入线上的负跳变。即便是CPU暂时不能响应,中断请求标志也不会丢失。 在这种方式里,如果相继连续两次采样,一个机器周期采样到外部中断输入为高,一个机器周期采样为低,则置1中断申请触发器,直到CPU响应此中断时,该标志才清0。这样不会丢失中断,但输入的负脉冲宽度至少保持12个时钟周期(若晶振频率为6MHz,则为2us),才能被CPU采样到。 所以,外部中断的跳沿触发方式适合于以负脉冲形式输入的外部中断请求。,34,5.8 中断请求的撤销,中断请求标志位的撤除,对 /INT0、/INT1 中断,对 T0、T1 中断,对串行口中断,中断响应后硬件自动对 IE0、IE1撤除,中断响应后硬件自动对 TF0、TF1撤除,中断响应后需软件手动对 TI、RI 撤除,注:撤除即清 0,35,外部中断源触发信号的撤除,负脉冲触发方式,低电平触发方式,在中服程序中基本不会再产生中断请求,在中服程序中可能会保持中断请求,解决方法,选用负脉冲触发方式 减小低电平宽度或强制改为高电平 在中服程序入口处关中断,36,5.9 服务程序的设计,中断服务程序完成的工作: 保护现场 PSW、工作寄存器和SFR等 中断服务 恢复现场 中断返回:执行RETI指令,37,中断返回,在中断服务程序中,最后一条指令必须为中断返回指令RETI。CPU执行此指令时,一方面清除中断响应时所置位的“优先级生效”触发器,一方面从当前栈顶弹出断点地址送入程序计数器PC,从而返回主程序。 在中断服务程序中,PUSH指令与POP指令必须成对使用,否则不能正确返回断点。,38,MCS-51中断系统初始化,外部中断 /INT0、/INT1 的初始化,确定外部中断源的触发方式,对 TCON 寄存器中 IT0、IT1 进行位操作,中断优先级确定,对 IP 寄存器中 PX0、PX1 进行位操作,对 IE 寄存器中 EA、EX0、EX1 进行位操作,中断允许确定(开中断),注:初始化即对相关寄存器编程,39,编写中断服务程序时应注意, 在中断矢量地址单元处放一条无条件转移指令(如 LJMP H),使中断服务程序可灵活地安 排在64KB程序存储器的任何空间。 在中断服务程序中,用户应注意用软件保护现场, 以免中断返回后丢失原寄存器、累加器中的信息。 若要在执行当前中断程序时禁止更高优先级中断, 可以先用软件关闭CPU中断或禁止某中断源中断, 在中断返回前再开放中断。,40,有中断的完整程序结构,中断入口表程序,主程序,中断服务程序,(其它子程序),源程序汇编结束伪指令,41,入口表程序,ORG 0000H LJMP MAIN ; 跳到主程序入口 ORG 0003H LJMP RINT0 ; 跳到 /INT0 中服程序入口 ORG 000BH LJMP RT0 ; 跳到 T0 中服程序入口 ORG 0013H LJMP RINT1 ; 跳到 /INT1 中服程序入口 ORG 001BH LJMP RT1 ; 跳到 T1 中服程序入口 ORG 0023H LJMP RPS ; 跳到串行口中服程序入口,42,主程序(MAIN),MAIN: MOV A,R0 ; 主程序入口 SETB EA SJMP $ ; 主程序结束,主程序的内容,应用系统相关的指令语句 对与中断相关寄存器进行置位操作,注: SJMP $ 或 LOOP: SJMP LOOP 语句为等待中断产生。,43,中断服务程序(RINT0),RINT0:PUSH ACC ; 中断服务程序入口 PUSH PSW ; 保护现场 POP PSW POP ACC ; 恢复现场 RETI ; 退出中断服务程序,注: RETI 指令恢复 PC 断点为指向 SJMP $ 。,注: 保护/恢复现现场为中服程序中要用的存储器。,44,采用中断时的完整程序结构,ORG 0000H LJMP MAIN ; 跳到主程序入口 ORG 0003H LJMP RINT0 ; 跳到 /INT0 中服程序入口 MAIN:SETB EA ; 主程序入口 SJMP $ ; 主程序结束 RINT0:PUSH ACC ; 中断服务程序入口 RETI ; 退出中断服务程序 END ; 结束汇编,表程序,主程序,中服 程序,45,5.10 多外部中断源系统设计,MCS-51单片机有两个外部中断请求输入端,即INT0和INT1。在实际应用中,若外部中断源有两个以上时,就需要扩展外部中断源。,借用定时/计数器溢出中断 T0 和 T1 作为外部中断 用查询方式扩展中断源 用 8259 可编程中断控制器扩展中断源,46,借用 T0、T1 作为外部中断,借用原理,计数器溢出中断发生在计数从 FFFFH 0000H 将计数器的初值置为 FFFFH 从计数输入端输入脉冲,一次计数后产生溢出中断,工作过程,向 T0 端输入计数脉冲(中断请求信号),在 000BH 处编写外设的中服程序 向 T1 端输入计数脉冲(中断请求信号) ,在 001BH 处编写外设的中服程序,47,定时/计数器用作外部中断扩展具体实施 在计数方式下,如果把计数器预置为全1,则只要在计数输入端(T0或T1输入端)加一脉冲就可以使计数器溢出,产生溢出中断。这就是定时计数器实现外部中断扩展的思想。具体方法是: 置定时计数器为工作方式,即自动加载式位计数,以 便在一次中断响应后,自动为下一次中断作准备; TH和TL均置为FFH; 扩展的外部中断请求信号接计数脉冲输入端(T0或T1); 把扩展的外中断服务程序存放在所占用的定时计数器中断 入口地址处(000BH或001BH)。,48,例:以T0 实现一个外部中断扩展。 则初始化程序为: MOV TMOD,#06H ;00000110 MOV TH0,#0FFH MOV TL0,#0FFH SETB EA ;开全局中断 SETB ET

温馨提示

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

评论

0/150

提交评论