第五章MCS-51中断系统_第1页
第五章MCS-51中断系统_第2页
第五章MCS-51中断系统_第3页
第五章MCS-51中断系统_第4页
第五章MCS-51中断系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

第五章MCS-51中断系统§5.1中断的概念§5.2MCS-51中断系统的实现结构§5.3中断请求源§5.4中断控制§5.5中断响应§5.6外部中断的响应时间§5.7外部中断的触发方式选择§5.8中断请求的撤消§5.9中断服务程序的设计§5.10多外部中断源系统设计§5.1中断的概念

中断的概念

中断就是计算机处理一种异步突发性事件的功能。即CPU正在处理某件事情(程序)的时候,外部发生需CPU迅速去处理的异步事件时,CPU能中断当前程序,转入处理异步事件的程序,处理完后再返回到原被中断的程序处,继续原来的程序执行。在CPU中实现该功能的部件为中断系统。§5.2MCS-51中断系统的结构中断系统结构§5.3中断请求源一.中断源外部中断INT0外部中断INT1内部定时器/计数器T0内部定时器/计数器T1内部定时器/计数器T2内部串行通讯口RI/TI§5.3中断请求源二.中断源信号锁存特殊寄存器TCON、SCON(88H、98H、0C8H)TF0、TF1内部定时器溢出中断标志,“1”中断请求有效IE0、IE1外部有中断请求标志,“1”中断请求有效IT1、IT0外部中断请求输入信号形式选择控制位,IT1=1,则外部输入下降边沿触发方式,IT1=0,则外部输入低电平触发方式。外部中断请求输入信号由CPU在每一个机器周期的S5P2采样,若IT1=0,则输入为低电平使IE1置“1”,若IT1=1,则第一次为高电平,第二次为低电平使IE1置“1”。一个中断有效脉冲宽度须保持12个振荡周期。TF1TF0IE1IT1IE0IT0D7D0TF1TF0IE1IT1IE0IT0D7D0§5.3中断请求源二.中断源信号锁存特殊寄存器TCON、SCON、T2CON

(88H、98H、0C8H

)TF2:T2的计数满的中断标志。EXF2:T2外部中断标志。T2CON中其余各位的功能请参阅有关T2的功能资料。SCONTI:串行口发送完一个数据的中断标志,当串行口发送完一个数据,则TI=1。RI:串行口接收完一个数据的中断标志,当串行口接收完一个数据,则RI=1。T2CON§5.4中断控制一.中断使能寄存器IE(A8H)

当中断请求信号输入时,CPU是否响应该中断,可以由中断允许使能寄存器的某一位控制。EACPU的中断开放标志。EA=0,关蔽所有的中断申请,EA=1,允许所以的中断源的中断。ES

行口中断允许位。ES=0,禁止中断,ES•EA=1,允许。ET1、ET0

定时器/计数器中断允许位。ET1=0,禁止中断,ET1•EA=1,允许。EX1、EX0

外部中断允许位。EX1=0,禁止中断,EX1•EA=1,允许。

EAESET1EX1ET0EX0D7D0§5.4中断控制一.中断使能寄存器IE(A8H)

中断允许寄存器的内容可以由置位和清零以及立即数传送指令改变。例4.1假设允许片内定时器/计数器中断,禁止其它中断源的中断请求。试根据假设条件设置IE的相应值。解:(1)CLRES(2)MOVIE,#8AHCLREX1CLREX0SETBET1SETBET0SETBEA§5.4中断控制二.中断优先级当CPU正在处理中断事件程序,此时又发生异步突发事件需要CPU处理,这时CPU是否响应,则由中断优先级控制器决定。高级别中断源可以中断低级别的中断源。MCS-51有两个中断优先级,实现二级中断嵌套。1.优先级寄存器IP(0B8H)

MCS-51的每一中断源的中断优先级可由中断优先级选择寄存器的某一位内容决定。PS

串行口中断优先级控制位,PS=1,则为高级中断。PT1、PT0定时/计数器1、0中断优先级控制位,PT1=1,则为高级中断。PX1、PX0外部中断1、0中断优先级控制位,PX1=1,则为高级中断。PSPT1PX1PT0PX0D7D0§5.4中断控制二.中断优先级

2.同级中断源的优先级同级中断源的优先级别,如图所示。§5.4中断控制二.中断优先级例4.2设置IP寄存器的初始值,使得CPU的两个外中断为高优先级,其它中断为低优先级。解:(1)SETBPX0(2)MOVIP,#05HSETBPX1CLRPSCLRPT0CLRPT1§5.5中断响应一.中断响应

MCS-51的CPU在每一个机器周期的S6按顺序检查每一个中断源标志。如果查询到被激活(中断允许标志为“1”)的中断请求(该中断源标志为“1”),并且没有下面的阻止条件,则在下一个机器周期的开始状态按优先级别响应中断请求。阻止中断响应的条件:CPU正在处理相同的或更高优先级的中断,(同级或更高级中断程序处理完才能响应新的中断程序)。现行的机器周期不是所执行指令的最后一个机器周期,(当前指令执行完毕才能响应中断)。CPU正在执行RETI或对IE、IP的写操作指令,(这条指令执行完后,需再执行一条指令后才能响应中断)§5.5中断响应二.中断响应过程(中断入口地址)

CPU响应中断,即转入执行中断程序,进入中断程序的方法是自动执行一条子程序调用指令“LCALLaddr16”,调用指令的地址是由CPU的硬件规定(固定)。MCS-51中断程序入口地址是:中断源入口地址外部中断00003H

定时/计数器T0000BH

外部中断10013H

定时/计数器T1001BH

串行口中断0023H

定时/计数器T2002BH

例响应外部中断1的长调用指令为:

LCALL0013H§5.6外部中断的响应时间外部中断的响应时间

CPU从INT0或INT1采样到中断信号到开始响应中断需一个机器周期,CPU从开始响应中断到进入中断服务程序须两个(执行一条子程序调用指令需二个机器周期)。所以整个中断响应时间最少需要三个完整的机器周期。若CPU采样到中断信号,而CPU正在执行RETI或对IE和IP写数据指令(这些指令需二个机器周期),并且后面跟的是DIV或MUL指令(这些指令需四个机器周期),再加一条子程序调用指令(二个机器周期),所以需要8个机器周期。如果中断请求被前面列出的第一条件所阻止,则中断响应需要跟长的时间。该情况下中断响应时间由同级或高级的中断程序的执行时间决定。§5.7外部中断触发方式的选择外部中断的触发有两种方式:电平触发方式和边沿触发方式外部中断触发方式使用要求1)电平触发方式外部中断输入信号必须有效(保持低电平),直至CPU实际响应中断为止。中断服务程序结束返回之前,应使中断请求信号变成无效,否则CPU返回后会再一次响应。2)边沿触发方式一个中断有效脉冲宽度须保持12个振荡周期。才能被CPU在两个机器周期的S5P2处采样到,并将中断请求标志IE0(或IE1)自动置为“1”。中断响应后,中断请求信号IE0(或IE1)由硬件自动清零。§5.8中断请求信号的撤消一.定时器/计数器中断请求的撤消定时器/计数器的中断请求被响应后,CPU会自动清中断请求标志位(TF0或TF1),因此中断请求自动撤消。二.外部中断请求的撤消

1.边沿方式触发请求中断中断请求被响应后,CPU会自动清中断请求标志位(IE0或IE1),此时外部中断输入脉冲已消失,因此中断请求自动撤消。

2.电平方式触发请求中断中断请求被响应后,CPU会自动清中断请求标志位(IE0或IE1),

此时如外部中断输入电平继续有效,中断标志会再次置“1”,因此中断请求不能自动撤消,所以应该将中断低电平撤消才能撤消中断请求。实现电路如图所示。INT0P1.0QDCPSDSETBP1.0CLRP1.0SETBP1.0外部中断请求信号SD外部中断请求信号外部中断请求信号§5.9中断服务程序设计一.中断服务程序设计的任务1.设置中断允许控制寄存器IE2.设置中断优先级寄存器IP3.若是外部中断源,还设置中断请求的触发方式IT1或IT04.编写中断服务程序,处理中断请求功能5.前三条程序一般放在主程序的初始化程序段中。例6.3假设允许外部中断0中断,并设定它为高级中断,其它中断源为低级中断,采用边沿触发方式。解:(1)SETBEA(2)MOVIE,#81HSETBEX0MOVIP,#01HSETBPX0MOVTCON,#01HSETBIT0

100000010000000100000001§5.9中断服务程序设计二.采用中断时的主程序结构常用中断时的主程序结构如下:

ORG0000HLJMPMAIN:ORG中断入口地址(如果是外部中断1,则为0013H)

LJMPINT:MAIN:主程序:INT:中断服务程序:注意:对于多个中断请求,就有多个对应的“ORG中断入口地址”,并且这多个中断入口地址应由小到大排列§5.9中断服务程序设计三.中断服务程序的流程结构1.现场保护和现场恢复

PUSHACCPUSHPSW…POPPSWPOPACC2.关中断和开中断

CLREA…SETBEA3.中断处理4.中断返回

RETI右边程序流程图用程序表示为:关中断现场保护开中断中断处理关中断现场恢复开中断中断返回INT:CLREAPUSHPSWPUSHACCSETBEA

CLREAPOPACCPOPPSWSETBEARETI中断服务处理程序§5.9中断服务程序设计若在一个MCS-51单片机应用系统中,有四个中断源,其中有外部中断源INT0、INT1,定时器/计数器中断源T0和T1。INT0为高级中断,中断信号为低电平信号,中断服务子程序入口地址(即存储地址)为6000h;INT1为低级中断,中断信号为负脉冲信号,中断服务子程序的入口地址(存储地址)为7000h;T0和T1均为高级中断,它们的中断服务子程序的入口地址(即存储地址)分别为8000h和9000h。设系统中其它的中断源不工作。要求:(1)编一段实现上述功能的中断系统初始化程序。(2)如外部中断INT0中断产生时,将外部数据存储器8000H开始的存储器内存放的10个数送到内部数据存储器40H到49H的单元里,传送过中判断是0则停止传送。§5.9中断服务程序设计解:(1)决定中断功能寄存器的控制值

TCON=00000100

或IT0=0,IT1=1IE=10001111

或EA=1,EX0=1,EX1=1,

ET0=1,ET1=1IP=00001011

或PX0=1,PX1=0,PT0=1,PT1=1TMOD=00000000

§5.9中断服务程序设计

(2)决定中断入口地址

ORG0000HLJMPMAIN

ORG0003HLJMPINT0

ORG000BHLJMPT0

ORG0013HLJMPINT1

ORG001BHLJMPT1

:§5.9中断服务程序设计

(3)编写中断初始化主程序段

ORG0040hORG0040HMAIN:MOVSP,#60HMAIN:MOVSP,#60HMOVTCON,#04HCLRIT0MOVIE,#8FHSETBIT1MOVIP,#0BHSETBEA

:SETBEX0SETBEX1SETBET0SETBET1SETBPX0CLRPX1SETBPT0SETBPT1:§5.9中断服务程序设计(4)编写外部中断0(INN0)中断服务字程序

ORG6000H INT0:PUSHACCPUSHPSWCLRRS0;改变工作寄存区

SETBRS1 MOVR0,#40H ;基础地址

MOVR2,#10 ;传递数据的数量

MOVDPTR,#8000H ;数据地址LOOP:MOVXA,@DPTR;传送循环

JZEXIT_LOOP ;遇到0跳出程序

MOV@R0,A INCR0 ;改变指针

INCDPTR DJNZR2,LOOPEXIT_LOOP:POPPSWPOPACC RETI§5.9中断服务程序设计

其它中断服务子程序

ORG7000HINT1:

ORG8000HT0::ORG9000HT1::§5.10多外部中断源系统设计一.中断和查询结合的方法ORG0013HLJMPINT1:INT1:PUSHPSWPUSHACCJNBP1.0,IR1JNBP1.1,IR2JNBP1.2,IR3NJBP1.3,IR4INTIR:POP

温馨提示

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

评论

0/150

提交评论