微机接口中断控制使用_第1页
微机接口中断控制使用_第2页
微机接口中断控制使用_第3页
微机接口中断控制使用_第4页
微机接口中断控制使用_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

1、12第7章 中断控制接口n教学重点教学重点n 8088 CPU的中断系统的中断系统n 8259A的中断工作过程和工作方式的中断工作过程和工作方式n 中断服务程序的编写中断服务程序的编写37.1 8088中断系统n8088的中断系统采用的中断系统采用向量中断向量中断机制机制n一共可处理一共可处理256个中断源,中断向量编号个中断源,中断向量编号为为0255,用以区别不同的中断。,用以区别不同的中断。n借助专用的中断控制器借助专用的中断控制器 Intel 8259A对系对系统中的可屏蔽中断资源(统中的可屏蔽中断资源(INTR)进行扩充)进行扩充和管理,和管理, 8259A 的功能有:的功能有:n扩

2、充系统的可屏蔽中断资源(每片可管理扩充系统的可屏蔽中断资源(每片可管理8个个中断,级联后最多可管理中断,级联后最多可管理64个中断)个中断)n实现中断优先级比较实现中断优先级比较n实现中断源的识别(通过向总线送中断矢量)实现中断源的识别(通过向总线送中断矢量)47.1.1 8088的中断类型中断逻辑中断逻辑INTO指令指令单步单步中断中断除法除法错误错误INT n指令指令CPU8259A中断中断控制器控制器IR0IR1IR2IR3IR4IR5IR6IR7来来自自外外设设的的中中断断源源 -INTA可屏蔽中断申请可屏蔽中断申请 INTR不可屏蔽中断申请不可屏蔽中断申请可屏蔽中断源可屏蔽中断源不可

3、屏蔽中断源不可屏蔽中断源内部中断内部中断INT 3指令指令3n401NMI中断中断2不可屏蔽中断源不可屏蔽中断源外部中断外部中断58088的中断分类n内部中断内部中断内部机制产生内部机制产生n除法错中断除法错中断(0号号)除运算除运算结果溢出时产生结果溢出时产生n指令中断指令中断(n号号)执行执行int n指令后产生(操作码指令后产生(操作码CDH)n断点中断断点中断(3号号)执行执行int 3指令(指令(单字节单字节指令操作码指令操作码CCH )用于在调试中设置断点,程序遇断点则中断)用于在调试中设置断点,程序遇断点则中断n溢出中断溢出中断(4号号)执行执行into指令,且前面运算有指令,且

4、前面运算有溢出溢出(OF=1)时产生)时产生n单步中断单步中断(1号号)TF标志置标志置1后,每执行一条子指令将后,每执行一条子指令将发生一次发生一次n外部中断外部中断外部引脚触发外部引脚触发n非屏蔽中断非屏蔽中断(外设提供向量号外设提供向量号)触发触发INTR引脚产生引脚产生n可屏蔽中断可屏蔽中断(2号号) 触发触发NMI引脚产生引脚产生61. 内部中断n内部中断是由于内部中断是由于8088内部执行程序出现特殊情况内部执行程序出现特殊情况而引起而引起的中断的中断n除法错中断:除法错中断:向量号为向量号为 0n指令中断(指令中断(int n):): 向量号为向量号为 nn断点中断(断点中断(i

5、nt 3 ):): 向量号为向量号为 3n溢出中断(溢出中断(into ) : 向量号为向量号为 4n单步中断:单步中断:向量号为向量号为 1内部中断的中断向量号已由内部中断的中断向量号已由Intel公司确定公司确定72. 外部中断n外部中断是由于外部中断是由于8088外部通过外部通过CPU引脚提出中断引脚提出中断请求而引起请求而引起的中断的中断n非屏蔽中断非屏蔽中断(NMI):): 向量号为向量号为 2n外部通过非屏蔽中断外部通过非屏蔽中断NMI请求,必须响应请求,必须响应n非屏蔽中断主要用于处理系统的意外或故障(如奇偶校验或非屏蔽中断主要用于处理系统的意外或故障(如奇偶校验或协处理器运算错

6、误等)协处理器运算错误等)n可屏蔽中断可屏蔽中断(INTR):向量号):向量号由中断控制器提供由中断控制器提供n外部通过可屏蔽中断外部通过可屏蔽中断 INTR 请求,由标志位请求,由标志位 IF 控制是否响应;控制是否响应;响应时将产生有效的响应时将产生有效的 INTA 信号信号n可屏蔽中断主要用于外设中断请求(请求交换数据等服务)可屏蔽中断主要用于外设中断请求(请求交换数据等服务)IF = 0 可屏蔽由可屏蔽由 INTR 引脚引发的引脚引发的中断中断8中断标志IF的状态nIF0:可屏蔽中断不会被响应(禁止中断,关中断,中:可屏蔽中断不会被响应(禁止中断,关中断,中断屏蔽)断屏蔽)n系统复位时

7、系统复位时 IF0n任何一个中断被响应,将使任何一个中断被响应,将使IF0n执行指令执行指令CLI,可使,可使IF0nIF1:可屏蔽中断会被响应(允许中断,开中断,中断:可屏蔽中断会被响应(允许中断,开中断,中断开放)开放)n执行指令执行指令STI,可使,可使IF1n执行指令执行指令IRET后,后,IF 将恢复为中断前的状态(即将恢复为中断前的状态(即IF=1)明确明确 IF 标志的状态是关键标志的状态是关键97.1.2 8088的中断响应过程nCPU查询各中断的先后顺序,查询各中断的先后顺序,决定决定了各中断源的优先级别:了各中断源的优先级别:n软件中断软件中断n除法错中断除法错中断n指令中

8、断指令中断n溢出中断溢出中断n非屏蔽中断非屏蔽中断n可屏蔽中断可屏蔽中断n单步中断单步中断高高低低108088的中断响应过程NMIN软件中断软件中断INTRTF=1中断响应周期中断响应周期读中断向量号读中断向量号下条指令下条指令现行指令现行指令IF1NNNNYYYYY执行中断服务执行中断服务118088的中断响应过程(续)Y还有还有NMITEMP1标志寄存器入栈标志寄存器入栈TEMPTF,IFTF0CS:IP入栈入栈获取中断向量获取中断向量执行服务程序执行服务程序弹出弹出CS:IP弹出标志寄存器弹出标志寄存器返回被中断程序返回被中断程序(1)(2)(3)(4)(5)NNY(6)单步中断单步中断

9、标志暂存标志暂存128088的中断响应过程(续)n8088各种中断源的各种中断源的优先权优先权,实际上,实际上是指是指被识别的先后顺序被识别的先后顺序n多种中断同时请求时,多种中断同时请求时,最先响应最先响应的的则可能是则可能是单步单步中断中断或或 NMI中断中断137.1.3 8088的中断向量表4B4B中断向量表1KB3FFH0H0号中断向量号中断向量IPCSn弄清几个概念:弄清几个概念:n中断向量号中断向量号N(中断类型号中断类型号)n中断向量(中断服务程序的入中断向量(中断服务程序的入口地址)口地址)n中断向量表中断向量表n中断向量存放的首址:中断向量存放的首址:N4以下详述以下详述1

10、48088的中断向量和中断向量表n中断向量号中断向量号区别不同中断源的编号区别不同中断源的编号0255 ,也,也称中断向量号。称中断向量号。n中断向量中断向量指示中断服务程序的指示中断服务程序的入口入口,该地址,该地址包括:包括:偏移地址偏移地址IP 、段地址、段地址CS 。每个中断向量的。每个中断向量的低字是偏移地址、高字是段地址,需占用低字是偏移地址、高字是段地址,需占用4个字节个字节(低对低,高对高)。(低对低,高对高)。n中断向量表中断向量表8088 微处理器从物理地址微处理器从物理地址000H开开始到始到3FFH(1KB),依次安排),依次安排256个中断向量。个中断向量。所占用的所

11、占用的1KB区域,称区域,称中断向量表。中断向量表。nN号中断向量存放的首地址号中断向量存放的首地址N4157.2 内部中断服务程序n编写编写内部中断内部中断服务程序与编写子程序类似服务程序与编写子程序类似n利用过程定义伪指令利用过程定义伪指令PROC/ENDPn第第1条指令通常为开中断指令条指令通常为开中断指令STIn最后用中断返回指令最后用中断返回指令IRETn通常采用通常采用寄存器传递参数寄存器传递参数n主程序需要调用中断服务程序主程序需要调用中断服务程序n使用前,需要使用前,需要重新设置重新设置中断向量中断向量(入口地址)(入口地址)n利用利用INT n指令调用中断服务程序指令调用中断

12、服务程序16例7.1 内部中断服务程序n编写:编写: 80H 号中断服务程序号中断服务程序n功能功能:通过通过BIOS功能调用功能调用INT 10H,显示以,显示以“0”结尾的字符串。结尾的字符串。n入口参数入口参数:DS:DX存字符串缓冲区首地址存字符串缓冲区首地址(段地址:偏移地址)。(段地址:偏移地址)。17数据段intoffdw ? ;用于保存原中断向量将来恢复用于保存原中断向量将来恢复intsegdw ? ;用于保存原中断向量将来恢复用于保存原中断向量将来恢复intmsgdb A Instruction Interrupt !db 0dh,0ah,0 ;要显示的信息要显示的信息例7.

13、1以下分段介绍程序18保存中断向量mov ax, 35 80h ;读出原中断向量读出原中断向量int 21hmov intoff, bx ;保存偏移地址保存偏移地址mov intseg, es;保存段基地址保存段基地址例7.119设置中断向量的做法push dsmov dx, offset new80hmov ax, seg new80hmov ds, axmov ax, 25 80h ;设置新中断向量设置新中断向量int 21hpop ds例7.120调用中断服务程序mov dx,offset intmsgint 80h ;中断调用中断调用例7.1注意比较指令:注意比较指令:int / ca

14、ll21主程序结束mov dx,intoffmov ax,intsegmov ds,axmov ax,25 80h ;恢复原中断向量恢复原中断向量 int 21hmov ax,4c00h ;返回返回DOSint 21h例7.122new80h proc sti ;开中断,允许中断嵌套开中断,允许中断嵌套 push ax ;保护现场保护现场 push bx push si例7.1中断服务子程序23显示字符串mov si, dxnew1:mov al, si;取显示字符取显示字符cmp al, 0 ;判是否串尾判是否串尾jz new2mov bx, 0 ;调调BIOS中断中断mov ah, 0eh

15、 ;子功能号子功能号int 10hinc sijmp new1例7.124退出中断服务程序new2: pop si;恢复现场恢复现场 pop bx pop ax iret;中断返回中断返回new80h endp例7.125用int 21h子功能访问中断向量nAH=25 设置中断向量设置中断向量n入口参数:入口参数:ds:dx =中断向量,中断向量,al =中断向量号中断向量号nAH=35 读取中断向量读取中断向量n入口参数:入口参数:al =中断向量号中断向量号n出口参数:出口参数:bx:es =中断向量中断向量 设置中断向量:设置中断向量: mov dx,intoff mov ax,ints

16、eg mov ds,ax mov ax,25 80h int 21h 读取中断向量:读取中断向量: mov ax,35 80h int 21h mov intoff, bx mov intseg, es26直接访问中断向量(以int 80h为例)n设置中断向量:设置中断向量: push ds xor ax,ax mov ds,axlea bx, 80H*4mov word ptr ds:bx, intoff inc bxinc bx mov word ptr ds:bx, intseg pop dsn读取中断向量:读取中断向量: push ds xor ax,ax mov ds,ax lea

17、bx, 80H*4mov intoff , word ptr ds:bx inc bxinc bx mov intseg, word ptr ds:bx pop ds277.3 8259A中断控制器nIntel 8259A是可编程中断控制器(是可编程中断控制器(PIC)。)。n可配合可配合CPU(I8080/85、I8086/88/286/386等)管等)管理可屏蔽中断。理可屏蔽中断。n8259A的基本功能:的基本功能:n1片片8259A可以管理可以管理8级中断,经级联最多可扩展至级中断,经级联最多可扩展至64级级n每一级中断都可单独被屏蔽或允许每一级中断都可单独被屏蔽或允许n在中断响应周期,

18、可提供相应的调用指令(配合在中断响应周期,可提供相应的调用指令(配合I8080/85 )或中断向量号(配合)或中断向量号(配合I8086/88/286/386)n8259A设计有多种工作方式,通过初始化编程进行设置设计有多种工作方式,通过初始化编程进行设置287.3.1 8259A的内部结构和引脚D7D0-INTAINT中断请求寄存器中断请求寄存器中断屏蔽寄存器中断屏蔽寄存器数据数据总线总线缓冲器缓冲器IR0IR7读读/写写控制控制逻辑逻辑级联级联缓冲器缓冲器比较器比较器-RD-WRA0-CSCAS0CSA1CAS2-SP/-EN优先权判别电路优先权判别电路中断服务寄存器中断服务寄存器控制逻辑

19、控制逻辑291. 中断控制n中断请求寄存器中断请求寄存器IRRn记录中断请求(记录中断请求( IR0IR7 )nDi位为位为1表示相应引脚有中断请求;为表示相应引脚有中断请求;为0表示无请求表示无请求n中断服务寄存器中断服务寄存器ISRn记录中断服务(记录中断服务( IR0IR7 )nDi位为位为1表示相应中断正在服务中;为表示相应中断正在服务中;为0表示位在服务表示位在服务n中断屏蔽寄存器中断屏蔽寄存器IMRn记录中断屏蔽(记录中断屏蔽( IR0IR7 )nDi位为位为1表示相应中断被屏蔽(禁止);为表示相应中断被屏蔽(禁止);为0表示允许表示允许302. 与处理器接口 -CS A0 -RD

20、 -WR功能功能 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 1 写入写入ICW1、OCW2和和OCW3写入写入ICW2ICW4和和OCW1读出读出IRR、ISR和查询字和查询字读出读出IMR数据总线高阻状态数据总线高阻状态数据总线高阻状态数据总线高阻状态31CAS0 IR0CAS1 IR1CAS2 IR2 IR3-INTA IR4 IR5INT IR6 IR7-SP/-EN CAS0-INTA CAS1 CAS2INT IR0 IR1-SP/-EN IR7CAS0 IR0CAS1 IR1CAS2 IR2 IR3-INTA IR4 IR5INT IR6 IR7-

21、SP/-EN-INTAINTR+5V8259级联工作示意图级联工作示意图3. 8259A的级连输出得到响应输出得到响应的从片编号的从片编号323. 中断级连n8259A可以可以级连级连,1个个主片主片最多可以级连最多可以级连8个个从片从片,级连时的连接方法:级连时的连接方法:n主片主片级连线级连线CAS0CAS2连至每个从片的连至每个从片的CAS0CAS2,输出被选中的从片编号输出被选中的从片编号,INT 线连至线连至CPU的中断请求输入端的中断请求输入端INTRn从片从片中断请求信号中断请求信号 INT连至主连至主8259A的一个中断请求输入的一个中断请求输入端端IRx;n主、从片的指定:主

22、、从片的指定:n在在非缓冲非缓冲方式下,通过引脚方式下,通过引脚-SP/-EN来来指定:接地指定该片指定:接地指定该片充当从片(充当从片(-SP0);反之则该片充当主片();反之则该片充当主片(-SP1)。)。n在在缓冲缓冲方式下,通过软件控制字来指定,引脚方式下,通过软件控制字来指定,引脚-SP/-EN另作另作它用(它用(缓冲器使能缓冲器使能)337.3.2 8259A的中断过程CAS0CAS2D0D7-SP/-ENIR0IR7CPU响应周期响应周期8259A工作波形工作波形INT第第1个总线周期个总线周期T1 T2 T3 T4ALECLK 第第2个总线周期个总线周期T1 T2 T3 T4第

23、第1个个-INTA前保持高电平前保持高电平 -INTA-LOCK中断向量中断向量主片输出主片输出级联信号级联信号从片接收从片接收347.3.3 8259A的工作方式普通全嵌套方式普通全嵌套方式特殊全嵌套方式特殊全嵌套方式自动循环方式自动循环方式特殊循环方式特殊循环方式优先权优先权固定固定方式方式优先权循环方式优先权循环方式 设置优先权方式设置优先权方式普通中断结束方式普通中断结束方式特殊中断结束方式特殊中断结束方式自动中断结束方式自动中断结束方式非自动非自动中断结束方式中断结束方式 结束中断方式结束中断方式 中断屏蔽方式中断屏蔽方式普通屏蔽方式普通屏蔽方式特殊屏蔽方式特殊屏蔽方式 中断触发方式

24、中断触发方式边沿触发方式边沿触发方式电平触发方式电平触发方式 数据缓冲方式数据缓冲方式缓冲方式缓冲方式非缓冲方式非缓冲方式 与与CPU配合方式配合方式与与8080/8085 CPU配合配合与与8086/8088 CPU配合配合 级连方式级连方式级连级连不级连不级连351、与CPU的配合方式n与与8080/8085 CPU配合配合 中断响应时,中断响应时,-INTA信号信号3次次有效有效,8259A送送CALL XXXXH指令指令(3B)的机器代码到)的机器代码到数据总线数据总线;n与与8086/8088 CPU配合配合中断响应时,中断响应时, -INTA信号信号2次次有效有效,8259A送相应

25、的送相应的中断向量号中断向量号(1B)到数据总线。)到数据总线。8080/85 CPU8259A8086/88CPU8259ACALL XXXXH(3B)中断向量号(中断向量号(1B)-INTAINTR-INTAINTR3个个2个个362、级连方式n不级连不级连只用只用1片,如片,如 PC/XTn级连级连可使用可使用29片,如片,如 PC/AT(2片)片)-INTAINTRIR0IR7IR7IR0CAS0CAS2=010INTINTD0D7373、 数据缓冲方式n非缓冲方式非缓冲方式n-SP/-EN引脚作为引脚作为输入端输入端n在在8259A级连时,用它选择该芯片充当主片或从片级连时,用它选择

26、该芯片充当主片或从片 n缓冲方式缓冲方式n对对8259A的数据线(输出中断向量)加的数据线(输出中断向量)加缓冲器缓冲器予以予以隔离和驱动隔离和驱动n-SP/-EN引脚作为引脚作为输出端输出端,输出允许信号,用以关,输出允许信号,用以关闭或开启缓冲器闭或开启缓冲器385、 中断触发方式n边沿触发方式边沿触发方式n中断请求输入端出现中断请求输入端出现上升沿上升沿为为有效的中断请求信号有效的中断请求信号n电平触发方式电平触发方式n中断请求端出现中断请求端出现高电平高电平为有效为有效的中断请求信号的中断请求信号394、设置优先权方式n普通全嵌套方式普通全嵌套方式n8259A的中断的中断优先权顺序固定

27、不变优先权顺序固定不变,从高到低依次为,从高到低依次为:IR0、IR1、IR2、IR7n中断请求后,中断请求后,8259A对对当前请求中断中优先权最高的中断当前请求中断中优先权最高的中断 IRi 予以予以响应响应,将其向量号送上数据总线,对应,将其向量号送上数据总线,对应ISR的的 Di位置位,至到中断结束(位置位,至到中断结束(ISR的的 Di 位复位)位复位)n在在ISR的的 Di 位置位期间,位置位期间,禁止再发生同级和低级优先权禁止再发生同级和低级优先权的中断的中断,但允许高级优先权中断的嵌套,但允许高级优先权中断的嵌套n特殊全嵌套方式特殊全嵌套方式允许同级中断嵌套(允许同级中断嵌套(

28、用于级连主片用于级连主片)n优先权自动循环方式优先权自动循环方式最高优先权自动转移到相邻的最高优先权自动转移到相邻的低优先级中断源低优先级中断源n优先权特殊循环方式优先权特殊循环方式最高优先权转移到由指令指定最高优先权转移到由指令指定的中断源的中断源40中断结束字n什么是什么是8259A的的中断结束字中断结束字(EOI)?)?n8259A判断中断服务寄存器判断中断服务寄存器ISR的状态:的状态:nISRi=1,表示该中断源正在得到服务;一般情,表示该中断源正在得到服务;一般情况下,将况下,将不再响应同级或低级的中断不再响应同级或低级的中断(但采用但采用特殊屏蔽方式时,可响应低级别的中断特殊屏蔽

29、方式时,可响应低级别的中断)nISRi=0,表示该中断服务已结束,表示该中断服务已结束,可响应同级可响应同级或低级别的中断或低级别的中断。n用指令向用指令向8259A送中断结束字,可以使送中断结束字,可以使ISR的某位的某位清清0n该操作与该操作与CPU无关。无关。415、结束中断处理方式普通中断结束方式普通中断结束方式中断结束时用户用指令送中断结束时用户用指令送结束字结束字,清清0ISR中当前优先级最高的中断服务标志中当前优先级最高的中断服务标志配合全嵌套优先权方式使用配合全嵌套优先权方式使用当当CPU用输出指令往用输出指令往8259A发出普通中断结束发出普通中断结束EOI命令命令时,时,8

30、259A就会对就会对ISR中当前优先级最高的中断服务标中当前优先级最高的中断服务标志进行清志进行清0特殊中断结束方式特殊中断结束方式中断结束时用户用指令送中断结束时用户用指令送特定的结束字,指明要清除特定的结束字,指明要清除ISR中的哪一位中的哪一位配合循环优先权方式使用配合循环优先权方式使用自动中断结束方式自动中断结束方式 中断响应后自动送结束字,中断响应后自动送结束字,清清0 ISR中当前优先级最高的中断服务标志。中当前优先级最高的中断服务标志。426、屏蔽中断源方式n普通屏蔽方式普通屏蔽方式nIMRi=1,对应的中断,对应的中断 IRi 将被屏蔽将被屏蔽,该中,该中断请求将不能从断请求将

31、不能从8259A送到送到CPUnIMRi=0,则允许,则允许对应的对应的中断产生中断产生n特殊屏蔽方式特殊屏蔽方式允许发生低级的中断允许发生低级的中断嵌套,用于级连时的主片。嵌套,用于级连时的主片。nIMRi=1,但,但ISRi=0,中断,中断IRi被屏蔽;但被屏蔽;但允许发生低级的中断。允许发生低级的中断。43带“特殊”字样的中断管理功能n特殊全嵌套特殊全嵌套允许允许同级同级中断发生,用于级连主中断发生,用于级连主片片n特殊屏蔽特殊屏蔽屏蔽屏蔽同级同级中断,但允许中断,但允许低级低级中断发中断发生生n特殊中断结束特殊中断结束指定要清除的中断服务标志的指定要清除的中断服务标志的编码(编码(xx

32、x)n特殊优先级循环特殊优先级循环指定当前拥有最高优先级的指定当前拥有最高优先级的引脚编码(引脚编码(xxx)447.3.4 8259A的编程n初始化编程初始化编程n8259A开始工作前开始工作前n用户必须用户必须对对8259A进行初始化编程。通过写入进行初始化编程。通过写入初始初始化命令字化命令字ICW对对8259A进行初始化进行初始化n中断操作编程中断操作编程n在在8259A工作期间工作期间n可以随时向可以随时向8259A写入写入操作命令字操作命令字OCW,使之按,使之按用户设置的新的工作方式进行工作用户设置的新的工作方式进行工作n用户还可以通过写用户还可以通过写操作命令字操作命令字OCW

33、通知通知8259A,下面的操作要读取下面的操作要读取8259A中的状态信息,以便了解中的状态信息,以便了解其工作情况其工作情况451. 初始化命令字ICWn8259A在开始工作前必须写入初始化命令字在开始工作前必须写入初始化命令字n初始化命令字初始化命令字ICW最多可以有最多可以有4个:个:ICW1ICW4n必须按照以上顺序必须按照以上顺序依次依次写入写入n其中其中 ICW1 和和 ICW2 是必须的是必须的nICW3和和ICW4是否需要,由具体的工作方式决定是否需要,由具体的工作方式决定ICW1ICW4 的写入流程的写入流程46ICW11LTIMSNGLIC4D7D6D5D4D3D2D1D0

34、表示可以任意表示可以任意为为1为为0都可以(建议为都可以(建议为0) 1只能为只能为1,作为标志,作为标志中断触发方式:中断触发方式:LTIM1,电平触发方式,电平触发方式LTIM0,边沿触发方式,边沿触发方式 规定单片或级连方式:规定单片或级连方式:SNGL1,单片方式,单片方式SNGL0,级连方式,级连方式是否写入是否写入ICW4IC41,要写入,要写入ICW4IC40,不写入,不写入ICW4,即,即ICW4规定的位全为规定的位全为047ICW2T7T6T5T4T3D7D6D5D4D3D2D1D0设置中断向量号设置中断向量号nT7T3为中断向量号的高为中断向量号的高5位位n低低3位由位由8

35、259A自动确定:自动确定:nIR0为为000、IR1为为001、IR7为为11148ICW3S7S6S5S4S3S2ID2S1ID1S0ID0D7D6D5D4D3D2D1D0级连命令字级连命令字n主片主片:Si1,说明其对应引脚,说明其对应引脚IRi 上连上连接有从片;否则引脚接有从片;否则引脚IRi上没有连接从片上没有连接从片n从片从片:ID0ID2 编码说明该从片的编码说明该从片的INT引脚接到了主片上的哪个引脚接到了主片上的哪个IRi引脚引脚针对从片针对从片针对主片针对主片49ICW4000SFNMBUFM/SAEOIPMD7D6D5D4D3D2D1D0嵌套方式:嵌套方式:特殊全嵌套方

36、式(特殊全嵌套方式(SFNM1)普通全嵌套方式(普通全嵌套方式(SFNM0)数据线的缓冲方式:数据线的缓冲方式:缓冲方式(缓冲方式(BUF1)非缓冲方式(非缓冲方式(BUF0) 缓冲方式下的主片缓冲方式下的主片/从片选择:从片选择:主片(主片(M/S=1)从片(从片(M/S=0)中断结束方式:中断结束方式:自动中断结束(自动中断结束(AEOI1)非自动中断结束(非自动中断结束(AEOI0)要配合的微处理器类型:要配合的微处理器类型:8086/8088( PM1) 16位位CPU8080/8085( PM0) 8位位CPU50初始化主片8259Amov al,11h;写入写入ICW1out 20

37、h,aljmp intr1intr1:mov al,08h;写入写入ICW2out 21h,aljmp intr2intr2:mov al,04h;写入写入ICW3out 21h,aljmp intr3intr3:mov al,1h;写入写入ICW4out 21h,al中断控制器的初始化程序段PC机上机上8259地址:地址:20h-21h51初始化从片8259Amov al,11h;写入写入ICW1out 0a0h,aljmp intr5intr5: mov al,70h;写入写入ICW2out 0a1h,aljmp intr6intr6: mov al,02h;写入写入ICW3out 0a1

38、h,aljmp intr7intr7: mov al, 01h;写入写入ICW4out 0a1h,al中断控制器的初始化程序段该体中该体中8259的两个地址:的两个地址:0a0h、0a1h522. 操作命令字OCWn8259A工作期间,可以随时接受操作命令字工作期间,可以随时接受操作命令字OCWnOCW共有共有3个:个:OCW1OCW3n写入时没有顺序要求,需要哪个写入时没有顺序要求,需要哪个OCW就写入就写入那个那个OCW53OCW1M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字屏蔽命令字n其内容将写入中断屏蔽寄存器其内容将写入中断屏蔽寄存器IMRnMi=1,则禁

39、止对应,则禁止对应IRi中断;中断;nMi=0,则允许对应,则允许对应IRi中断。中断。n各位互相独立。各位互相独立。54OCW2RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和和EOI配合使用配合使用产生中断结束产生中断结束EOI命令和改命令和改变优先权顺序变优先权顺序L2L0的的3位编码位编码指定指定IR引脚引脚 55OCW30ESMMSMM01PRRRISD7D6D5D4D3D2D1D0ESMM、SMM设置中断屏蔽方式设置中断屏蔽方式P、RR和和RIS规定随后读取的规定随后读取的状状态字态字含义含义563. 读取状态字nCPU可随时读出可随时读出IRR、ISR、IM

40、R和和查询字查询字nA0为低(偶地址)时为低(偶地址)时n由由OCW3中中RR和和RIS位编码决定读取的是位编码决定读取的是IRR或或ISR,n由由OCW3中中P位决定读取的是位决定读取的是查询字查询字,查询字可反查询字可反映映8259A是否有中断请求,及哪个引脚上有中断是否有中断请求,及哪个引脚上有中断请求请求nA0为高(奇地址)时,读取的是为高(奇地址)时,读取的是IMR57查询字IW2W1W0D7D6D5D4D3D2D1D0中断位中断位I位为位为1,有外设请求中断有外设请求中断W2W0的编码的编码当前中断请求的最当前中断请求的最高优先级高优先级584. 命令字和状态字的区别方法n利用利用

41、读写信号读写信号区别写入的控制寄存器和读出的区别写入的控制寄存器和读出的状态寄存器状态寄存器n利用利用地址信号地址信号区别不同区别不同I/O地址的寄存器地址的寄存器n由由控制字中的控制字中的标志位标志位说明是哪个寄存器说明是哪个寄存器n由芯片内由芯片内顺序控制逻辑顺序控制逻辑按一定顺序操作不同的按一定顺序操作不同的寄存器寄存器n由前面的控制字(由前面的控制字(引导字引导字)决定后续操作的寄)决定后续操作的寄存器存器这是接口电路中常用的方法这是接口电路中常用的方法597.4 8259A在IBM PC系列机上的应用CAS0CAS2 8259A定时器时钟中断定时器时钟中断键盘中断键盘中断保留保留异步

42、通信异步通信COM2中断中断异步通信异步通信COM1中断中断并行打印机并行打印机LPT2中断中断软盘中断软盘中断并行打印机并行打印机LPT1中断中断A0-INTR CS IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 A0 -CS-INTA-RD-WR对比对比829A在在IBM PC/AT机的应用机的应用829A在在IBM PC/XT机上的应用机上的应用+5VD0D7INT-SP/-ENPC/XT机的机的外中断管理外中断管理608259A在IBM PC/AT上的应用CAS02CAS02+5V主主8259A80286 CPUINTRD0D7-SP/-ENINTD0

43、D7日时钟日时钟键盘键盘串行口串行口2串行口串行口1并行口并行口2软盘软盘并行口并行口1A0-INTR1 CS IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 A0 -CS 从从8259AD0D7INT-SP/-EN实时钟实时钟改向改向0AH中断中断保留保留保留保留保留保留协处理器协处理器硬盘硬盘保留保留A0-INTR2 CS IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 A0 -CS系统总线系统总线B25B24B23B22B21系统总线系统总线B4D3D4D5D6D7-INTA-RD-WR-INTA-IOR-IOW

44、-INTA-RD-WR-S0 -S282288级联级联61PC机中8259A应用注意事项n利用利用上升沿上升沿做为中断请求做为中断请求IRQ的有效信号的有效信号nIRQ0IRQ7中断向量号依次为中断向量号依次为08H0FHnIRQ8IRQ15中断向量号依次为中断向量号依次为70H77H( PC/AT机)机)n采用普通全嵌套优先权方式,中断优先权从高到低顺序为采用普通全嵌套优先权方式,中断优先权从高到低顺序为IRQ0IRQ2、IRQ8IRQ15(级连从片级连从片)、IRQ3IRQ7,且不能改变,且不能改变n采用普通中断结束采用普通中断结束EOI方式,需在中断服务程序最后发送方式,需在中断服务程序

45、最后发送普通普通EOI命令命令n一般采用普通屏蔽方式,通过写一般采用普通屏蔽方式,通过写IMR相应位为相应位为0允许中断,允许中断,应注意不要破坏原屏蔽状态。应注意不要破坏原屏蔽状态。627.5 外部中断服务程序n编写编写外部可屏蔽中断服务程序外部可屏蔽中断服务程序,需注意:,需注意:n中断服务结束时应向中断服务结束时应向8259发送发送中断结束命令中断结束命令EOI(OCW2)n一般只能采用一般只能采用存储单元存储单元来来传递参数传递参数n不能使用不能使用DOS系统功能调用系统功能调用(DOS为单用为单用户单任务操作系统,不能重入)户单任务操作系统,不能重入)n中断服务程序要尽量中断服务程序

46、要尽量短小短小,以免影响系统的,以免影响系统的实时性实时性637.5 外部中断服务程序(续)n编写主程序,需注意:编写主程序,需注意:n修改中断向量修改中断向量n控制控制CPU的中断允许标志的中断允许标志n设置设置8259A的中断屏蔽寄存器的中断屏蔽寄存器64例题7.2 可屏蔽中断服务程序n在在PC机中:机中:n8259A的的IRQ0(其向量号为(其向量号为08H)中断请求来)中断请求来自定时器自定时器8253,每隔,每隔55ms产生一次定时中断产生一次定时中断n例中,例中, 修改后的修改后的 08H 号中断服务程序将显示号中断服务程序将显示一个字符串,一个字符串, 10次中断共显示次中断共显

47、示10个字符串个字符串n用内存单元(用内存单元(共享变量共享变量)在主程序与外部中断)在主程序与外部中断服务程序之间传递参数:服务程序之间传递参数:中断发生的次数中断发生的次数n显示信息安排在共同的数据段中显示信息安排在共同的数据段中65数据段intmsgdb A 8259A IR0 Interrupt !db 0dh,0ah,0counterdb 0例7.266保存中断向量mov ax,35 08hint 21hpush bx;保存偏移地址保存偏移地址push es;保存段基地址保存段基地址例7.267设置中断向量clipush ds ;保护保护dsmov dx,offset new08h

48、;中断入口地址中断入口地址mov ax,seg new08hmov ds,axmov ax,25 08hint 21hpop ds ;恢复恢复ds例7.268设置中断寄存器in al,21h ;读读IMRpush axand al,0feh ;允许允许IRQ0(接(接8253)out 21h,almov counter,0 ;设置中断次数初值设置中断次数初值sti ;开中断开中断例7.269循环等待中断start1:cmp counter,10jb start1;中断中断10次退出次退出例7.210次次8253定时器中断定时器中断就发生在该循环当中就发生在该循环当中70主程序结束clipop

49、axout 21h,alpop dxpop dsmov ax,25 08hint 21hstimov ax,4c00hint 21h例7.2A 8259A Interrupt !A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt !A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! 71new08hprocsti ;开中断开中断push ax ;

50、保护寄存器保护寄存器push bxpush dsmov ax,data ;data表示数据段地址表示数据段地址mov ds,ax ;设置数据段设置数据段DS例7.2进入中断服务程序72中断处理 inc counter mov si,offset intmsg;显示信息显示信息 call dpstri ; dpstri为为显示子程序显示子程序 ; 注意其中不能使用注意其中不能使用DOS调用调用例7.273退出中断服务程序mov al,20h ;送中断结束字送中断结束字out 20h,alpop ds ;恢复寄存器恢复寄存器pop bxpop axiret ;中断返回中断返回new08hendp例

51、7.274显示字符串子程序dpstriproc ;显示字符串子程序显示字符串子程序push axpush bxdps1:lodsb ;用用 si 指针取一字符到指针取一字符到 alcmp al,0;判是否结束标志判是否结束标志jz dps2例7.275显示字符串子程序(续)mov bx,0 ;显示显示1个字符个字符mov ah,0eh ; 0eh为子功能号为子功能号int 10h ;BIOS功能调用功能调用可重入可重入jmp dps1dps2:pop bxpop axretdpstriendp例7.2767.6 驻留中断服务程序n内存驻留内存驻留TSR (Terminate and Stay

52、Resident) 程序程序n应用程序运行后仍然应用程序运行后仍然保存保存在在主存主存中,可以被中,可以被其他程序调用其他程序调用n利用利用DOS功能调用功能调用 31H 代替代替 4CH 终止程序终止程序n小型驻留程序常编写成小型驻留程序常编写成 .COM程序,但驻留程程序,但驻留程序也可编成序也可编成 .EXE程序程序n需要驻留内存的程序段要书写在其他代码的需要驻留内存的程序段要书写在其他代码的前面前面77例题7.3 报时中断驻留服务程序n在在PC机中机中n系统系统 08H 号中断服务程序中又调用了号中断服务程序中又调用了 INT 1CH 指令指令中断,该中断原来未安排任何服务,是留给用户

53、的中断,该中断原来未安排任何服务,是留给用户的软软中断接口中断接口,以便每,以便每 55ms(tick) 能执行能执行1次用户的任务。次用户的任务。n每隔每隔 55ms(tick) 调用这个报时中断,中断调用这个报时中断,中断 65543 次就次就是时间过了是时间过了1小时小时n该例编写驻留内存的该例编写驻留内存的 INT 1CH 中断服务程序用于整点中断服务程序用于整点报时,程序功能是每过报时,程序功能是每过1小时显示小时显示1条信息条信息n执行此程序后,该报时中断服务程序将驻留内存执行此程序后,该报时中断服务程序将驻留内存 注意:因注意:因 65543=65536+7,假定用,假定用2个字

54、来记个字来记录中断发生的次数,则每经过录中断发生的次数,则每经过1小时有:小时有: 高字高字=高字高字+1 低字低字=低字低字+7 低字能被低字能被7整除时表示时间为整点整除时表示时间为整点78new1chproc ;该中断程序将驻留内存该中断程序将驻留内存sti ;开中断开中断push si ;保护寄存器保护寄存器push dsmov si,cs ;com程序程序数据和代码共段数据和代码共段mov ds,si ;设置数据段设置数据段DSadd countl,1 ;处理记录处理记录tick的低字的低字adc counth,0 ;处理记录处理记录tick的高字的高字例7.3进入中断服务程序79中断处理cmp countl,7 ;判低字为判低字为7否否jnz

温馨提示

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

评论

0/150

提交评论