大学单片机原理与接口技术MCS单片机中断系统课件_第1页
大学单片机原理与接口技术MCS单片机中断系统课件_第2页
大学单片机原理与接口技术MCS单片机中断系统课件_第3页
大学单片机原理与接口技术MCS单片机中断系统课件_第4页
大学单片机原理与接口技术MCS单片机中断系统课件_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

114:45(1)了解MCS-51单片机中断系统的内部结构。(2)熟悉MCS-51单片机中断系统的中断源和中断入口地址。(3)熟悉MCS-51单片机中断系统的工作方式和控制寄存器。(4)掌握MCS-51单片机中断服务程序的设计方法。

本章教学要求

101:49(1)了解MCS-51单片机中断系统的内部结构214:45本章目录6.1中断概述6.1.1CPU与外设的输入/输出方式6.1.2中断的概念6.2MCS-51中断系统6.2.1中断系统的内部结构6.2.2中断源与中断方式6.2.3中断控制寄存器6.2.4中断响应6.3中断应用举例6.3.1中断服务程序设计6.3.2中断系统应用实例习题与思考题201:49本章目录6.1中断概述6.2.2中314:456.1中断概述CPU与外部设备交换信息有以下几种方式:1)程序控制传送方式;(包括分为无条件传送方式和查询传送方式)2)中断传送方式;3)直接存储器存取(DMA)方式。----CPU与外部设备交换信息301:496.1中断概述CPU与外部设备交换信息有以下414:456.1.1CPU与外设的输入/输出方式

无条件传送方式也称为同步程序传送,这种传送方式不需要交换状态信息,即不需要测试外部设备的状态,只需在程序中加入访问外设的指令,便可以根据需要随时实现数据传送,无条件传送方式适用于以下两类外部设备的输入输出:

1)外设的工作速度非常快,足以和CPU同步工作。

2)具有常驻的或变化缓慢的数据信号的外设。1.无条件传送方式----无条件传送方式401:496.1.1CPU与外设的输入/输出方式514:452.查询传送方式

通常把通过程序对外设状态的检测称之为“查询”,所以这种有条件的传送方式又叫做程序查询方式。查询的流程图如图所示。6.1.1CPU与外设的输入/输出方式----查询传送方式501:492.查询传送方式通常把通过程序对614:453.直接存储器存取(DMA)方式DMA(DirectMemoryAccess)方式是CPU让出数据总线(悬浮状态),使外部设备和存储器之间直接传送(不通过CPU)数据的方式。在下述两种情况时可考虑采用DMA方式:1)外设和存储器之间有大量的数据需要传送。2)外部设备的工作速度很快的情况。6.1.1CPU与外设的输入/输出方式----DMA方式601:493.直接存储器存取(DMA)方式DMA(Dire714:454.中断传送方式

中断方式则是在外设为数据传送作好准备之后,就向CPU发出中断请求信号(相当于通知CPU),CPU接收到中断请求信号之后立即作出响应,暂停正在执行的原程序(主程序),而转去为外设的数据输入输出服务,待服务完之后,程序返回,CPU再继续执行被中断的原程序。6.1.1CPU与外设的输入/输出方式----中断传送方式701:494.中断传送方式中断方式则是在814:456.1.2中断的概念

中断是指计算机在执行某一程序的过程中,由于计算机系统内、外的某种原因而必须终止原程序的执行,转去完成相应的处理程序,待处理结束之后再返回继续执行被终止原程序的过程。如图6-2所示。实现这种中断功能的硬件系统和软件系统统称为中断系统。----中断概念801:496.1.2中断的概念中断是914:45主程序:CPU正常情况下运行的程序称为主程序。中断源:把向CPU提出中断申请的设备称为中断源。中断请求:由中断源向CPU所发出的请求中断的信号称中断请求。中断响应:CPU在满足条件情况下接受中断申请,终止现行程序执行转而为申请中断的对象服务称中断响应。中断服务程序:为服务对象服务的程序称为中断服务程序。断点:现行程序被中断的地址称为断点。中断返回:中断服务程序结束后返回到原来程序称中断返回。6.1.2中断的概念----中断概念901:49主程序:CPU正常情况下运行的程序称为主程序。61014:45(1)中断源(2)中断优先级控制(3)中断响应的过程

6.1.2中断的概念----中断系统的基本问题1)检测中断2)保护现场3)中断服务4)清除中断标志位5)恢复现场6)中断返回1001:49(1)中断源6.1.2中断的概念----中1114:45保护现场是指由于CPU执行中断处理程序时,可能要使用主程序中使用过的累加器、寄存器或标志位。为了使这些寄存器的值在中断服务程序中不被冲掉,在进入中断服务程序前,要将有关寄存器保护起来。在中断服务程序执行完时,还必须恢复原寄存器的内容及原程序中断处的地址。即恢复现场和恢复断点。保护现场和恢复现场是通过在中断服务程序中采用堆栈操作指令PUSH及POP实现的。而保护断点、恢复断点是由CPU响应中断和中断返回时自动完成的。6.1.2中断的概念----保护现场和保护现场1101:49保护现场是指由于CPU执行中断处理程序时,可能1214:456.2MCS-51中断系统6.2.1中断系统的内部结构

MCS-51单片机的中断系统由与中断有关的特殊功能寄存器、中断入口、顺序查询逻辑电路组成。----中断系统的内部结构1201:496.2MCS-51中断系统6.2.11314:456.2.2中断源与中断方式

MCS-51单片机的中断系统提供了5个中断源。----中断源及种类1.中断源1301:496.2.2中断源与中断方式MCS1414:45

通常,在实际应用中有以下几种情况可采取中断方式工作。(1)I/O设备。(2)硬件故障。(3)实时时钟。(4)为调试程序而设置的中断源。----中断方式应用6.2.2中断源与中断方式1401:49通常,在实际应用中有以下几种情1514:45----中断方式2.中断方式

MCS-51单片机的中断系统有两种中断方式,即外部中断和内部中断。

(1)外部中断外部中断是指从单片机外部引脚INT0和INT1输入中断请求信号的中断,即外部中断源有两个。如输入/输出的中断请求、实时事件的中断请求、掉电和设备故障的中断请求都可以作为外部中断源,从引脚INT0和INT1输入。外部中断请求和有电平触发和跳变(边沿)触发两种触发方式。这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。6.2.2中断源与中断方式1501:49----中断方式2.中断方式6.2.2中断1614:45----中断方式(2)内部中断内部中断是单片机芯片内部产生的中断。MCS-51单片机(51子系列)的内部中断有定时/计数器T0和T1的溢出中断,串行口的发送/接收中断。6.2.2中断源与中断方式1601:49----中断方式(2)内部中断6.2.21714:456.2.3中断控制寄存器

MCS-51中断系统在4个特殊功能寄存器控制下工作。这4个特殊功能寄存器是定时/计数器控制寄存器(TCON)、串行口控制寄存器(SCON)、中断允许控制寄存器(IE)和中断优先级控制寄存器(IP)。通过对这4个特殊功能寄存器的各位进行置位或复位操作,可实现各种中断控制功能。1701:496.2.3中断控制寄存器1814:456.2.3中断控制寄存器1)TCON中的中断请求标志位

TCON为定时/计数器控制寄存器,其字节地址为88H,可位寻址,位地址范围为88H~8FH。这个寄存器有两个作用,即除了控制定时/计数器T0和T1的溢出中断外,还控制外部中断的触发方式和锁存外部中断请求标志位。TCON中的各位定义如图6-4所示。----中断请求控制1.中断请求控制1801:496.2.3中断控制寄存器1)TCON中的1914:45IT0:选择外部中断0的中断触发方式。IT0=0,为电平触发方式,低电平有效;IT0=1,为边沿触发方式,P3.2引脚信号出现负跳变有效。IT1:选择外部中断1的中断触发方式。其功能与IT0类同。IE0:外部中断0的中断请求标志。当INT0输入端口有中断时IE0=1,由硬件置位。6.2.3中断控制寄存器----TCON寄存器1901:49IT0:选择外部中断0的中断触发方式。6.2.2014:45IE1:外部中断INT1的中断请求标志。功能与IE0类似。TF0:片内定时/计数器0溢出中断请求标志。定时/计数器的核心为加法计数器,当定时/计数器T0发生定时或计数溢出时,由硬件置位TF0或TF1,向CPU申请中断,CPU响应中断后,会自动清零TF0或TF1。TF1:片内定时/计数器1溢出中断请求标志。功能与TF0类同。6.2.3中断控制寄存器----TCON寄存器2001:49IE1:外部中断INT1的中断请求标志。功能与2114:45中断请求标志IE0和IE1及中断信号的撤销问题无论是采用边沿触发方式(IT0=1)还是电平触发方式(IT0=0),在CPU响应中断请求后,中断请求标志位IE0即由硬件自动清零。由于CPU对INT0引脚没有控制作用,在采用电平触发方式时中断请求信号的低电平可能继续存在,在以后的机器周期采样时又会把已清零的IE0标志位重新置1,这有可能再次引起中断而造成出错。所以,在中断响应后必须采用其他方法撤销该引脚上的低电平,以撤除外部中断请求信号,可以采用外接电路来撤除中断请求信号

。中断请求标志位IE1的清零及中断请求信号的撤销问题与IE0类似。6.2.3中断控制寄存器----中断撤销2101:49中断请求标志IE0和IE1及中断信号的撤销问题2214:45例6-1

图6-5所示为对于外部中断采用电平触发方式时的撤除外部中断请求信号参考电路。6.2.3中断控制寄存器----TCON寄存器分析:外部中断请求信号通过D触发器加到单片机引脚INTx(x=0,1)上。当外部中断请求信号使D触发器的CLK端发生正跳变时,由于D端接地,Q端输出0,向单片机发出中断请求。CPU响应中断后,利用一根口线,如P1.0做应答线,在中断服务程序中用两条指令:ANLP1.0,#0FEHORLP1.0,#01H2201:49例6-1图6-5所示为对于外部中断采用电平2314:456.2.3中断控制寄存器----TCON寄存器ANLP1.0,#0FEHORLP1.0,#01H

通过以上两条命令来撤除中断请求。第1条指令使P1.0为0,而P1口其他各位的状态不变。由于P1.0与D触发器的置1端相连,故D触发器Q=1,撤除了中断请求信号。第2条指令将P1.0变成1,从而使以后产生的新的外部中断请求信号又能向单片机申请中断。2301:496.2.3中断控制寄存器----TCON寄2414:452)SCON中的中断请求标志位

SCON为串行口控制寄存器,其字节地址为98H,可以进行位寻址。串行口的接收和发送数据中断请求标志位(RI、TI)被锁存在串行口控制寄存器SCON中,其格式如图6-6所示。6.2.3中断控制寄存器----SCON寄存器2401:492)SCON中的中断请求标志位2514:45TI:串行口发送中断请求标志位

CPU将一个数据写入发送缓冲器SBUF时,就启动发送,每发送完一帧串行数据后,硬件置位TI。但CPU响应中断时,并不清除TI中断标志,必须在中断服务程序中由软件对TI清0。RI:串行口接收中断请求标志位在串行口允许接收时,每接收完一帧数据,由硬件自动将RI位置为1。CPU响应中断时,并不清除RI中断标志,也必须在中断服务程序中由软件对TI标志清0。6.2.3中断控制寄存器----SCON寄存器2501:49TI:串行口发送中断请求标志位6.2.3中2614:452.中断允许控制

MCS-51对中断源的开放或屏蔽是由中断允许寄存器IE控制的,IE的字节地址为0A8H,可以按位寻址,当单片机复位时,IE被清为0。通过对IE的各位置1或清0操作,实现开放或屏蔽某个中断,其格式如图6-7所示。6.2.3中断控制寄存器----IE寄存器2601:492.中断允许控制MCS-51对2714:45EA:总中断允许控制位。当EA=0时,屏蔽所有的中断;当EA=1时,开放所有的中断。ES:串行口中断允许控制位。当ES=0时,屏蔽串行口中断;当ES=1且EA=1时,开放串行口中断。ET1:定时/计数器T1的中断允许控制位。当ET1=0时,屏蔽T1的溢出中断;当ET1=1且EA=1时,开放T1的溢出中断。6.2.3中断控制寄存器----IE寄存器2701:49EA:总中断允许控制位。当EA=0时,屏蔽所有2814:45EX1:外部中断1的中断允许控制位。当EX1=0时,屏蔽外部中断1的中断;当EX1=1且EA=1时,开放外部中断1的中断。ET0:定时/计数器T0的中断允许控制位。功能与ET1相同。EX0:外部中断0的中断允许控制位。功能与EX1相同。单片机复位以后,IE被清0,所有的中断请求被禁止。由用户程序对IE相应的位置1或清0,即可允许或禁止各中断源的中断申请。改变IE的内容,即可由位操作指令来实现(即SETBbit;CLRbit),也可用字节操作指令实现(即MOVIE,#data;ORLIE,#data;MOVIE,A等)。6.2.3中断控制寄存器----IE寄存器2801:49EX1:外部中断1的中断允许控制位。6.2.32914:45(1)用位操作指令CLR EX0;禁止外部中断0中断CLR EX1;禁止外部中断1中断CLR ES;禁止串行口中断SETB ET0;允许定时/计数器T0中断SETB ET1;允许定时/计数器T1中断SETB EA;CPU开中断6.2.3中断控制寄存器例6-2

若允许片内2个定时/计数器中断,禁止其它中断源的中断请求,试编写出设置IE的相应程序。(2)用字节操作指令

MOVIE,#8AH

MOVA8H,#8AH;IE寄存器的字节地址为A8H----IE的设置2901:49(1)用位操作指令6.2.3中断控制寄存器3014:453.中断优先级控制8051有2个中断优先级,每一个中断请求源均可编程为高优先级中断或低优先级中断,从而实现2级中断嵌套。6.2.3中断控制寄存器----2级中断嵌套3001:493.中断优先级控制8051有2个中断优先级,每3114:451)正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,一直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令后,CPU才响应新的中断请求。2)正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。3)CPU同时接收到几个中断请求时,首先响应优先级最高的中断请求。6.2.3中断控制寄存器----中断优先级控制以上所述可归纳为下面3条基本规则:

3101:491)正在进行的中断过程不能被新的同级或3214:45----中断优先级寄存器IP1)PS:串行口中断优先级控制位PS=1,设定串行口为高优先级;PS=0,设定串行口为低优先级。2)PT1:定时器T1中断优先级控制位PT1=1,设定T1为高优先级;PT1=0,设定T1为低优先级。6.2.3中断控制寄存器在MCS-51内部提供了一个中断优先级控制寄存器(IP)。其字节地址为B8H,既可按字节形式访问,又可按位形式访问,其位地址范围为0B8H~0BFH。3201:49----中断优先级寄存器IP1)PS:串行3314:45----中断优先级寄存器IP3)PX1:外部中断1中断优先级控制位PX1=1,设定外部中断1为高优先级;PX1=0,设定外部中断1为低优先级。4)PT0:定时器T0中断优先级控制位PT0=1,设定T0为高优先级;PT0=0,设定T0为低优先级。5)PX0:外部中断0中断优先级控制位PX0=1,设定外部中断0为高优先级;PX0=0,设定外部中断0为低优先级。6.2.3中断控制寄存器3301:49----中断优先级寄存器IP3)PX1:外3414:45

在同时收到几个同一优先级的中断请求时,哪一个中断请求能优先得到响应,取决于内部查询次序,这相当于在同一个优先级内,还同时存在按次序决定的第二优先级结构,其查询次序见表6-2所示。6.2.3中断控制寄存器----中断优先级控制3401:49在同时收到几个同一优先级的中3514:45(1)用位操作指令

CLR PS;串行口、定时

/计数器T0、

T1为低优先级

CLR PT0 CLR PT1 SETB PX0 ;外中断0、1为高优先级

SETB PX16.2.3中断控制寄存器例6-3

设置IP寄存器的初始值,使得MCS-51的片内中断为低优先级,片外中断为高优先级。(2)用字节操作指令

MOVIP,#05H

MOVB8H,#05H;IP寄存器的字节地址为B8H----中断优先级设置3501:49(1)用位操作指令6.2.3中断控制寄存器3614:45例6-4

某程序中对IE、IP的初始化为:

MOV IE,#8FH MOV IP,#06H则此时该系统中:1)CPU中断允许;2)允许外部中断0、外部中断1、定时器0和定时器1提出的中断申请,屏蔽串口中断;3)允许中断源的中断优先次序为:定时/计数器0→外部中断1→外部中断0→定时/计数器16.2.3中断控制寄存器----中断优先级设置3601:49例6-4某程序中对IE、IP的初始化为:6.3714:456.2.4中断响应

单片机响应中断的条件为中断源有请求且CPU开中断(即EA=1)。(1)无同级或高级中断正在处理。(2)现行指令执行到最后1个机器周期且已结束。(3)若现行指令为RETI或访问特殊功能寄存器IE、IP的指令时,执行完该指令且紧随其后的另一条指令也已执行完毕。----中断响应的条件1.中断响应的条件3701:496.2.4中断响应单片机响3814:45----中断响应过程CPU响应中断后,由硬件自动执行如下的功能操作:(1)根据中断请求源的优先级高低,对相应的优先级状态触发器置1,硬件自动生成常调用指令LCALLaddr16。(2)保护断点,即把程序计数器PC的内容压入堆栈保存。(3)清除相应的中断请求标志位。(4)把被响应的中断源所对应的中断服务程序入口地址(中断矢量)送入PC,从而转入相应的中断服务程序执行。6.2.4中断响应2.中断响应过程上述调用指令LCALLaddr16中的addr16是程序存储区中相应的中断入口地址。例如对于外中断1的响应,系统自动生成的长调用指令为:LCALL0013H3801:49----中断响应过程CPU响应中断后,由硬件自3914:45

MCS-51系统的中断服务程序的入口地址即中断矢量也是由硬件自动生成的。各中断源与它所对应的中断服务程序入口地址见表6-3所示。6.2.4中断响应----中断服务程序的入口地址3901:49MCS-51系统的中断服务程4014:45

由于MCS-51系列单片机的相邻中断源中断服务程序入口地址相距只有8个单元,一般的中断服务程序是容纳不下的,通常是在相应的中断服务程序入口地址中放一条长跳转指令LJMP,这样就可以转到64KB的任何可用区域。若在2KB范围内转移,则可存放AJMP指令。6.2.4中断响应----中断服务程序部署4001:49由于MCS-51系列单片机的相4114:45

电平触发方式适合于外部中断输入以低电平输入且中断服务程序能清除外部中断请求源的情况。例如,并行接口芯片8255的中断请求线在接受读或写操作后即被复位,因此,以其去请求电平触发方式的中断比较方便。边沿触发方式适合于以负脉冲形式输入的外部中断请求,如ADC0809的转换结束标志信号EOC为正脉冲,经反相后就可以作为MCS-51单片机的中断输入。6.2.4中断响应----中断信号的极性4101:49电平触发方式适合于外部中断输4214:45 ORG0000H AJMP MAIN ORG0003H LJMPINT0

… ORG 0100HMAIN:…

6.2.4中断响应例6-5

设外部中断0提出申请,且主程序中需对累加器A、DPTR、R0和R1进行保护,则程序如下: ORG 1000H;1000H为

;中断入口地址INT0: PUSH ACC PUSHDPH PUSH DPL … POP DPL POP DPH POP ACC RETI----保护现场4201:49 ORG0000H6.2.4中断响应4314:45

在中断服务程序中,PUSH指令与POP指令必须成对使用,否则不能正确返回断点。而且最后一条指令必须为中断返回指令RETI,RETI的具体功能是:1)将中断响应时压入堆栈保存的断点地址从栈顶弹出送回PC,CPU从原来中断的地方继续执行程序;2)将相应中断优先级状态触发器清0,通知中断系统,中断服务程序已执行完毕。如果有多个中断源,就对应有多个“ORG中断入口地址”,且这多个“ORG中断入口地址”必须依次由小到大排列。6.2.4中断响应----PUSH和POP指令的功能4301:49在中断服务程序中,PUSH指令4414:45----中断响应时间

所谓中断响应时间是指CPU检测到中断请求信号到转入中断服务程序入口所需要的机器周期数。

MCS-51单片机响应中断的最短时间为3个机器周期。若CPU检测到中断请求信号时间正好是一条指令的最后一个机器周期,则不需等待就可以立即响应。所谓响应中断就是由内部硬件执行一条长调用指令,需要2个机器周期,加上检测需要1个机器周期,一共需要3个机器周期才开始执行中断服务程序。6.2.4中断响应3.中断响应时间4401:49----中断响应时间所谓中断响4514:45中断响应的最长时间由下列情况所决定: 若中断检测时正在执行RETI或访问IE或IP指令的第一个机器周期,这样包括检测在内需要2个机器周期(以上三条指令需两个机器周期); 若紧接着要执行的指令恰好是执行时间最长的乘除法指令,其执行时间均为4个机器周期; 再用2个机器周期执行一条长调用指令才转入中断服务程序。 这样,总共需要8个机器周期。6.2.4中断响应----中断响应最长时间4501:49中断响应的最长时间由下列情况所决定:6.2.44614:45

如果已经在处理同级或更高级中断,外部中断请求的响应时间取决于正在执行的中断服务程序的处理时间,这种情况下,响应时间就无法计算。因此,在1个单一中断的系统里,MCS-51单片机对外部中断请求的响应时间为3~8个机器周期。6.2.4中断响应----中断响应最长时间4601:49如果已经在处理同级或更高级中断4714:456.3中断应用举例

中断系统虽然是硬件系统,但中断系统的应用需要硬件系统和软件系统相互配合才能正确使用。在设计中断服务程序时需要注意以下几个问题。在主程序的初始化程序段中:(1)设置中断允许控制寄存器IE(2)设置中断优先级寄存器IP(3)若是外部中断源,还要设置中断请求的触发方式IT1或IT0在中断服务程序中:(1)现场保护和现场恢复(2)开中断和关中断(3)中断返回----设计中断服务程序需要注意4701:496.3中断应用举例中断系统4814:456.3.1中断服务程序设计1)设置中断允许控制寄存器IE,允许相应的中断源请求中断。2)设置中断优先级寄存器IP,确定并分配所使用的中断源的优先级。3)若是外部中断源,还要设置中断请求的触发方式IT1或IT0,以决定采用电平触发方式还是边沿触发方式。4)编写中断服务程序,处理中断请求。一般将前3条都放在主程序的初始化程序段中。1.中断服务程序设计的基本任务----中断服务程序的任务4801:496.3.1中断服务程序设计1)设置中断允4914:45(1)现场保护和现场恢复(2)开中断和关中断(3)中断返回6.3.1中断服务程序设计2.中断服务程序的流程----中断服务程序的流程4901:49(1)现场保护和现场恢复6.3.1中断服务5014:456.3.2中断系统应用实例例6-6

中断初始化程序举例。分析:假设允许外部中断0和1中断,并设定外部中断0为高级中断,外部中断1为低级中断,外部中断0采用边沿触发方式,外部中断1采用电平触发方式。对应的主程序中程序段如下:

SETB EA ;CPU开中断

SETB ET0 ;允许外中断0产生中断

SETB ET1 ;允许外中断1产生中断

SETB PX0 ;外中断0为高级中断

CLR PX1 ;外中断1为低级中断

SETB IT0 ;外中断0为跳沿触发方式

CLR IT1 ;外中断0为电平触发方式----例6-65001:496.3.2中断系统应用实例例6-6中断5114:45

图6-11为采用单外部中断源的数据采集系统示意图。将P1口设置成数据输入口,外围设备每准备好一个数据时,发出一个选通信号(正脉冲),使D触发器Q端置1,产生中断请求信号,P3.0用于撤除中断请求信号,从而清除IE0标志。6.3.2中断系统应用实例例6-7单外部中断源示例----例6-75101:49图6-11为采用单外部中断源的5214:45汇编语言程序代码如下:

ORG0000HSTART:LJMPMAIN;跳转到主程序

ORG 0003H LJMPINT0 ;转向中断服务程序

ORG 0030H;主程序MAIN:CLR IT0 ;设为电平触发方式

SETBEA ;CPU开放中断

SETBEX0 ;允许INT0中断

SJMP$

…6.3.2中断系统应用实例----例6-75201:49汇编语言程序代码如下: 6.3.25314:45ORG0200H ;中断服务程序INT0:PUSH PSW ;保护现场

PUSHACC CLR P3.0 ;由P3.0输出0, NOP ;使/Q变为1, NOP ;撤除中断请求信号

SETB P3.0 ;由P3.0输出1,使D触发器能够工作

MOV A,P1 ;输入数据

MOVX@DPTR,A;存入数据存储器

INC DPTR ;修改数据指针,指向下一个单元

…… POP ACC ;恢复现场

POP PSW RETI ;中断返回6.3.2中断系统应用实例----例6-75301:49ORG0200H5414:45分析:定时/计数器T0和T1除作为定时/计数器使用外,也可作为扩展外部中断使用。方法是:将T0和T1设置为计数方式,初值为FFH。一旦外部信号从计数器引脚输入一个负跳变信号,计数器加1,产生溢出中断,从而可以转去处理该外部中断源的请求。因此可以把P3.4和P3.5作为外部中断请求输入线,而溢出标志位相当于外部中断请求标志位。下面程序为采用定时/计数器T1在方式2下作为外中断源的方法。

6.3.2中断系统应用实例例6-8定时/计数器作为外部中断源的方法----例6-85401:49分析:定时/计数器T0和T1除作为定时/计数器5514:45汇编语言程序代码如下:

MOVTMOD,#60H;T0方式2 MOVTH1,#0FFH MOVTL1,#0FFH;置初值

SETBTR0 ;启动计数器

SETBEA ;CPU中断开放

SETBET0 ;允许T0中断当连在P3.5上的外部输入线发生负跳变时,TL1加1溢出,TF1置1,向CPU发出中断申请。同时TH1的内容送TL1,即恢复计数初值0FFH。这样,P3.4引脚上的每次负跳变都将TF1置1,向CPU发出中断请求,CPU响应中断请求时,转去执行外部中断服务程序,其入口地址为001BH,此时P3.5相当于边沿触发的外中断源输入线。6.3.2中断系统应用实例----例6-85501:49汇编语言程序代码如下:6.3.2中断系统应5614:45

当外部中断源多于两个时,可以采用硬件申请与软件查询方法,把多个中断源通过或非门引入外部中断源输入端,同时又连到某I/O口。这样,每个“源”都可能引起中断,但在中断服务程序中通过软件查询,便可确定哪一个是正在申请的中断源,其查询的次序则由中断源优先级决定。这样就可实现多个外部中断源的扩展。6.3.2中断系统应用实例例6-9

中断和查询结合的方法扩展多个外中断源----例6-95601:49当外部中断源多于两个时,可以5714:45

图6-12中的LED可实现系统的故障显示。当系统的各部分工作正常时,4个故障源输入端全为低电平,显示灯全熄灭。只有当某部分出现故障时,则对应的输入线由低电平变为高电平,从而引起8051的中断,在中断服务中通过查询即可判断故障源,并进行相应的LED显示。6.3.2中断系统应用实例----例6-95701:49图6-12中的LED可实现系统5814:45;汇编语言主程序:

ORG 0000H ;复位入口地址

AJMP MAIN ;转主程序

ORG 0003H ;外部0中断入口

AJMP IO ;转中断服务程序MAIN:ANL P1,#0AAH ;置P1口输出全为0 SETB IT0 ;外部中断0为边沿触发中断方式

SETB EX0 ;允许外部中断0中断

SETB EA ;CPU开中断LOOP1:SJMPLOOP1 ;等待中断6.3.2中断系统应用实例----例6-95801:49;汇编语言主程序:6.3.2中断系统应用实5914:45;汇编语言中断服务程序:

IO: JNB P1.1,L1 ;查询中断源,P1.1为0转L1执行

SETB P1.0 ;P1.0送出1使对应的灯点亮

L1: JNB P1.3,L2 SETB P1.2L2: JNB P1.5,L3 SETB P1.4L3: JNB P1.7,L4 SETB P1.6L4: RETI ;返回主程序

END6.3.2中断系统应用实例----例6-95901:49;汇编语言中断服务程序:6.3.2中断系统6014:45例6-10

结合如图6-13所示电路,编写由P1口控制发光二极管状态的程序。分析:要求P1口输出控制8只发光二极管呈循环点亮状态,当开关S按下时,发光二极管全部熄灭一段时间,然后回到原来的循环点亮状态。6.3.2中断系统应用实例----例6-106001:49例6-10结合如图6-13所示电路,编写由P6114:45;汇编语言主程序:

ORG 0000H ;复位入口地址

AJMP ST ;转主程序

ORG 0003H ;外部0中断入口

AJMP SER ;转中断服务程序

ORG 0100HST: MOV SP,#40H MOV IE,#81H MOV IP,#01H MOV TCON,#00H MOV A,#01H ;ACC初始化RES: MOV P1,A ;显示

RL A ;循环移位

LC

温馨提示

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

评论

0/150

提交评论