版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1chp微型计算机中断系统实用7.1概述一、中断概念中断就是CPU暂停执行现行的程序,转而处理随机事件,处理完毕后再回到被中断的程序继续执行,这一过程称为中断。第1页/共97页中断系统具有以下基本功能:
①为了加强中断系统的灵活性,对于各种中断请求,应该具有屏蔽和开放的功能,使得程序员可以灵活控制。
②具有“中断级别”的判断和控制功能,即能实现中断源排队。当有多个中断源申请中断时,能根据事先的设定及时响应中断。
③能实现中断嵌套,即高级别的中断能中断较低级别的中断。
④系统响应中断后,能自动进行中断处理。当中断处理完后能自动返回。第2页/共97页中断主要解决的问题1.实现分时操作,解决CPU与外部设备速度上的差异,提高计算机系统的工作效率,达到并行处理的目的。2.处理随机的异常事件,如运算结果溢出、机器故障等。3.实现实时操作,在控制系统中许多信号是随机产生的,只有通过中断系统才能实时的对它们进行处理,避免信息的丢失。第3页/共97页8086中断系统8086的中断系统采用向量中断机制能够处理256个中断用中断类型号0~255区别可屏蔽中断还需要借助专用中断控制器Intel8259A实现优先权管理第4页/共97页中断源:引发CPU中断的来源称为中断源中断响应:接受中断请求中断向量表:存放中断服务子程序入口地址的内存区域(00000H~003FFH)中断优先权:有多个中断源请求中断时,系统响应中断申请的级别中断屏蔽:由软件设置,使之不能被响应,称为中断屏蔽。第5页/共97页二、中断分类非屏蔽中断源中断逻辑INTO指令单步中断除法错误INTn指令CPUINTRNMI可屏蔽中断源8259A中断控制器IR0IR1IR2IR3IR4IR5IR6IR7外设中断源
INTA8086中断源内部中断外部中断第6页/共97页1.外部中断外部中断是由于CPU外部提出中断请求引起的程序中断,也称为硬件中断。非屏蔽中断:类型号为2外部通过非屏蔽中断NMI请求,必须响应非屏蔽中断主要用于处理系统的意外或故障可屏蔽中断:类型号来自中断控制器外部通过可屏蔽中断INTR请求,由IF控制是否响应;响应时产生INTA信号可屏蔽中断主要用于与外设交换数据第7页/共97页中断标志IF的状态IF=0:可屏蔽中断不会被响应关中断、禁止中断、中断屏蔽系统复位,使IF=0任何一个中断被响应,使IF=0执行指令CLI,使IF=0IF=1:可屏蔽中断会被响应开中断、允许中断、中断开放执行指令STI,使IF=1执行指令IRET恢复原IF状态第8页/共97页2、
内部中断内部中断是由于CPU内部执行程序出现异常引起的程序中断,所以又称软件中断。内部中断的中断类型号已定(内部中断是不可屏蔽的)除法错中断:类型号为0指令中断:类型号为n断点中断:类型号为3溢出中断:类型号为4单步中断:类型号为1第9页/共97页软件中断由中断指令INT引起的中断由CPU运算错误引起的中断由Debug设置的中断第10页/共97页7.2中断处理过程可屏蔽中断处理流程第11页/共97页中断过程申请响应处理第12页/共97页中断申请当需要CPU中断以处理一些紧急事件,向CPU发出的请求。引发CPU中断的来源称为中断源。中断响应为了及时处理中断,中断系统(或中断装置)定时查询有无中断申请,若有且未屏蔽,则引出处理中断的程序称为该中断被响应。中断处理执行相应的中断处理程序(例行中断服务子程序)。第13页/共97页一、CPU响应中断过程CPU响应I/O中断的三个条件:(1)外设提出中断申请(2)本中断位未被屏蔽(3)中断允许第14页/共97页NMIN内部中断INTRTF=1中断响应周期读中断类型号下条指令现行指令IF=1NNNNYYYYY中断响应过程(P268)第15页/共97页Y还有NMITEMP=1标志寄存器入栈TEMP=TF,IF=TF=0CS:IP入栈获取中断向量执行服务程序弹出CS:IP弹出标志寄存器返回被中断程序NNY中断响应过程第16页/共97页二、8086的中断向量表确定中断源:查询中断矢量中断要解决的问题确定中断源找到对应中断处理程序的入口地址第17页/共97页1.8086的中断向量表中断向量:中断服务程序的入口地址(首地址)逻辑地址含有段地址CS和偏移地址IP(32位)每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节8086微处理器从物理地址00000H开始,依次安排各个中断向量。256个中断占用1KB区域,就形成中断向量表类型号为N的中断向量的物理地址=N×4第18页/共97页8086的中断向量表000H类型号0的IP值除法错中断(类型号0)单步中断(类型号1)004H类型号0的CS值类型号1的IP值类型号1的CS值非屏蔽中断(类型号2)008H类型号2的IP值类型号2的CS值3FCH……类型号255的IP值用户中断(类型号255)类型号255的CS值第19页/共97页19C类型67H中断向量1A050201A200A01A4类型69H中断向量STIPUSHDS::IRET中断处理程序A000:2050INT68HMOVAX,0向量地址=68H×4=1A0HIPCS2050A000中断操作过程例子第20页/共97页2.中断向量(中断入口地址)的设置设置中断向量AL=中断类型号
DS:DX=中断服务程序入口地址
AH=25HINT21H取中断向量
AL=中断类型号AH=35HINT21H返回:ES:BX=中断服务程序入口地址方法一:第21页/共97页MOVAL,NMOVAH,35HINT21HPUSHES;保存中断向量PUSHBXPUSHDSMOVAX,SEGINTRAD;设置中断向量MOVDS,AXMOVDX,OFFSETINTRADMOVAL,NMOVAH,25HINT21HPOPDS:POPDX;恢复中断向量POPDSMOVAL,NMOVAH,25HINT21H:INTRADPROCFAR:IRETINTRADENDP第22页/共97页MOVAX,0MOVES,AXMOVDI,N*4MOVAX,OFFSETINTRADCLDSTOSWMOVAX,SEGINTRADSTOSWSTI:INTRADPROCFAR:IRETINTRADENDP方法二:第23页/共97页3.中断类型号(确定中断源)的获取对除法错、单步中断、NMI、断点中断、溢出中断,CPU自动提供中断类型号0~4。对INTn,中断类型号由n确定。对I/O中断(由INTR引脚引入),通过8259获得中断类型号。第24页/共97页中断主程序的编写方法1.主程序中的初始化.
(1)设置中断向量。
(2)设置8259A的中断屏蔽寄存器的中断屏蔽位。
(3)设置CPU中断允许位标志IF(开中断STl)。第25页/共97页2.硬件(外设接口)和CPU自动完成
(1)外设接口向CPU的INTR端发中断请求。
(2)当前指令执行完后,CPU发两个中断响应信号INTA给外设接口。
(3)CPU取中断类型号n。(4)CPU自动将当前PSW、CS、IP内容入栈保护。
(5)清除IF、TF,禁止外部中断和单步中断。
(6)从中断向量表中取(4×n)地址中内容→IP,取(4×n+2)地址中内容→CS。
(7)转向中断服务子程序。第26页/共97页
注意:
(1)对重复前缀的指令(如REPMOVSB)作为一条指令处理。执行一次重复前缀和串指令即可响应中断,而不是把串操作全部执行完。
(2)遇到开中断指令STI和中断返回指令IRET,要在这两条指令执行完后,再执行一条指令才能响应中断。
(3)CPU自动清除IF及TF位,使CPU进入中断服务程序后,不允许再产生新的中断,如果在中断服务程序中还允许外部中断进入,则在中断服务程序中必须再开中断。第27页/共97页三、中断服务子程序中断服务子程序的结构形式:1.保护现场2.开中断,IF=1,允许中断嵌套3.执行中断处理程序4.关中断,IF=0,禁止其他中断请求进入5.发中断结束命令EOI6.恢复现场7.中断返回IRET第28页/共97页内部中断服务程序编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC/ENDP保护完现场后要用开中断指令STI置IF=1恢复现场前要用关中断指令CLI置IF=0最后用中断返回指令IRET通常采用寄存器传递参数主程序需要调用中断服务程序调用前,需要设置中断向量利用INTn指令调用中断服务程序第29页/共97页例:内部中断服务程序编写80H号中断服务程序功能:显示以“0”结尾字符串的功能利用显示器功能调用INT21H的2号模块字符串缓冲区首地址为入口参数DS:DX(段地址:偏移地址)传递参数第30页/共97页intoffdw?intsegdw?intmsgdb‘AInstructionInterrupt!’db0dh,0ah,0::
moval,80h:movah,35h;保存中断向量int21hmovintoff,bx;保存偏移地址
movintseg,es;保存段基地址pushdsmovdx,offsetnew80h;设置中断向量movax,segnew80hmovds,axmovax,2580hint21hpopdsmovdx,offsetintmsg
int80h
;调用中断服务程序movdx,intoffmovax,intsegmovds,axmovax,2580hint21hmovax,4c00hint21h::第31页/共97页New80hprocfar
pushax;保护寄存器 pushsi
sti
;开中断movsi,dxnew1:moval,[si] cmpal,0 jznew2movdl,al movah,02h int21h incsi jmpnew1new2:cli;关中断popsi;恢复寄存器 popax
iret
;中断返回New80hendpintoffdw?intsegdw?intmsgdb‘AInstructionInterrupt!’ db0dh,0ah,0
AInstructionInterrupt!DXsi第32页/共97页例:编写中断处理程序,要求主程序运行时,每10秒响铃一次,同时屏幕上显示信息“Thebellisring!”(P274)
可以利用中断类型1CH进行处理,因为系统定时器(中断类型8)的中断处理程序中,时钟中断一次(约18.2次/秒)要调用一次INT1CH。在ROMBIOS中,1CH的处理程序只有一条IRET指令,仅为用户提供一个中断类型号。这样可以利用系统定时器的中断间隔,将用户设计的程序来代替原有的INT1CH程序。在编写程序时,有两个部分的工作:
l.在主程序初始化部分,先保存当前中断向量表内容,再置新的中断向量。
2.在主程序结束部分恢复保存的1CH向量。外部中断服务程序第33页/共97页DATASEGMENTCOUNTDW1MESSDB‘Thebellisring!’,0AH,0DH,‘$’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:PUSHDSSUBAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVAL,1CHMOVAH,35H;得到原中断向量
INT21HPUSHES;存储原中断向量
PUSHBXPUSHDS第34页/共97页MOVDX,OFFSETRING;中断子程序RING的偏移地址和段地址
MOVAX,SEGRINGMOVDS,AXMOVAL,1CH;设置中断向量
MOVAH,25HINT21HPOPDSINAL,21H
;设置中断屏蔽位,21H为8259中断屏蔽寄存器端口地址
ANDAL,0FEHOUT21H,ALSTI;开中断MOVDI,2000;延迟DELAY:
MOVSI,3000;等待中断DELAY1:DECSIJNZDELAY1DECDIJNZDELAYPOPDX;取原中断向量
POPDSMOVAL,1CHMOVAH,25HINT21HRETMAINENDPCODEENDS第35页/共97页RINGPROCNEARPUSHDSPUSHAXPUSHCXPUSHDXMOVAX,DATAMOVDS,AXSTIDECCOUNT;10秒计数
JNZEXITMOVDX,OFFSETMESSMOVAH,09H;显示信息
INT21H
MOVDX,100INAL,61H;响铃
ANDAL,0FCHSOUND:XORAL,02HOUT61H,ALMOVCX,140HWAIT:LOOPWAITDECDXJNESOUNDMOVCOUNT,182;10秒的值EXIT:CLIPOPDXPOPCXPOPAXPOPDSIRETRINGENDPCODEENDSENDSTARTDATASEGMENTCOUNTDW1
MESSDB‘Thebellisring!’,0AH,0DH,‘$’DATAENDS第36页/共97页D0~D7第一个INTA周期T1T2T3T4ALECLK
第二个INTA周期T1T2T3T4
INTALOCKn中断响应总线周期时序图中断类型号四、中断响应时序第37页/共97页执行一条指令中断?关中断保护现场屏蔽本级和低级中断开中断中断服务程序关中断恢复现场返回取下一条指令否是多个中断源中断流程图7.3中断优先级和中断嵌套第38页/共97页一、中断优先级IBMPC机优先级
内部中断除法错中断指令中断溢出中断
不可屏蔽中断
可屏蔽中断
单步中断高低第39页/共97页1.软件查询中断优先级A0~A15锁存器INTR三态缓冲器译码
8001HD0~D7中断0中断1中断2……IOR中断查询接口第40页/共97页
:MOVDX,8001HINAL,DXTESTAL,80HJNZSEV0TESTAL,40HJNZSEV1TESTAL,20HJNZSEV2TESTAL,10HJNZSEV3TESTAL,08HJNZSEV4:第41页/共97页菊花链优先查询法2.硬件查询优先方式-菊花链法第42页/共97页中断请求寄存器中断屏蔽寄存器IR0IR7优先级管理逻辑中断服务寄存器中断类型寄存器由中断源提供3.矢量中断优先级8253定时器键盘未用异步通信卡(辅)异步通信卡(主)硬盘软盘并行打印机21H第43页/共97页二、中断嵌套IR0IR1IR2IR3IR4IR5IR6IR7高低第44页/共97页7.4可编程中断控制器8259A一、功能Intel8259A是可编程中断控制器PIC8259A的基本功能一片8259A可以管理8级中断,可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的中断类型号8259A设计有多种工作方式,可通过编程选择第45页/共97页二、8259A的内部结构D7~D0INTAINT中断请求寄存器中断屏蔽寄存器(IMR)数据总线缓冲器IR0IR7读/写控制逻辑级联缓冲器比较器RDWRA0CSCAS0CSA1CAS2SP/EN优先权判别电路中断服务寄存器控制逻辑ISRPRIRR第46页/共97页8259A的读写功能CSRDWRA0D4D3操作指令01001×CPU→ICW1OUT0101××CPU→ICW2、ICW3、ICW4、OCW1010000CPU→OCW2010001CPU→OCW30010IRR/ISR→CPUIN0011IMR→CPU1×××数据总线高阻状态×11×数据总线高阻状态第47页/共97页中断控制中断请求寄存器IRR保存8条外界中断请求信号IR0~IR7的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中;为0表示没有被服务中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽(禁止);为0表示允许第48页/共97页中断级联一个系统中,8259A可以级联,有一个主8259A,若干个(最多8个)从8259A级联时,主8259A的三条级联线CAS0~CAS2作为输出线,连至每个从8259A的CAS0~CAS2每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR主8259A的INT线连至CPU的中断请求输入端SP/EN在非缓冲方式下,规定该8259A是主片(SP=1)还是从片(SP=0)第49页/共97页三、8259A的中断管理方式完全嵌套方式特殊全嵌套方式自动循环方式特殊循环方式优先权固定方式优先权循环方式设置优先权方式普通中断结束方式特殊中断结束方式自动中断结束方式非自动中断结束方式结束中断处理方式屏蔽中断源方式普通屏蔽方式特殊屏蔽方式中断请求触发方式边沿触发方式电平触发方式数据线连接方式缓冲方式非缓冲方式中断查询方式第50页/共97页1.8259A的编程结构第51页/共97页2.优先级设置方式完全嵌套方式8259A的中断优先权顺序固定不变,从高到低依次为IR0、IR1、IR2、……IR7中断请求后,8259A对当前请求中断中优先权最高的中断IRi予以响应,将其类型号送上数据总线,对应ISR的Di位置位,至到中断结束(ISR的Di位复位)在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套特殊全嵌套方式用于级联方式,可响应同级中断请求。优先权自动循环方式优先权特殊循环方式(程序指定初始的最低优先级)第52页/共97页3.中断结束方式8259A利用中断服务寄存器ISR判断:某位为1,表示正在进行中断服务;该位为0,就是该中断结束服务。中断处理方式就是如何使ISR某位为0,第53页/共97页普通EOI结束方式配合完全嵌套优先权方式使用当CPU用输出指令往8259A发出普通中断结束EOI命令时,8259A就会把所有正在服务的中断中优先权最高的ISR位复位特殊EOI结束方式配合循环优先权方式使用CPU在程序中向8259A发送一条特殊中断结束命令,这个命令中指出了要清除哪个ISR位自动EOI结束方式第54页/共97页4.循环优先级的循环方法循环优先级方式,与中断结束方式有关,有三种循环方式:(1)普通EOI循环方式(2)特殊EOI循环方式(3)自动EOI循环方式中断响应后,在第二个INTA信号的后沿自动将ISR寄存器中相应位置0,并按普通EOI循环方式改变个中断的优先级别。第55页/共97页普通EOI循环方式原始状态ISR内容IR7IR6IR5IR4IR3IR2IR1IR000100100优先级76543210处理完IR2ISR内容00100000优先级43210765处理完IR5ISR内容00000000优先级10765432第56页/共97页特殊EOI循环方式初始状态ISR内容IR7IR6IR5IR4IR3IR2IR1IR001000100优先级76543210执行置位优先权指令后ISR内容01000100优先级32107654第57页/共97页5.中断源屏蔽方式普通屏蔽方式将IMR的Di位置1,则对应的中断IRi被屏蔽,该中断请求不能从8259A送到CPU如果IMR的Di位置0,则允许IRi中断产生特殊屏蔽方式将IMR的Di位置1,对应的中断IRi被屏蔽的同时,使ISR的Di位置0(开放低级别的中断请求)第58页/共97页6.
中断请求引入方式边沿触发方式8259A将中断请求输入端出现的上升沿作为中断请求信号电平触发方式中断请求端出现的高电平是有效的中断请求信号中断查询方式
OCW3、查询字(P289)第59页/共97页四、8259A的编程8259A分为初始化编程和操作编程两部分,初始化编程是由CPU向8259A输入初始化命令字,这是芯片进行正常工作前必须做的,使8259A处于一个规定的基本工作方式上。初始化命令字由ICW1~ICW4组成。8259A在任何情况下,从A0=0的端口接收到一个D4=1的命令就是ICW1,紧接着的命令就是ICW2~ICW4,进入初始化状态后,芯片就可以接收来自IR端口的中断请求,准备接收CPU写入的操作命令字OCW,以选择不同的操作方式。OCW可以随时写入,这些字有各自的标志来引导进入相应的寄存器。还可以读取8259A的信息,以便了解它的工作状态第60页/共97页初始命令字完成的功能设定中断请求信号触发形式,电平或边沿触发设定单片或级联设定中断类型号基值,即IR0对应的中断类型号设定优先级设置方法设定中断处理结束时的结束操作方式第61页/共97页1.初始化命令字ICW规定芯片的基本工作方式初始化命令字ICW最多有4个8259A在开始工作前必须写入必须按照ICW1~ICW4顺序写入ICW1和ICW2是必须送的ICW3和ICW4由工作方式决定第62页/共97页ICW1芯片控制初始化×××1LTIM×SNGLIC4D7D6D5D4D3D2D1D0×——表示可以任意为1为0都可以(建议为0)1——只能为1,作为标志中断触发方式:LTIM=1,电平触发方式LTIM=0,边沿触发方式规定单片或级联方式:SNGL=1,单片方式SNGL=0,级联方式是否写入ICW4IC4=1,要写入ICW4IC4=0,不写入ICW4A00第63页/共97页ICW2设置中断类型号T7T6T5T4T3×××D7D6D5D4D3D2D1D0中断类型号的低3位由8259A自动确定:IR0为000、IR1为001、……、IR7为111A01T7~T3为中断类型号的高5位由程序设定第64页/共97页ICW3仅用于级联方式S7S6S5S4S3S2/ID2S1/ID1S0/ID0D7D6D5D4D3D2D1D0主片8259A:Si=1对应IRi接有从片;否则IRi没有连接从片从片8259A:ID0~ID2编码说明从片INT引脚接到主片哪个IR引脚A01第65页/共97页ICW4方式控制000SFNMBUFM/SAEOIμPMD7D6D5D4D3D2D1D0嵌套方式:1:特殊全嵌套方式0:非特殊完全嵌套方式数据线的缓冲方式:1:缓冲方式0:非缓冲方式缓冲方式主片/从片选择:1:主片0:从片中断结束方式:1:自动中断结束0:非自动中断结束A01BUF、M/S、SP/EN之间关系BUF位M/S位SP/EN端0:非缓冲方式无意义SP有效(输入信号)SP=1SP=0主8259A从8259A1:缓冲方式1:主8259A0:从8259AEN有效(输出信号)EN=1EN=0CPU→8259A8259A→CPU微处理器类型:1:16位80x860:8位8080/8085第66页/共97页数据线连接方式缓冲方式8259A的数据线需加缓冲器予以驱动8259A把SP/EN引脚作为输出端,输出允许信号,用以锁存或开启缓冲器非缓冲方式SP/EN引脚为输入端若8259A级联,由其确定是主片或从片第67页/共97页moval,11h;写入ICW1out20h,al;边沿触发、级联 ;8086/8088moval,08h;写入ICW2out21h,almoval,04h;写入ICW3out21h,al;IR2接从片moval,1h;写入ICW4out21h,al;非特殊完全嵌套方式
;非缓冲方式,M/S无意义
;非自动EOI方式
;8086/8088配置×××1LTIM×SNGLIC4例:8259初始化(主片)00010001T7T6T5T4T3×××000SFNMBUFM/SAEOIμPMS7S6S5S4S3S2/ID2S1/ID1S0/ID0ICW4(方式控制)ICW3(主/从)ICW2(中断类型号)00001000ICW1(芯片控制)0000010000000001第68页/共97页moval,11h;写入ICW1out0a0h,al;沿触发、级联 ;8086/8088
mova1,70h;写入ICW2out0alh,al
moval,02h;写入ICW3out0a1h,al;
接主片的IR2
moval,01h;写入ICW4out0a1h,al;非特殊完全嵌套方式
;非缓冲方式,M/S无意义
;非自动EOI方式
;8086/8088配置例:8259初始化(从片)×××1LTIM×SNGLIC400010001T7T6T5T4T3×××000SFNMBUFM/SAEOIμPMS7S6S5S4S3S2/ID2S1/ID1S0/ID0ICW4(方式控制)ICW3(主/从)ICW2(中断类型号)01110000ICW1(芯片控制)0000001000000001第69页/共97页2.操作命令字OCWCPU在对8259A初始化编程后,8259A就进入工作状态,可以接受IRi输入的中断。OCW可在这以后的任何时候写入,以选择不同的操作方式。OCW共有3个:OCW1~OCW3写入时没有顺序要求,需要哪个OCW就写入那个OCWOCW有各自的标志,引导进入相应的寄存器第70页/共97页操作命令字完成的功能设定中断屏蔽设定中断优先级次序中断结束方式等第71页/共97页OCW1屏蔽命令M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0内容写入中断屏蔽寄存器IMRDi=Mi对应IRi,为1禁止IRi中断;为0允许IRi中断。各位互相独立。A01第72页/共97页OCW2控制中断结束、优先权循环等RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和EOI配合使用产生中断结束EOI命令和改变优先权顺序001:普通EOI方式011:特殊EOI方式101:普通EOI循环方式111:特殊EOI循环方式000:自动EOI循环(复位)100:自动EOI循环(置位)110:置位优先权命令010:无效L2~L0的3位编码指定IR引脚A00标识见p295组合功能表第73页/共97页OCW3中断屏蔽和读取寄存器状态0ESMMSMM01PRRRISD7D6D5D4D3D2D1D0设置中断屏蔽方式0×:无效10:特殊屏蔽方式复位11:特殊屏蔽方式置位规定随后读取的状态字含义10:读IRR11:读ISRA00标识1:查询8259状态0:不查询特殊屏蔽方式:只屏蔽本级中断,允许高级或低级中断进入第74页/共97页读取状态字CPU可读出IRR、ISR、IMR和查询字A0为低,由OCW3中RR和RIS位设定读取IRR或ISR,由OCW3中P位设定读取查询字而A0引脚为高电平时读取的都是IMR查询字反映8259A是否有中断请求中断查询方式用于多于64级中断的场合。第75页/共97页查询字IR----W2W1W0D7D6D5D4D3D2D1D0中断位IR为1,有外设请求中断W2~W0的编码为当前中断请求的最高优先级A00第76页/共97页命令字和状态字的区别方法⑴利用读写信号区别写入的控制寄存器和读出的状态寄存器⑵
利用地址信号区别不同I/O地址的寄存器⑶
由控制字中的标志位说明是哪个寄存器⑷
由芯片内顺序控制逻辑按一定顺序识别不同的寄存器⑸由前面的控制字决定后续操作的寄存器第77页/共97页五、8259A的中断级联当 I/O中断源多于8个时,可以采用级联方式。硬件连接ICW的设置中断处理结束,要分别给主、从片发EOI。第78页/共97页CSA0D7-D0INTAINTCAS0
从8259ACAS12#CAS2SP/ENIR7……IR0CSA0D7-D0INTAINTCAS0
从8259ACAS11#CAS2SP/ENIR7……IR0CSA0D7-D0INTAINTCAS0CAS1主8259ACAS2SP/ENIR7IR6IR4IR3IR0……………地址总线(16)控制总线数据总线(8)中断请求8259A级联方式VCC…第79页/共97页级联与单片初始化的区别:级联时,ICW1中SNGL=0;单片SNGL=1级联时,要求设置ICW3(主从片都要设)级联时,优先级一般设置为特殊完全嵌套工作方式,即ICW4中SFNM=1第80页/共97页例7-20
一个8259A主片,连接2片8259A从片,从片分别经主片IR3和IR6引脚接入,则系统中优先级排列次序如下:主片:IR0、IR1、IR2
从片:IR0、IR1、…、IR7主片:IR4、IR5从片:IR0、IR1、…、IR7主片:IR7中断处理结束要发两个EOI命令第81页/共97页RDWRCSA0D7-D0INTAINTCAS0
从8259ACAS1CAS2SP/ENIR7IR6IR5IR4……IR0CSA0D7-D0INTAINTRDWRCAS0CAS1主8259ACAS2SP/ENIR7IR6IR5IR4IR3IR2IR1IR0……8259A级联方式VCC
3.8259A级联使用例子(300页)某系统中两片8259A采用中断级联方式组成中断系统,从片的INT端连8259A主片的IR3端。若当前8259A主片从IR1、IR5,端引入两个中断请求,中断类型号为31H、35H。中断服务程序的段基址为1000H,偏移地址分别为2000H及3000H。8259A从片由IR4、IR5端引入两个中断请求,中断类型号为44H和45H,中断服务程序段基址为2000H,偏移地址为3600H及4500H。第82页/共97页000C40020000C60010:000D40030000D60010:00110003600120020001140045001160020IP中断类型号31HCS入口地址IP中断类型号35HCS入口地址IP中断类型号44HCS入口地址IP中断类型号45HCS入口地址主8259A引入的中断请求从8259A引入的中断请求中断入口地址表第83页/共97页(1)中断向量形成:将4个中断入口地址写入中断向量表。MOVAX,1000H;送入段地址MOVDS,AXMOVDX,2000H;送入偏移地址MOVAL,31H;中断类型号3lHMOVAH,25HINT21HMOVDX,3000HMOVAL,35H;中断类型号35HINT21HMOVAX,2000HMOVDS,AXMOVDX,3600HMOVAL,44H;中断类型号44HMOVAH,25HINT21HMOVDX,4500HMOVAL,45H;中断类型号45HINT21H第84页/共97页(2)主片8259A初始化编程:8259A主片端口地址为FFC8H和FFC9H。MOVAL,11H;定义ICW1,主片8259A级联使用,边沿触发MOVDX,0FFC8HOUTDX,ALMOVAL,30H;定义ICW2,中断类型号30H~37HMOVDX,0FFC9HOUTDX,ALMOVAL,08H;定义ICW3,IR3端接从片8259A的INT端OUTDX,ALMOVAL,11H;定义ICW4,特殊全嵌套方式,非缓冲方式,OUTDX,AL;非自动EOI结束方式MOVAL,0D5H;定义OCW1,允许IR1,IR3,IR5中断,其余端OUTDX,AL;口中断请求屏蔽MOVAL,20H;定义OCW2,普通EOI结束方式MOVDX,0FFC8HOUTDX,AL×××1LTIM×SNGLIC400010001T7T6T5T4T3×××000SFNMBUFM/SAEOIμPMS7S6S5S4S3S2/ID2S1/ID1S0/ID000110000M7M6M5M4M3M2M1M0RSLEOI00L2L1L01101010100100000第85页/共97页(3)8259A从片初始化编程片,从片8259A的端口地址为FFCAH和FFCBH。MOVAL,11H;定义ICW1,级联使用边沿触发,要设置ICW4MOVDX,0FFCAHOUTDX,ALMOVAL,40H;定义ICW2,引入中断类型号为40H~47HMOVDX,0FFCBHOUTDX,ALMOVAL,03H;定义ICW3,从片接在主片的IR3端OUTDX,ALMOVAL,01H;定义ICW4,完全嵌套方式,非缓冲方式OUTDX,AL;非自动EOI结束方式MOVAL,0CFH;定义OCW1,允许IR4、IR5中断引入OUTDX,AL;其余端口中断请求屏蔽
MOVDX,0FFCAH;定义OCW2,MOVAL,20H;普通EOI结束方式OUTDX,AL无论对主片8259A或从片8259A,操作命令字可根据需要在操作过程中设置,OCW2命令字定义中断结束方式时,通常放在中断服务子程序中。×××1LTIM×SNGLIC400010001T7T6T5T4T3×××000SFNMBUFM/SAEOIμPMS7S6S5S4S3S2/ID2S1/ID1S0/ID001000000M7M6M5M4M3M2M1M011001111RSLEOI00L2L1L000100000第86页/共97页主片中断结束命令:MOVAL,20H;定义OCW2,普通EOI结束方式MOVDX,0FFC8HOUTDX,AL从片中断结束命令:MOVAL,20H;定义OCW2,普通EOI结束方式MOVDX,0FFCAHOUTDX,ALRSLEOI00L2L1L0第87页/共97页应用注意事项利用上升沿做为中断请求IRQ的有效信号IRQ0~IRQ7的中断类型号依次为08H~0FH,IRQ8~IRQ15依次为70H~77H采用完全嵌套优先权方式,中断优先权从高到低顺序为IRQ0~IRQ1、IRQ8~IRQ15、IRQ3~IRQ7,且不能改变采用普通中断结束EOI方式,需要在中断服务程序最后发送普通EOI命令一般采用普通屏蔽方式,通过写入IMR允许中断,但注意不要破坏原屏蔽状态第88页/共97页外部中断服务程序编写外部可屏蔽中断服务程序,需注意:发送中断结束命令不要使用DOS系统功能调用(禁止重入)中断服务程序尽量短小编写主程序,需注意:修改中断向量控制CPU的中断允许标志设置8259A的中断屏蔽寄存器第89页/共97页例:以下程序功能是,对输入到IRQ7引脚的中断请求次数进行统计并显示,计满9次后返回DOS操作系统。(IR0的中断类型号为08H)STACKSEGMENTSTACK”STACK'’DB100DUP(?)STACKENDSDATASEGMENTINT_SEGDW?;定义变量,以保存中断向量段址
INT_OFFDW?;定义变量,以保存中断向量偏移量
CNTDB?;保存中断次数DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATA第90页/共97页;以下为主程序START:MOVAX,DATAMOVDS,AXMOVAL,0FH;0FH为中断类型号(IR7对应的中断类型号)MOVAH,35H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 轻度前列腺增大日常养护指南
- 2026芜湖护理面试题及答案大全
- 2026咸阳幼教面试题目及答案
- 2026消防救援员面试题及答案
- 2026新乡银行面试题目及答案
- 医院门诊综合楼装修工程施工方案
- 水路(船舶)运输合同范文
- 营业员劳动合同书
- 2026年矿山设备故障AI诊断技术
- 2026年工业质检数字化升级:AI算法与传统检测技术的融合路径
- 跨部门协作会议纪要模板及行动计划
- 家庭触电事故案例分析
- 社区食堂规范运营制度范本
- 2025年教师招聘考试必考的351个教育综合基础知识 (超强)
- GB/T 39693.4-2025硫化橡胶或热塑性橡胶硬度的测定第4部分:用邵氏硬度计法(邵尔硬度)测定压入硬度
- 《电子信息产品名称编码规则编制说明》
- 电铲知识学习培训课件
- 江门市重点行业领域安全风险常见隐患识别及整改指引(行业领域)(压缩版)
- 发改价格〔2007〕670号建设工程监理与相关服务收费标准
- 金融产品路演
- 融入AI技术的2024版《荷塘月色》教学课件发布
评论
0/150
提交评论