您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 微机接口8259中断控制实验
1山西大学计算机与信息技术学院实验报告姓名学号专业班级2012级计算机科学与技术课程名称微型计算机系统原理及应用指导教师实验日期2014.12.05成绩实验名称8259中断控制实验一、实验目的:1.掌握8259中断控制器的工作原理。2.掌握系统总线上PCI_INTR中断请求的应用编程方法。二、实验设备PC机一台、TD-PIT++实验装置一套三、实验内容1、单中断实验。利用系统总线上中断请求信号INTR,设计一个单中断应用。使用单次脉冲模拟中断产生。编写中断处理程序,在显示器屏幕上显示一个字符。2、扩展中断源查询方式应用实验。利用实验平台上8259控制器对系统总线上的中断线INTR进行扩展。编写程序对8259控制器的IR0和IRI中断请求进行处理。四、实验原理:(1)PC微机系统中的8259介绍中断控制器8259是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259的级连,能构成多达64级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。8259A的命令字共有7个,可分为两类。一类是初始化命令字,另一类是操作命令字。8259的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。ICW1-ICW4各命令字格式如表2-1所示,2OCW1-OCW3各命令字格式如表2-2所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和结束方式的操作命令字,OCW3用于设置和撤消特殊屏蔽方式,设置中断查询方式以及设置对8259A内部寄存器的读出命令。表2-18259A初始化命令字表2-28259A操作命令字D7D6D5D4D3D2D1D0OCW1Di=0:开放IRi中断请求Di=1:禁止IRi中断请求OCW2优先级循环控制位L2~L0有效控制位中断结束命令位00中断级编码OCW3X0X:无意义10:撤销特殊屏蔽11:设置特殊屏蔽01中断查询控制位0X:无意义10:读IRR寄存器11:读ISR寄存器(2)PC微机系统中的8259A在80x86系列PC微机系统中,系统中包含了两片8259中断控制器,通过级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表2-3所示。两片8259的端口地址为:主片8259使用020H和021H两个端口;从片使用0A0H和0AlH两个端口。系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为:0级最高,依次为1级、8级~15级,然后是3级~7级。D7D6D5D4D3D2D1D0ICW1XXX11:电平触发0:边沿触发X1:单片82590:多片82591:需要ICW40:不需要ICW4ICW2中断向量的高5位XXXICW3(主)分别对应8个IRQ,Di=1,IRQi上有级连芯片,=0,无级连芯片ICW3(从)00000指明从片连接在主片的哪个IRQ上ICW40001:特殊全嵌套0:非特殊全嵌套1:缓冲0:非缓冲1:主片0:从片1:自动EOI0:非自动EOI1:8086系统0:8080系统3在实验平台上系统总线单元的INTR信号对应的中断线就是PC机保留中断其中的一个。对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。表2-3PC微机系统中的硬件中断中断号功能中断向量号中断向量地址主8259IRQ0时钟/计数器008H0020H~0023H主8259IRQ1键盘09H0024H~0027H主8259IRQ2接从片82590AH0028H~002BH主8259IRQ3串行口20BH002CH~002FH主8259IRQ4串行口10CH0030H~0033H主8259IRQ5并行口20DH0034H~0037H主8259IRQ6软盘0EH0038H~003BH主8259IRQ7并行口10FH003CH~003FH从8259IRQ8实时钟70H01C0H~01C3H从8259IRQ9保留71H01C4H~01C7H从8259IRQ10保留72H01C8H~01CBH从8259IRQ11保留73H01CCH~01CFH从8259IRQ12保留74H01D0H~01D3H从8259IRQ13协处理器中断75H01D4H~01D7H从8259IRQ14硬盘控制器76H01D8H~01DBH从8259IRQ15保留77H01DCH~01DFH五、实验说明及步骤1、单中断应用实验实验平台上系统总线单元的INTR中断请求信号已经是对应到PC机内部的某一级中断。INTR产生一个上升沿的中断请求,PC机内部相应的那级中断就会得到响应。所以,使用INTR中断请求信号,就相当在使用PC机内部相应的那一级中断。本实验要求使用总线上INTR中断请求线完成一次单中断应用实验。用单次脉冲上升沿模拟中断源,中断处理程序完成在屏幕上的显示字符“9”。图2-18259单中断实验参考接线图(1)实验步骤如下:①实验接线图如图2-1所示,按图接线。4②运行Tdpit集成操作软件,编写程序,编译、链接。③使用运行命令运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“9”,说明响应了中断。实验代码如下:INTR_IVADDEQU01C8H;INTR对应的中断矢量地址INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址INTR_OCW2EQU0A0H;INTR对应PC机内部8259的OCW2地址INTR_IMEQU0FBH;INTR对应的中断屏蔽字STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATASEGMENTMESDB'Pressanykeytoexit!',0AH,0DH,0AH,0DH,'$'CS_BAKDW?;保存INTR原中断处理程序入口段地址的变量IP_BAKDW?;保存INTR原中断处理程序入口偏移地址的变量IM_BAKDB?;保存INTR原中断屏蔽字的变量DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETMES;显示退出提示MOVAH,09HINT21HCLIMOVAX,0000H;替换INTR的中断矢量MOVES,AXMOVDI,INTR_IVADDMOVAX,ES:[DI]MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址MOVAX,OFFSETMYISRMOVES:[DI],AX;设置当前中断处理程序入口偏移地址ADDDI,2MOVAX,ES:[DI]MOVCS_BAK,AX;保存INTR原中断处理程序入口段地址MOVAX,SEGMYISRMOVES:[DI],AX;设置当前中断处理程序入口段地址MOVDX,INTR_OCW1;设置中断屏蔽寄存器,打开INTR屏蔽位INAL,DXMOVIM_BAK,AL;保存INTR原中断屏蔽字ANDAL,INTR_IM5OUTDX,ALSTIWAIT1:MOVAH,1;判断是否有按键按下INT16HJZWAIT1;无按键则跳回继续等待,有则退出QUIT:CLIMOVAX,0000H;恢复INTR原中断矢量MOVES,AXMOVDI,INTR_IVADDMOVAX,IP_BAK;恢复INTR原中断处理程序入口偏移地址MOVES:[DI],AXADDDI,2MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址MOVES:[DI],AXMOVDX,INTR_OCW1;恢复INTR原中断屏蔽寄存器的屏蔽字MOVAL,IM_BAKOUTDX,ALSTIMOVAX,4C00H;返回到DOSINT21HMYISRPROCNEAR;中断处理程序MYISRPUSHAXMOVAL,39HMOVAH,0EHINT10HMOVAL,20HINT10HOVER:MOVDX,INTR_OCW2;向PC机内部8259发送中断结束命令MOVAL,20HOUTDX,ALmoval,20hout20h,alPOPAXIRETMYISRENDPCODEENDSENDSTART(2)实验结果如下:62、扩展中断应用实验利用实验单元中的8259控制器,可以对总线上的INTR进行中断源的扩充。将8259的INT连接到INTR,8259的8路中断请求线IR0~IR7就成了单一INTR中断请求线的扩充。这8路中断源共用INTR的中断矢量,共用INTR的中断服务程序。在INTR的中断服务程序中通过对8259的OCW3的查询,以确定是IR0~IR7中哪个产生中断,然后转到相应的服务线程进行处理。本实验要求实现8259控制器IR0、IR1两路中断都可以通过INTR向PC发起中断请求。用KK1+和KK2+模拟两个中断源,在IR0对应的服务程序中显示字符“0”,在IR1对应的服务程序中显示字符“1”。图2-38259扩充中断源实验参考接线图(1)实验步骤如下:①实验接线图如图2-3所示,按图接线。②运行Tdpit集成操作软件,编写程序,编译、链接。③使用运行命令运行程序,按动KK1+、KK2+按键,观察中断是否产生。7实验代码如下:INTR_IVADDEQU01C8H;INTR对应的中断矢量地址INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址INTR_OCW2EQU0A0H;INTR对应PC机内部8259的OCW2地址INTR_IMEQU0FBH;INTR对应的中断屏蔽字IOY0EQU3000H;片选IOY0对应的端口始地址MY8259_ICW1EQUIOY0+00H;实验系统中8259的ICW1端口地址MY8259_ICW2EQUIOY0+04H;实验系统中8259的ICW2端口地址MY8259_ICW3EQUIOY0+04H;实验系统中8259的ICW3端口地址MY8259_ICW4EQUIOY0+04H;实验系统中8259的ICW4端口地址MY8259_OCW1EQUIOY0+04H;实验系统中8259的OCW1端口地址MY8259_OCW2EQUIOY0+00H;实验系统中8259的OCW2端口地址MY8259_OCW3EQUIOY0+00H;实验系统中8259的OCW3端口地址STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATASEGMENTMESDB'Pressanykeytoexit!',0AH,0DH,0AH,0DH,'$'CS_BAKDW?;保存INTR原中断处理程序入口段地址的变量IP_BAKDW?;保存INTR原中断处理程序入口偏移地址的变量IM_BAKDB?;保存INTR原中断屏蔽字的变量DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETMES;显示退出提示MOVAH,09HINT21HCLIMOVAX,0000H;替换INTR的中断矢量MOVES,AXMOVDI,INTR_IVADDMOVAX,ES:[DI]MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址MOVAX,OFFSETMYISRMOVES:[DI],AX;设置当前中断处理程序入口偏移地址ADDDI,2MOVAX,ES:[DI]MOVCS_BAK,AX;保存INTR原中断处理程序入口段地址MOVAX,SEGMYISRMOVES:[DI],AX;设置当前中断处理程序入口段地址MOVDX,INTR_OCW1;设置中断屏蔽寄存器,打开INTR屏蔽位8INAL,DXMOVIM_BAK,AL;保
本文标题:微机接口8259中断控制实验
链接地址:https://www.777doc.com/doc-5055687 .html