版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章中断接口技术
2.18086的中断系统
2.1.1中断与中断系统功能1.中断的概念中断是一个过程,是CPU在正常执行程序的过程中,遇到外部或内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为紧急事件服务,当为这个紧急事件服务处理完毕之后,再返回到暂停点(中断点)继续执行原来的程序,由于CPU正在执行的原程序被暂停执行,所以称为中断.2.中断系统的功能(1)中断处理与返回(2)中断优先权判断(3)中断嵌套2.1.2中断分类硬件中断和软件中断1.硬件中断硬件中断是指通过外部硬件产生的中断,如打印机、键盘等,有时也称为外部中断。硬件中断又可分为两类:可屏蔽中断和不可屏蔽中断。2.软件中断(内部中断)(1)除法出错中断(2)INT0溢出中断(3)INTn指令(4)断点中断(5)单步中断2.1.3中断向量和中断向量表本章首页00H~04H――系统专用10H~1FH――BIOS用40H~FFH――用户用08H~0FH――硬件中断20H~3FH――DOS用2.1.4中断响应过程与时序1.硬件中断的响应过程2.硬件中断的时序3.软件中断软件中断是指通过中断指令来使CPU执行中断处理子程序的方法(1)中断类型码由指令提供,不需执行中断响应总线周期,也不受IF标志的影响。(2)正在执行软件中断时,若有通过NMI发出的中断请求,则立即响应;若发生可屏蔽中断请求,只要条件允许(如IF=1,当前指令执行完)即可响应中断。3.软件中断(3)软件中断,由于其处理程序的入口是通过中断向量表来定位,所以可以方便地用INTn指令进行调用,因此在使用中和一般的子程序没有两样,并且原则上0~255种软件中断类型均可使用。2.1.5中断程序设计举例/*例2-1.c*/#include<stdio.h> //支持标准输入输出,如printf()。#include<conio.h> //控制台输入输出#include<dos.h> //支持接口访问、中断向量操作函数voidinterrupt(*sys_vect09)();//申明一个函数为中断函数,该中断函数的中断号为sys_vect09unsignedintkey; //定义全局变量key(无符号整型),记录60H端口的值unsignedintflag; //定义标志flag,用来判断是否进行过新的中断voidinterruptmy_vect09() //自定义的中断函数{key=inportb(0x60); //从60H端口读取一个字节的数据送变量keyflag=1; //标志flag置1,说明变量key从端口读取一个新值
(*sys_vect09)(); //执行原来系统中的中断函数}voidmain(){
flag=0; //初始化标志flag,表示还没有发生新的中断sys_vect09=getvect(0x09);//读取系统9号调用的中断向量地址存入sys_vect09setvect(0x09,my_vect09); //设置系统新的9号调用入口地址是my_vect09while(1){if(flag){printf("%02x",key); //输出中断中从60H端口读取的值到屏幕
flag=0; //标志清0,准备接收新的key值
if(key==0x0010)break; //当输入的值是0AH时,退出while循环
if((key&0x0080)==0x0080)printf("\n");//当字节变量key的最高位是1时,屏幕上输出换行符
}}
setvect(0x09,sys_vect09);//恢复系统9H中断的中断入口地址}2.相关函数说明(1)inportb:inportb函数的原型是:intinportb(intport)。该函数是从指定的输入端口port读入一个字节,并返回这个字节。2.相关函数说明(2)getvect与setvectgetvect函数是用来获取中断处理程序的入口地址的;setvect函数则用来设置某个中断处理程序的入口地址。(3)interrupt定义一个中断类型函数voidinterrupt(*sys_vect09)();在用setvect改写中断09h时就是setvect(0x09,my_vect09);在改写之前应该先保存原来中断09h的中断向量地址,这就用到了getvect,sys_vect09=getvect(0x09);其中sys_vect09是个声明为“voidinterrupt(*sys_vect09)();”型的指针2.2可编程中断控制器Intel8259AIntel8259A的主要性能包括:具有8级中断优先控制,通过级连可以扩展至64级优先权控制;每一级中断都可以通过初始设置为允许或屏蔽状态;8259A的工作方式可以通过编程进行设置;8259A采用NMOS制造工艺,只需要单一的+5V电源。2.2.18259A的内部结构和工作原理8259A的内部结构主要有数据总线缓冲器、读/写控制逻辑、级连缓冲器、中断控制逻辑电路、中断请求寄存器、优先级比较器1.数据总线缓冲器数据总线缓冲器是8259A与系统数据总线的接口,是8位双向三态缓冲器。数据线D7~D0与CPU系统总线相连,构成CPU与8259A之间的信息传送的通道。2.读/写控制逻辑用于接收CPU的读/写命令一方面把来自CPU的初始化命令字ICW和操作命令字OCW存入8259A内部相应的端口寄存器,用以规定8259A的工作方式和控制模式;另一方面也可使CPU通过读/写电路读8259A内部有关端口寄存器的状态信息。3.级连缓冲器8259A既可以工作于单片方式,也可以工作于多片级联方式。当用于实现8259A芯片之间的级连时,可把中断源由8级扩展至64级;在多片级连时,只有一个为主片,其余为从片。4.中断控制逻辑电路5.中断请求寄存器IRR6.中断屏蔽寄存器IMR7.中断服务寄存器ISR8.优先级比较器PR2.2.28259A的外部引脚2.2.38259A的工作过程当完成初始化后,8259A对外部中断请求的响应和处理过程如下:(1)当有一条或若干条中断请求输入(IR7~IR0)有效时,则使中断请求寄存器的IRR的相应位设置为1。(2)若CPU处于开中断状态,则在当前指令执行完之后,响应中断,并且从INTA发应答信号(两个连续的INTA负脉冲)。2.2.38259A的工作过程(3).第一个INTA负脉冲到达时,IRR的锁存功能失效,对于IR7~IR0上发来的中断请求信号不予理睬。(4)使ISR寄存器的相应位置1,以便为中断优先级比较器的工作做好准备。(5)使寄存器的相应位复位,即清除中断请求。(6)第二个INTA负脉冲到达时,将中断类型寄存器中的内容ICW2,送到数据总线的D7-D0上,CPU以此作为相应中断的类型码。(7)若ICW4中的中断结束位为1,那么,第二个INTA负脉冲结束时,8259A将ISR寄存器的相应位清零;否则,直至中断服务程序执行完毕,才能通过输出操作命令字EOI,使该位复位。2.2.48259A的工作方式1.中断优先权管理方式(1)全嵌套方式(2)特殊全嵌套方式(3)优先级自动循环方式(4)优先级特殊循环方式2.中断源的屏蔽方式CPU对于8259A提出的中断请求,都可以加以屏蔽控制,屏蔽控制有普通屏蔽方式和特殊屏蔽方式两种。3.结束中断处理的方式(1)中断自动结束方式(2)一般的中断结束方式(3)特殊的中断结束方式启动外设主程序外设准备好输入设备Ready=1输出设备Busy=0中断请求中断响应数据IN/OUT中断服务程序IRET中断响应外设又一次准备好中断请求优点:CPU效率高,实时性好,速度快。缺点:程序编制较为复杂。2.2.38259A的工作过程(1)当有一条或若干条中断请求输入(IR7~IR0)有效时,则使中断请求寄存器的IRR的相应位设置为1。(2)若CPU处于开中断状态,则在当前指令执行完之后,响应中断,并且从INTA发应答信号(两个连续的INTA负脉冲)。(3)第一个INTA负脉冲到达时,IRR的锁存功能失效,对于IR7~IR0上发来的中断请求信号不予理睬。(4)使ISR寄存器的相应位置1,以便为中断优先级比较器的工作做好准备。(5)使寄存器的相应位复位,即清除中断请求。(6)第二个INTA负脉冲到达时,将中断类型寄存器中的内容ICW2,送到数据总线的D7-D0上,CPU以此作为相应中断的类型码。(7)若ICW4中的中断结束位为1,那么,第二个INTA负脉冲结束时,8259A将ISR寄存器的相应位清零;否则,直至中断服务程序执行完毕,才能通过输出操作命令字EOI,使该位复位。中断优先权管理中断嵌套中断屏蔽中断结束2.2.48259A的工作方式1.中断优先权管理方式8259A中断优先权的管理方式有:全嵌套方式特殊全嵌套方式优先级自动循环方式优先级特殊循环方式。2.中断源的屏蔽方式CPU对于8259A提出的中断请求,都可以加以屏蔽控制,屏蔽控制有:普通屏蔽方式特殊屏蔽方式3.结束中断处理的方式是自动结束方式(AEI)和非自动结束方式。非自动结束方式又可进一步分为一般的中断结束方式和特殊的中断结束方式。向CPU发出总线请求信号HOLD,接收CPU发出总线响应信号HLDA接管对总线的控制,进入DMA方式发出地址信息,对存储器寻址并修改地址指针发出DMA结束信号,释放总线,使CPU恢复正常工作4.系统总线的连接方式(1)缓冲方式(2)非缓冲方式5.引入中断请求的方式(1)边沿触发方式(2)电平触发方式(3)中断查询方式本章首页可编程中断控制器8259A(续)8259A的外部特性和内部结构1)引脚(28脚)D0~7、CS、RD、WRA0:端口选择信号;输入INT
:8259A的中断申请;输出;高有效;向CPU发出中断申请INTA:中断响应;输入;接收CPU的中断响应信号,第2个负脉冲中送出类型号面向CPU的信号(14)面向外设的信号(8)IR0~7:外设的中断申请;输入;触发方式由编程设定面向同类芯片的信号(4)CAS0~3:级联信号;双向;主片向从片发送级联代码SP/EN:主从定义/缓冲器方向;双功能;缓冲方式:输出,控制缓冲器传送方向,非缓冲方式:输入,定义主从片,1:主片,0:从片读/写逻辑数据总线缓冲器D0~D7A0IORIOW级联/缓冲比较器CS优先级分析器PRCAS0CAS2CAS1SP/EN正在服务寄存器ISR中断请求寄存器ISR控制逻辑中断屏蔽寄存器IMR…IR0IR1IR7INTAINT2)内部结构本章首页可编程中断控制器8259A(续)中断请求寄存器(IRR):8位,寄存有请求的中断级,IRi有请求,IRRi=1中断服务寄存器(ISR):8位,寄存正在服务的中断级,IRi被响应且未服务完,ISRi=1,ISR可能多位同时为1中断屏蔽寄存器(IMR):8位,寄存中断级的屏蔽情况,IMRi=1,IRi被屏蔽优先级分析器(PR):由IRR、IMR、ISR的状态确定INT引脚的输出;优先级编码器+比较电路何时中断嵌套INTA>B比较器中断屏蔽寄存器IMRIR0IR1IR2IR3IR4IR5IR6IR7中断请求寄存器IRR中断请求优先级编码器1B0B1B2A0A1A2ISR编码器&D1D0D7D5D4D2D3D6工作原理本章首页可编程中断控制器8259A(续)级联缓冲器/比较器:级联时传送级联代码;缓冲方式控制传送方向读写控制逻辑:中断类型号的读取不是读写逻辑控制的INTAFFDEH0A1H21H读IMR1010FFDCH0A0H20H读IRR,ISR,查询字0010FFDEH0A1H21H写ICW2~4,OCW11100FFECH0A0H20H写ICW1,OCW2~30100TP86A从片主片读写操作A0RDWRCS8259A的工作方式1)中断触发方式2)连接系统总线的方式3)中断屏蔽的方式4)优先级排队的方式5)中断结束的方式
电平触发:高电平边沿触发:上升沿
向量中断查询中断
缓冲方式非缓冲方式SP/EN的作用
常规屏蔽:设置IMR
特殊屏蔽:开放低级中断
固定:IR0最高,IR7最低轮换
自动轮换指定轮换用于非嵌套系统
自动结束方式:第2个INTA后沿自动清除ISRi
非自动结束方式:由程序发EOI命令清除ISRi
不指定EOI
指定EOIEOI命令
固定:IR0最高,IR7最低轮换
自动轮换指定轮换
自动结束方式:第2个INTA后沿自动清除ISRi
非自动结束方式:由程序发EOI命令清除ISRi
不指定EOI
指定EOIEOI命令本章首页可编程中断控制器8259A(续)8259A的编程命令及中断操作功能1)ICW14个初始化命令字(ICW1~4)、3个操作命令字(OCW1~3);写入到2个端口中同一端口写入多个命令字的区分方式:设置特征位、规定写入顺序×××1LTIM×SNGLIC4特征位×:16位机无效,一般写0LTIM:触发方式,=0,边沿触发;=1,电平触发SNGL:=0,多片级联;=1,单片系统IC4:=0,不写入ICW4;=1,要写入ICW4,16位机要写入ICW1还实现对8259A的复位如PC机:边沿触发,单片MOVAL,13HOUT20H,AL2)ICW2T7T6T5T4T3×××A00A01如PC机:类型号08H~0FHMOVAL,08HOUT21H,AL确定中断类型号的高五位
高五位:ICW2的高五位低三位:IRi的编码
中断类型号(8位)本章首页可编程中断控制器8259A(续)3)ICW3(级联系统才写入,主、从片格式不同)S7S6S5S4S3S2S1S0如图中所示的级联系统主片的ICW3=24H;00100100从片1的ICW3=02H;00000010从片2的ICW3=05H;00000101A01ID2ID1ID0的编码=i,该从片挂在主片的IRi上主片:相应的申请端是否挂接从片
0:IRi上无从片
1:IRi上接有从片Si从片:该从片的识别码×××××ID2ID1ID0A01级联方式的硬件连接级联方式下工作过程IR0从片1从片28259A(主片)INTINTCAS0~2CAS0~2SP/ENSP/ENIR2IR5CAS0~2AIR6SP/EN+5VINTAINTAINTINTAINTRINTA…IR1IR7IR4…CIR0…IR1IR7…BD只有A有申请(与单片系统相同)从片1:IRR=00H从片2:IRR=00H主片:IRR6=1,INT=1收到INTA,主片ISR6=1,送IR6的类型号CPU的操作与单片无任何区别本章首页可编程中断控制器8259A(续)4)ICW4A、B、C同时申请从片1:IRR7=1从片2:IRR4=1主片:IRR6、IRR2、IRR5同时为1,INT=1(转发IR2的请求)第1个INTA主片ISR2=1并送IR2的级联代码从片2与自己的识别码比较不同,无操作从片1:相同,ISR7=1
第2个INTA
从片1送出IR7的类型号,主片不送A01BUFM/SAEOI×××SFNMµPM
0:8位机系统
1:16位机系统µPM
0:非自动结束方式
1:自动结束方式AEOI
0:从片
1:主片M/S
BUF=1有效
0:非缓冲方式
1:缓冲方式BUF
0:一般完全嵌套
1:特定完全嵌套SFNM特定完全嵌套方式(用于级联系统的主片)送两个EOI命令开放同级和高级中断,上例中,主片若采用特定完全嵌套方式,则允许D打断B的服务从片服务程序中送EOI的方法给主片送EOI的条件:从片ISR=00H5)OCW1(设置IMR)M7M6M5M4M3M2M1M0
0:开放IRi1:屏蔽IRiMiA01如开放IR1、IR77;屏蔽IR3、IR76;其他不变INAL,21HANDAL,7DHORAL,48HOUT21H,AL;读取IMR本章首页可编程中断控制器8259A(续)6)OCW2(设置优先级轮换、发EOI命令)RSLEOI00L2L1L0A00
优先级固定轮换自动轮换指定轮换
结束方式自动非自动,用EOI命令清ISRiEOI命令不指定:清除ISR中优先级最高位指定:清除ISR中的指定位特征位
0:优先级不轮换
1:优先级轮换R
0:不对ISR操作
1:清除ISRiEOISL=1,L2L1L0的编码有效,与R、EOI配合R=1:L2L1L0指定的中断级为最低优先级EOI=1:将ISR中L2L1L0指定的位清0R、SL、EOI的组合就是OCW2的命令RSLEOI功能000自动EOI中轮换复位001不指定EOI命令010无效011指定EOI命令100自动EOI中轮换置位101不指定EOI中的轮换110直接设置优先级111指定EOI中的轮换如:不指定EOIMOVAL,20HOUT20H,AL指定EOI(清除ISR4)MOVAL,64HOUT20H,AL本章首页可编程中断控制器8259A(续)7)OCW3(设置特定屏蔽方式、查询式中断、读寄存器选择)×ESMMSMM01PRRRISA00ESMM=1,特定屏蔽方式允许
ESMM=1时有效0:清除特定屏蔽方式SMM1:设置特定屏蔽方式P=1,查询式中断RR=1,读寄存器选择有效
RR=1时有效0:IRRRIS:读寄存器选择1:ISR特征位特定屏蔽方式(开放低级中断)设置方法:用OCW1屏蔽当前中断用OCW3设置特定屏蔽方式清除方法:用OCW3清除特定屏蔽方式用OCW1开放当前中断设置后一直有效,直到清除…CLIINAL,21HORAL,08HOUT21H,ALMOVAL,68HOUT20H,ALSTI…CLIMOVAL,48HOUT20H,ALINAL,21HANDAL,0F7HOUT21H,ALSTI…MOVAL,20HOUT20H,ALRET;IMR3=1如在IR3服务程序中使用;特定屏蔽设置;特定屏蔽清除;IMR3=0;EOI命令IR0~2开放IR3~7关闭IR0~2、IR4~7开放IR3关闭比IR3优先级低的中断的服务程序必须送指定EOINOTEWhy?本章首页可编程中断控制器8259A(续)查询式中断读寄存器不需要接收中断请求,CPU查询8259A,发查询命令(P=1的OCW3)后读查询字(A0=0),再根据查询字内容确定中断源I----W2W1W0查询字格式I=1时,W2W1W0是当前有请求的优先级最高的中断级编码0:无中断请求I1:有中断请求读查询字MOVAL,0CHOUT20H,ALINAL,20H;查询命令;读查询字每次读查询字需重新送查询命令查询命令令读寄存器无效读IMR:直接对A0=1端口进行读读IRR、ISR:先选择(RR=1的OCW3)再读选择后一直有效,直到改变初始为IRR读IMRINAL,21H读IRRMOVAL,0AHOUT20H,ALINAL,20H读ISRMOVAL,0BHOUT20H,ALINAL,20H查询方式的应用:无中断向量表无INTR或INTA信号级联增加到第3层查询方式不用送ICW2?2.2.78259A的应用举例例1CPU与8259A连接如图所示。向8259A的中断屏蔽寄存器IMR写入控制命令,使系统时钟、键盘、硬盘、软盘开放中断,并使其它中断关闭:例2IBM-PC机中,只有一片8259A,可接受外部8级中断。在I/O地址中,分配8259A的端口地址为20H和21H,初始化为:边沿触发、缓冲连接、中断结束采用EOI命令、中断优先级采用完全嵌套方式,8级中断源的中断类型分别为08H~0FH,初始化程序使用汇
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行从业资格考试银行风险管理实务模拟试卷及答案
- 2026年注册环保工程师考试环境影响评价相关法律法规专项训练习题及答案
- 2026年电子商务师职业资格考试电子商务发展趋势与政策法规专项训练习题集及答案
- 公共卫生管理类资格考试慢性非传染性疾病专项习题及答案
- 无人机驾驶员执照考试无人机飞行安全教育与培训专项训练习题及答案
- 2026年无人机驾驶员执照考试历年真题汇编与解析及答案
- 卫生信息管理考试模拟试题及答案
- 2026年考研法学804民法学专项训练题库及答案
- 2026年大学英语四级考试听力理解专项练习题及答案
- 2026年金融风险管理师考试金融市场与金融工具专项题库及答案
- ESG可持续发展治理体系
- 2.2.1+烯烃+说课课件-2025-2026学年高二下学期化学人教版必修3
- 绿化工程隐患排查清单
- 建筑工程材料进场检验制度
- 肾小球肾炎患者饮食管理方案
- 食品安全监督抽检和风险监测工作规范培训
- 云南省住宅小区供配电设施技术标准
- 施工现场清洁安全培训课件
- 供应商报名表
- 2025-2026学年统编版三年级语文上册第三单元素养达标卷(含答案)
- 室内装修工人培训
评论
0/150
提交评论