微机原理与单片机应用课件:第6章 中断系统_第1页
微机原理与单片机应用课件:第6章 中断系统_第2页
微机原理与单片机应用课件:第6章 中断系统_第3页
微机原理与单片机应用课件:第6章 中断系统_第4页
微机原理与单片机应用课件:第6章 中断系统_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

1、(微型计算机中断系统)4.4.3 中断操作1 概述 一、中断概念 中断就是CPU暂停执行现行的程序,转而处理随机事件,处理完毕后再回到被中断的程序继续执行,这一过程称为中断。中断系统具有以下基本功能: 为了加强中断系统的灵活性,对于各种中断请求,应该具有屏蔽和开放的功能,使得程序员可以灵活控制。 具有“中断优先级别”的判断和控制功能,即能实现中断源排队。当有多个中断源申请中断时,能根据事先的中断优先级别设定及时响应中断。 能实现中断嵌套,即高优先级别的中断能中断较低优先级别的中断。 系统响应中断后,能自动进行中断处理。当中断处理完后能自动返回。中断主要解决的问题1实现分时操作,解决CPU与外部

2、设备速度上的差异,提高计算机系统的工作效率,达到并行处理的目的。2处理随机的异常事件,如运算结果溢出、机器故障等。3实现实时操作,在控制系统中许多信号是随机产生的,只有通过中断系统才能实时的对它们进行处理,避免信息的丢失。8086中断系统8086的中断系统采用向量中断机制能够处理256个中断用中断类型号0255区别可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理中断源:引发CPU中断的来源称为中断源 中断响应:接受中断请求中断向量表:存放中断服务子程序入口地址的内存区域(00000H003FFH)中断优先权:有多个中断源请求中断时, 系统响应中断申请的优先级别中断屏蔽 :

3、由软件设置,可使中断请求不被响应,称为中断屏蔽。二、中断分类非屏蔽中断源中断逻辑INTO指令单步中断除法错误INT n指令CPUINTRNMI可屏蔽中断源8259A中断控制器IR0IR1IR2IR3IR4IR5IR6IR7外设中断源 INTA8086中断源内部中断外部中断1. 外部中断 外部中断是由于CPU外部提出中断请求引起的程序中断,也称为硬件中断。非屏蔽中断(不可屏蔽中断):类型号为2外部通过非屏蔽中断NMI请求,必须响应非屏蔽中断主要用于处理系统的意外或故障可屏蔽中断:类型号来自中断控制器外部通过可屏蔽中断INTR请求,由IF控制是否响应;CPU响应时产生INTA信号可屏蔽中断主要用于

4、CPU与外设交换数据中断标志位IF(在FR寄存器内)的状态IF0:可屏蔽中断不会被响应关中断、禁止中断、中断屏蔽系统复位,使IF0任何一个中断被响应后,首先应使IF0执行指令CLI,使IF0IF1:可屏蔽中断会被响应开中断、允许中断、中断开放执行指令STI,使IF1执行指令IRET恢复原IF状态2、 内部中断 内部中断是由于CPU内部执行程序出现异常引起的程序中断,所以又称软件中断。内部中断的中断类型号已定(内部中断是不可屏蔽的)除法错中断:类型号为0指令中断:类型号为n断点中断:类型号为3溢出中断:类型号为4单步中断:类型号为1软件中断由中断指令INT引起的中断由CPU运算错误引起的中断由D

5、ebug设置的中断2 中断处理过程可屏蔽中断处理流程中断过程申请响应处理中断申请 当需要CPU中断以处理一些紧急事件,向CPU发出的请求。引发CPU中断的来源称为中断源 。中断响应 为了及时处理中断,中断系统(或中断装置)定时查询有无中断申请,若有且未屏蔽,则引出处理中断的程序称为该中断被响应。中断处理 执行相应的中断处理程序(例行中断服务子程序)。一、CPU响应中断过程 CPU响应I/O中断的三个条件: (1)外设提出中断申请 (2)本中断位未被屏蔽 (3)中断允许(IF=1)NMIN内部中断INTRTF=1中断响应周期读中断类型号下条指令现行指令IF1NNNNYYYYY中断响应过程(P10

6、3)Y还有NMITEMP1标志寄存器入栈TEMPTF,IFTF0CS:IP入栈获取中断向量执行服务程序弹出CS:IP弹出标志寄存器返回被中断程序NNY中断响应过程二、 8086的中断向量表确定中断源:查询中断矢量中断要解决的问题确定中断源找到对应中断处理程序的入口地址1.8086的中断向量表中断向量:中断服务程序的入口地址(首地址)逻辑地址含有段地址CS和偏移地址IP(32位)每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节8086微处理器从物理地址00000H开始,依次安排各个中断向量。256个中断占用1KB区域,就形成中断向量表类型号为N的中断向量的物理地址N48086的中断向量

7、表中断向量在中断向量表中的首地址中断类型号4除数为0中断单步中断非屏蔽中断断点中断溢出中断NMI、INTR、单步和除法错中断同时产生时的中断处理过程19C类型67H中断向量1A050201A200A01A4类型69H中断向量CLIPUSH DS : :POP DSSTIIRET中断处理程序A000:2050。INT 68HMOV AX,0。向量地址68H41A0HIPCS2050A000指令中断操作过程例子2.中断向量(中断入口地址)的设置设置中断向量 AL=中断类型号 DS:DX=中断服务程序入口地址 AH=25H ;系统功能号,设置中断向量 INT 21H ;DOS系统功能调用取中断向量

8、AL=中断类型号 AH=35H ;系统功能号,取中断向量 INT 21H ;DOS系统功能调用返回:ES:BX=中断服务程序入口地址方法一:MOV AX,SEG INTRAD ;设置中断向量DS:DXMOV DS,AXMOV DX,OFFSET INTRADMOV AL,N ;AL=中断号MOV AH,25H;系统功能号INT 21H;系统功能调用:INTRAD PROC FAR: IRETINTRAD ENDP MOV AX,0 MOV ES,AX ;中断向量的段基址ES=0 MOV DI,N*4 ;找到中断向量地址,N是中断号 MOV AX,OFFSET INTRAD;求中断子程序的段内偏

9、移地址 CLD;向上(地址增大的方向)依次写操作 STOSW ;写入偏移量(ES:DI),DI-(AX) MOV AX,SEG INTRAD ;求中断子程序的段基址 STOSW ;写入段基址, DI+2-(AX) STI ;(IF)=1,开中断 :INTRAD PROC FAR ;中断子程序(过程),可段间调用 : IRET ;中断返回(可段间返回)INTRAD ENDP方法二:3.中断类型号(确定中断源)的获取对除法错、单步中断、NMI、断点中断、溢出中断,CPU自动提供中断类型号04。对INT n,中断类型号由n确定。对I/O中断(由INTR引脚引入),通过中断控制器8259A获得中断类型

10、号。处理中断的主程序的编写方法1主程序中的初始化 (1)设置中断向量。 (2)设置8259A的中断屏蔽寄存器的中断屏蔽位。 (3)设置CPU中断允许位标志IF(开中断STl)。2硬件(外设接口)和CPU自动完成中断响应 (1)外设接口向CPU的INTR端发中断请求。 (2)当前指令执行完后,CPU发两个中断响应脉冲信号INTA给外设接口。 (3)CPU取中断类型号n。 (4)CPU自动将当前FR、CS、IP内容入栈保护。 (5)清除IF、TF(禁止外部中断和单步中断)。 (6)从中断向量表中取(4n)地址中内容IP,取(4n2)地址中内容CS。 (7)转向中断服务子程序。 注意: (1)对重复

11、前缀的指令(如REP MOVSB)作为一条指令处理。执行一次重复前缀和串指令即可响应中断,而不是把串操作全部执行完。 (2)遇到开中断指令STI和中断返回指令IRET,要在这两条指令执行完后,再执行一条指令才能响应中断。 (3)CPU自动清除IF及TF位,使CPU进入中断服务程序后,默认不允许再响应新的外部中断;如果在中断服务程序中还允许外部中断进入,则在中断服务程序中必须再开中断。三、中断服务子程序中断服务子程序的结构形式:1.保护现场2.开中断,IF=1,允许中断嵌套3.执行中断处理程序4.关中断,IF=0,禁止其他中断请求进入5.发中断结束命令EOI6.恢复现场7.中断返回IRET内部中

12、断服务程序编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC/ENDP保护完现场后要用开中断指令STI置IF=1恢复现场前要用关中断指令CLI置IF=0最后用中断返回指令IRET通常采用寄存器传递参数主程序需要调用中断服务程序调用前,需要设置中断向量利用INT n指令调用中断服务程序例:内部中断服务程序编写80H号指令中断服务程序功能:显示以“0”结尾字符串的功能利用显示器功能需调用INT 21H的2号功能模块字符串缓冲区首地址为入口参数DS:DX(段地址:偏移地址)传递参数intoff dw ? ;保留一个字的内存intseg dw ? ;保留一个字的内存intmsg db A

13、Instruction Interrupt ! db 0dh,0ah,0 : : mov al,80h ;保存原有中断向量至(ES:BX) mov ah,35h ;其中断类型号为80H int 21h ;系统功能(35H)调用 mov intoff,bx ;保存偏移地址 mov intseg,es;保存段基地址 push ds ;设置中断类型号为80H的中断向量 mov dx,offset new80h mov ax,seg new80h mov ds,ax ;中断入口地址保存至(DS:DX) mov ax,2580h;(AH)=25H,(AL)=80H int 21h pop dsmov d

14、x,offset intmsg int 80h ;调用中断服务程序mov dx,intoffmov ax,intsegmov ds,axmov ax,2580hint 21hmov ax,4c00hint 21h : : 恢复原来的中断向量New80h proc far push ax ;保护寄存器 push si sti ;开中断 mov si,dxnew1: mov al,si cmp al,0 jz new2 mov dl,al mov ah,02h 显示单个字符 int 21h inc si jmp new1new2: cli ;关中断 pop si ; 恢复寄存器 pop ax ir

15、et; 中断返回New80h endpintoff dw ?intseg dw ?intmsg db A Instruction Interrupt ! db 0dh,0ah,0 A Instruction Interrupt !DXsiD0D7第一个INTA周期T1 T2 T3 T4ALECLK 第二个INTA周期T1 T2 T3 T4 INTALOCKn中断响应总线周期时序图中断类型号四、中断响应时序执行一条指令中断?关中断保护现场屏蔽本级和低级中断开中断中断服务程序关中断恢复现场返回取下一条指令否是多个中断源中断流程图3 中断优先级和中断嵌套一、中断优先级IBM PC机优先级 内部中断除

16、法错中断指令中断溢出中断 不可屏蔽中断 可屏蔽中断 单步中断高低如何实现优先级响应?1.软件查询中断优先级A0A15锁存器INTR三态缓冲器译码 8001HD0D7中断0中断1中断2IOR中断查询接口 :MOV DX,8001HIN AL,DXTEST AL,80HJNZ SEV0TEST AL,40HJNZ SEV1TEST AL,20HJNZ SEV2TEST AL,10HJNZ SEV3TEST AL,08HJNZ SEV4 :菊花链优先查询法2.硬件查询优先方式菊花链法1:有0:无或0有效中断请求寄存器中断屏蔽寄存器IR0IR7优先级管理逻辑中断服务寄存器中断类型寄存器 由中断源提供3

17、.矢量中断优先级8253定时器键盘未用异步通信卡(辅)异步通信卡(主)硬盘软盘并行打印机21H二、中断嵌套IR7IR6IR5IR4IR3IR2IR1IR0低高4 可编程中断控制器8259A一、功能Intel 8259A是可编程中断控制器PIC8259A的基本功能一片8259A可以管理8级中断,可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的中断类型号8259A设计有多种工作方式,可通过编程选择二、 8259A的内部结构D7D0INTAINT中断请求寄存器中断屏蔽寄存器(IMR)数据总线缓冲器IR0IR7读/写控制逻辑级联缓冲器比较器RDWRA0CSCAS0CSA1CAS

18、2SP/EN优先权判别电路中断服务寄存器控制逻辑ISRPRIRR8259A的读写功能CSRDWRA0D4D3操作指令01001CPUICW1OUT0101CPUICW2、ICW3、ICW4、OCW1010000CPUOCW2010001CPUOCW30010IRR/ISRCPUIN0011IMRCPU1数据总线高阻状态11数据总线高阻状态中断控制中断请求寄存器IRR保存8条外界中断请求信号IR0IR7的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断请求Di位为1表示IRi中断正在服务中;为0表示没有被服务中断屏蔽寄存器IMR保存对

19、中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽(禁止);为0表示允许中断级联一个系统中,8259A可以级联,有一个主8259A,若干个从8259A级联时,主8259A的三条级联线CAS0CAS2作为输出线,连至每个从8259A的CAS0CAS2每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR主8259A的INT线连至CPU的中断请求输入端SP/EN在非缓冲方式下,规定该8259A是主片(SP1)还是从片(SP0)CS A0 D7-D0 INTA INT CAS0 从8259A CAS1 2 CAS2SP/EN IR7 IR0CS A0 D7-D0 INT

20、A INT CAS0 从8259A CAS1 1 CAS2SP/EN IR7 IR0CS A0 D7-D0 INTA INTCAS0CAS1 主8259ACAS2SP/EN IR7IR6 IR4IR3IR0地址总线(16)控制总线数据总线(8)中断请求8259A级联方式VCC三、 8259A的中断管理方式完全嵌套方式 特殊全嵌套方式自动循环方式特殊循环方式优先权固定方式优先权循环方式设置优先权方式普通中断结束方式特殊中断结束方式自动中断结束方式非自动中断结束方式结束中断处理方式屏蔽中断源方式普通屏蔽方式特殊屏蔽方式中断请求触发方式边沿触发方式电平触发方式数据线连接方式 缓冲方式 非缓冲方式中断

21、查询方式1. 8259A的编程结构2. 优先级设置方式完全嵌套方式8259A的中断优先权顺序固定不变,从高到低依次为 IR0、IR1、IR2、IR7中断请求后,8259A对当前请求中断中优先权最高的中断IRi予以响应,将其类型号送上数据总线,对应ISR的Di位置位,至到中断结束(ISR的Di位复位)在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套特殊全嵌套方式 用于级联方式,可响应同级中断请求。优先权自动循环方式优先权特殊循环方式(程序指定初始的最低优先级)3. 中断结束方式8259A利用中断服务寄存器ISR判断:某位为1,表示正在进行中断服务;该位为0,

22、就是该中断结束服务。中断结束方式就是如何使ISR某位为0,普通EOI结束方式配合完全嵌套优先权方式使用当CPU用输出指令往8259A发出普通中断结束EOI命令时,8259A就会把所有正在服务的中断中优先权最高的ISR位复位特殊EOI结束方式配合循环优先权方式使用CPU在程序中向8259A发送一条特殊中断结束命令,这个命令中指出了要清除哪个ISR位自动EOI结束方式4.循环优先级的循环方法循环优先级方式,与中断结束方式有关,有三种循环方式:(1)普通EOI循环方式(2)特殊EOI循环方式(3)自动EOI循环方式 中断响应后,在第二个INTA信号的后沿自动将ISR寄存器中相应位置0,并按普通EOI

23、循环方式改变个中断的优先级别。普通EOI循环方式原始状态ISR内容IR7IR6IR5IR4IR3IR2IR1IR000100100优先级76543210处理完IR2ISR内容00100000优先级43210765处理完IR5ISR内容00000000优先级10765432特殊EOI循环方式初始状态ISR内容IR7IR6IR5IR4IR3IR2IR1IR001000100优先级76543210执行置位优先权指令后ISR内容01000100优先级321076545.中断源屏蔽方式普通屏蔽方式将IMR的Di位置1,则对应的中断IRi被屏蔽,该中断请求不能从8259A送到CPU如果IMR的Di位置0,

24、则允许IRi中断产生特殊屏蔽方式将IMR的Di位置1,对应的中断IRi被屏蔽的同时,使ISR的Di位置0(开放低级别的中断请求)6. 中断请求引入方式边沿触发方式8259A将中断请求输入端出现的上升沿作为中断请求信号电平触发方式中断请求端出现的高电平是有效的中断请求信号中断查询方式 OCW3、查询字(P241、P242)四、8259A的编程 8259A分为初始化编程和操作编程两部分,初始化编程是由CPU向8259A输入初始化命令字,这是芯片进行正常工作前必须做的,使8259A处于一个规定的基本工作方式上。初始化命令字由ICW1ICW4组成。8259A在任何情况下,从A0=0的端口接收到一个D4

25、=1的命令就是ICW1,紧接着的命令就是ICW2ICW4,进入初始化状态后,芯片就可以接收来自IR端口的中断请求,准备接收CPU写入的操作命令字OCW,以选择不同的操作方式。OCW可以随时写入,这些字有各自的标志来引导进入相应的寄存器。还可以读取8259A的信息,以便了解它的工作状态初始命令字完成的功能设定中断请求信号触发形式,电平或边沿触发设定单片或级联设定中断类型号基值,即IR0对应的中断类型号设定优先级设置方法设定中断处理结束时的结束操作方式1. 初始化命令字ICW规定芯片的基本工作方式初始化命令字ICW最多有4个8259A在开始工作前必须写入必须按照ICW1ICW4顺序写入ICW1和I

26、CW2是必须送的ICW3和ICW4由工作方式决定ICW1 芯片控制初始化1LTIMSNGLIC4D7D6D5D4D3D2D1D0表示可以任意为1为0都可以(建议为0)1只能为1,作为标志中断触发方式:LTIM1,电平触发方式LTIM0,边沿触发方式规定单片或级联方式:SNGL1,单片方式SNGL0,级联方式是否写入ICW4IC41,要写入ICW4IC40,不写入ICW4A00ICW2 设置中断类型号T7T6T5T4T3D7D6D5D4D3D2D1D0中断类型号的低3位由8259A自动确定:IR0为000、IR1为001、IR7为111A01T7T3为中断类型号的高5位由程序设定ICW3 仅用于

27、级联方式S7S6S5S4S3S2/ID2S1/ID1S0/ID0D7D6D5D4D3D2D1D0主片8259A:Si1对应IRi接有从片; 否则IRi没有连接从片从片8259A:ID0ID2编码说明从片INT引脚接到主片哪个IR引脚A01ICW4 方式控制000SFNMBUFM/SAEOIPMD7D6D5D4D3D2D1D0嵌套方式:1:特殊全嵌套方式0:非特殊完全嵌套方式数据线的缓冲方式:1:缓冲方式0:非缓冲方式 缓冲方式主片/从片选择:1:主片0:从片中断结束方式:1:自动中断结束0:非自动中断结束A01BUF、M/S、SP/EN之间关系BUF位M/S位SP/EN端0:非缓冲 方式无意义

28、SP有效(输入信号)SP=1SP=0主8259A从8259A1:缓冲方式1:主8259A0:从8259AEN有效(输出信号)EN=1EN=0CPU8259A8259ACPU微处理器类型:1:16位80 x860:8位8080/8085数据线连接方式缓冲方式8259A的数据线需加缓冲器予以驱动8259A把SP/EN引脚作为输出端,输出允许信号,用以锁存或开启缓冲器非缓冲方式SP/EN引脚为输入端若8259A级联,由其确定是主片或从片 mov al,11h ;写入ICW1out 20h,al ;边沿触发、级联 ; 8086/8088mov al,08h ;写入ICW2out 21h,al mov

29、al,04h ;写入ICW3out 21h,al ;IR2接从片mov al,1h ;写入ICW4out 21h,al ;非特殊完全嵌套方式 ;非缓冲方式,M/S无意义 ;非自动EOI方式 ;8086/8088配置1LTIMSNGLIC4例:8259初始化(主片)0 0 0 1 0 0 0 1T7T6T5T4T3000SFNMBUFM/SAEOIPMS7S6S5S4S3S2/ID2S1/ID1S0/ID0ICW4(方式控制)ICW3 (主/从)ICW2 (中断类型号)0 0 0 0 1 0 0 0ICW1 (芯片控制)0 0 0 0 0 1 0 00 0 0 0 0 0 0 1mov al,1

30、1h ;写入ICW1out 0a0h,al ;沿触发、级联 ; 8086/8088mov a1,70h ;写入ICW2out 0alh,almov al,02h ;写入ICW3out 0a1h,al ; 接主片的IR2mov al, 01h ;写入ICW4out 0a1h,al ;非特殊完全嵌套方式 ;非缓冲方式,M/S无意义 ;非自动EOI方式 ;8086/8088配置例:8259初始化(从片)1LTIMSNGLIC40 0 0 1 0 0 0 1T7T6T5T4T3000SFNMBUFM/SAEOIPMS7S6S5S4S3S2/ID2S1/ID1S0/ID0ICW4(方式控制)ICW3 (

31、主/从)ICW2 (中断类型号)0 1 1 1 0 0 0 0ICW1 (芯片控制)0 0 0 0 0 0 1 00 0 0 0 0 0 0 12. 操作命令字OCWCPU在对8259A初始化编程后,8259A就进入工作状态,可以接受IRi输入的中断。OCW可在这以后的任何时候写入,以选择不同的操作方式。OCW共有3个:OCW1OCW3写入时没有顺序要求,需要哪个OCW就写入那个OCWOCW有各自的标志,引导进入相应的寄存器操作命令字完成的功能设定中断屏蔽设定中断优先级次序中断结束方式等OCW1 屏蔽命令M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0内容写入中断屏蔽寄存器IM

32、RDiMi对应IRi,为1禁止IRi中断;为0允许IRi中断。各位互相独立。A01OCW2 控制中断结束、优先权循环等RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和EOI配合使用产生中断结束EOI命令和改变优先权顺序001:普通EOI方式011:特殊EOI方式101:普通EOI循环方式111:特殊EOI循环方式000:自动EOI循环(复位)100:自动EOI循环(置位)110:置位优先权命令010:无效L2L0的3位编码指定IR引脚 A00标识见p240OCW3 中断屏蔽和读取寄存器状态0ESMMSMM01PRRRISD7D6D5D4D3D2D1D0设置中断屏蔽方式0:

33、无效10:特殊屏蔽方式复位11:特殊屏蔽方式置位规定随后读取的状态字含义10:读IRR11:读ISRA00标识1:查询8259状态0:不查询特殊屏蔽方式:只屏蔽本级中断,允许高级或低级中断进入读取状态字CPU可读出IRR、ISR、IMR和查询字A0为低,由OCW3中RR和RIS位设定读取IRR或ISR,由OCW3中P位设定读取查询字而A0引脚为高电平时读取的都是IMR查询字反映8259A是否有中断请求中断查询方式用于多于64级中断的场合。查询字IRW2W1W0D7D6D5D4D3D2D1D0中断位IR为1,有外设请求中断W2W0的编码为当前中断请求的最高优先级A00命令字和状态字的区别方法 利

34、用读写信号区别写入的控制寄存器和读出的状态寄存器 利用地址信号区别不同I/O地址的寄存器 由控制字中的标志位说明是哪个寄存器 由芯片内顺序控制逻辑按一定顺序识别不同的寄存器 由前面的控制字决定后续操作的寄存器五、8259A的中断级联当I/O中断源多于8个时,可以采用级联方式。硬件连接ICW的设置中断处理结束,要分别给主、从片发EOI。CS A0 D7-D0 INTA INT CAS0 从8259A CAS1 2 CAS2SP/EN IR7 IR0CS A0 D7-D0 INTA INT CAS0 从8259A CAS1 1 CAS2SP/EN IR7 IR0CS A0 D7-D0 INTA I

35、NTCAS0CAS1 主8259ACAS2SP/EN IR7IR6 IR4IR3IR0地址总线(16)控制总线数据总线(8)中断请求8259A级联方式VCC级联与单片初始化的区别:级联时,ICW1中SNGL=0;单片SNGL=1级联时,要求设置ICW3(主从片都要设)级联时,优先级一般设置为特殊完全嵌套工作方式,即ICW4中SFNM=1例 一个8259A主片,连接2片8259A从片,从片分别经主片IR3和IR6引脚接入,则系统中优先级排列次序如下:主片:IR0、IR1、IR2 从片:IR0、IR1、IR7 主片:IR4、IR5 从片:IR0、IR1、IR7 主片:IR7中断处理结束要发两个EO

36、I命令RD WR CS A0 D7-D0 INTA INT CAS0 从8259A CAS1 CAS2SP/EN IR7IR6IR5IR4 IR0CS A0 D7-D0 INTA INT RD WRCAS0CAS1 主8259ACAS2SP/EN IR7IR6IR5IR4 IR3IR2IR1IR08259A级联方式VCC 38259A级联使用例子(243页) 某系统中两片8259A采用中断级联方式组成中断系统,从片的INT端连8259A主片的IR3端。若当前8259A主片从IR1、IR5,端引入两个中断请求,中断类型号为31H、35H。中断服务程序的段基址为1000H,偏移地址分别为2000H

37、及3000H。8259A从片由IR4、IR5端引入两个中断请求,中断类型号为44H和45H,中断服务程序段基址为2000H,偏移地址为3600H及4500H。000C40020000C60010:000D40030000D60010:00110003600120020001140045001160020IP 中断类型号31HCS 入口地址IP 中断类型号35HCS 入口地址IP 中断类型号44HCS 入口地址IP 中断类型号45HCS 入口地址主8259A引入的中断请求从8259A引入的中断请求中断入口地址表(1)中断向量形成:将4个中断入口地址写入中断向量表。MOV AX,1000H ;送入

38、段地址MOV DS,AXMOV DX,2000H ;送入偏移地址MOV AL,31H ;中断类型号3lHMOV AH,25HINT 21HMOV DX,3000HMOV AL, 35H ;中断类型号35HINT 21HMOV AX,2000HMOV DS,AXMOV DX,3600HMOV AL,44H ;中断类型号44HMOV AH,25HINT 21HMOV DX,4500HMOV AL,45H ;中断类型号45HINT 21H(2)主片8259A初始化编程:8259A主片端口地址为FFC8H和FFC9H。MOV AL,11H ;定义ICW1,主片8259A级联使用,边沿触发MOV DX,

39、0FFC8HOUT DX,ALMOV AL,30H ;定义ICW2,中断类型号30H37HMOV DX,0FFC9HOUT DX,ALMOV AL,08H ;定义ICW3,IR3端接从片8259A的INT端OUT DX,ALMOV AL,11H ;定义ICW4,特殊全嵌套方式,非缓冲方式,OUT DX,AL ;非自动EOI结束方式MOV AL,0D5H ;定义OCW1,允许IR1,IR3,IR5中断,其余端OUT DX,AL ;口中断请求屏蔽MOV AL,20H ;定义OCW2,普通EOI结束方式MOV DX,0FFC8HOUT DX,AL1LTIMSNGLIC40 0 0 1 0 0 0 1

40、T7T6T5T4T3000SFNMBUFM/SAEOIPMS7S6S5S4S3S2/ID2S1/ID1S0/ID00 0 1 1 0 0 0 0M7M6M5M4M3M2M1M0RSLEOI00L2L1L0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0(3)8259A从片初始化编程片,从片8259A的端口地址为FFCAH和FFCBH。MOV AL , 11H ;定义ICW1,级联使用边沿触发,要设置ICW4MOV DX , 0FFCAHOUT DX , ALMOV AL , 40H ;定义ICW2,引入中断类型号为40H47HMOV DX , 0FFCBHOUT DX , AL

41、MOV AL , 03H ;定义ICW3,从片接在主片的IR3端OUT DX , ALMOV AL , 01H ;定义ICW4,完全嵌套方式,非缓冲方式OUT DX , AL ;非自动EOI结束方式MOV AL , 0CFH ;定义OCW1,允许IR4、IR5中断引入OUT DX , AL ;其余端口中断请求屏蔽 MOV DX , 0FFCAH ;定义OCW2,MOV AL , 20H ;普通EOI结束方式OUT DX , AL无论对主片8259A或从片8259A,操作命令字可根据需要在操作过程中设置,OCW2命令字定义中断结束方式时,通常放在中断服务子程序中。1LTIMSNGLIC40 0

42、0 1 0 0 0 1T7T6T5T4T3000SFNMBUFM/SAEOIPMS7S6S5S4S3S2/ID2S1/ID1S0/ID00 1 0 0 0 0 0 0M7M6M5M4M3M2M1M0 1 1 0 0 1 1 1 1RSLEOI00L2L1L0 0 0 1 0 0 0 0 0主片中断结束命令:MOV AL,20H ;定义OCW2,普通EOI结束方式MOV DX,0FFC8HOUT DX,AL从片中断结束命令:MOV AL,20H ;定义OCW2,普通EOI结束方式MOV DX,0FFCAHOUT DX,ALRSLEOI00L2L1L0应用注意事项利用上升沿做为中断请求IRQ的有效

43、信号IRQ0IRQ7的中断类型号依次为08H0FH,IRQ8IRQ15依次为70H77H采用完全嵌套优先权方式,中断优先权从高到低顺序为IRQ0IRQ1、IRQ8IRQ15、IRQ3IRQ7,且不能改变采用普通中断结束EOI方式,需要在中断服务程序最后发送普通EOI命令一般采用普通屏蔽方式,通过写入IMR允许中断,但注意不要破坏原屏蔽状态外部中断服务程序编写外部可屏蔽中断服务程序,需注意:发送中断结束命令不要使用DOS系统功能调用(禁止重入)中断服务程序尽量短小编写主程序,需注意:修改中断向量控制CPU的中断允许标志设置8259A的中断屏蔽寄存器例:以下程序功能是,对输入到IRQ7引脚的中断请求次数进行统计并显示,计满9次后返回DOS操作系统。(IR0的中断类型号为08H)STACK SEGMENT STACK”STACK DB 100 DUP(?)STACK ENDSDATA SEGMENT INT_SEG DW ? ;定义变量,以保存中断向量段址 INT_OFF DW ? ;定义变量,以保存中断向量偏移量 CNT DB ? ;保存中断次数DATA ENDSCODE SEG

温馨提示

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

评论

0/150

提交评论