当前位置:文档之家› 8259中断实验

8259中断实验

XX学院实验报告实验名称姓名学号班级教师日期一、实验内容与要求1.1 实验内容本次实验分为如下3个子实验:(1)单中断请求实验:利用系统总线上中断请求信号MIR7,设计一个单一中断请求实验;(2)双中断优先级实验:利用系统总线上中断请求信号MIR6和MIR7,设计一个双中断优先级应用实验,观察8253对中断优先级的控制;(3)级联中断实验:利用系统总线上中断请求信号MIR7和SIR1,设计一个级联中断应用实验。

1.2 实验要求本次实验中三个子实验的实验要求如下:(1)单中断请求实验:单脉冲KK1+与主片8259的IR7相连。

每按KK1+,进入一次中断,输出7;(2)双中断优先级实验:单脉冲KK1+连主片8259的IR7,KK2+连其IR6。

每当KK1+按下时显示“7”,每当KK2+按下显示“6”;(3)级联中断实验:单脉冲KK1+连主片8259的IR7,KK2+连从片的IR1。

每当KK1+按下时显示“M7”,每当KK2+按下显示“S1”。

二、实验原理与硬件连线2.1 实验原理(1)中断控制器8259简介在Intel 386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。

该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。

从片的INT连接到主片的IR2信号上构成两片8259的级联。

在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。

8259的内部连接及外部管脚引出如图1-1:INTR串口0MIR6MIR7SIR1图1-1 8259内部连续及外部管脚引出图表1-1列出了中断控制单元的寄存器相关信息。

表1-1 ICU寄存器列表初始化命令字1寄存器(ICW1)说明见图1-2所示。

7ICW1图1-2 初始化命令字1寄存器初始化命令字2寄存器(ICW2)说明见图1-3所示。

7ICW2中断向量地址图1-3 初始化命令字2寄存器初始化命令字3寄存器(ICW3)说明,主片见图1-4,从片见图1-5。

7ICW3(主片)图1-4主片初始化命令字3寄存器7ICW3(从片)图1-5 从片初始化命令字3寄存器初始化命令字4寄存器(ICW4)说明见图1-6。

7ICW4图1-6 初始化命令字4寄存器操作命令字1寄存器(OCW1)说明见图1-7。

7OCW1图1-7 操作命令字1寄存器操作命令字2寄存器(OCW2)说明如图1-8所示。

OCW2图1-8 操作命令字2寄存器操作命令字3寄存器(OCW3)说明如图1-9所示。

7OCW3图1-9 操作命令字3寄存器查询状态字(POLL )说明如图1-10所示。

7POLL图1-10 程序状态字寄存器在对8259进行编程时,首先必须进行初始化。

一般先使用CLI 指令将所有的可屏蔽中断禁止,然后写入初始化命令字。

8259有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。

在初始化主片8259时,写入初始化命令字的顺序是:ICW1、ICW2、ICW3、ICW4,初始化从片8259的顺序与初始化主片8259的顺序是相同的。

系统启动时,主片8259已被初始化,且4号中断源(IR4)提供给与PC 联机的串口通信使用,其它中断源被屏蔽。

中断矢量地址与中断号之间的关系如表1-2所示:表1-2 中断矢量地址与中断号关系表2.2 硬件连线(1)单中断实验:实验接线图如图1-11所示,单次脉冲输出KK1+与主片8259的IR7相连(与实验平台中的MIR7相连),每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”;图1-11 单中断实验硬件连线图(2)双中断优先级实验:实验接线图如图1-12所示,KK1+和KK2+分别连接到主片8259的IR7(与实验平台MIR7相连)和IR6(与实验平台MIR6相连)上,当按一次KK1+时,显示屏上显示字符“7”,按一次KK2+时,显示字符“6”;图1-12 双中断优先级实验硬件连线图(3)级联双中断优先级实验:实验接线图如图1-13所示,KK1+连接到主片8259的IR7(与实验平台MIR7相连)上,KK2+连接到从片8259的IR1(与实验平台SIR1相连)上,当按一次KK1+时,显示屏上显示字符“M7”,按一次KK2+时,显示字符“S1”。

图1-13 级联双中断优先级实验硬件连线图三、设计思路、步骤和程序流程图3.1 设计思路(1)单中断实验:采用一片8259芯片和KK1+单次脉冲开关,首先让程序进入死循环,等待中断,每按动一次单次脉冲,产生一次外部中断,调用中断程序,在显示屏上输出一个字符“7”。

(2)双中断优先级实验:采用一片8259芯片和KK1+与KK2+单次脉冲开关,首先让程序进入死循环,等待中断,当按一次KK1+或KK2+时,产生一次外部中断,调用对应的中断程序,在显示屏上输出对应的字符“7”和“6”。

(3)级联双中断优先级实验:采用两片8259芯片,一片为主片,一片作为从片,以及KK1+与KK2+单次脉冲开关。

首先让程序进入死循环,等待中断,当按一次KK1+或KK2+时,产生一次外部中断,调用对应的中断程序,在显示屏上输出对应的字符串“M7”和“S1”。

3.2 实验步骤(1)单中断实验1.按图1-11连接实验线路;2.编写实验程序,经编译、链接无误后装入系统;3.运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“7”,说明响应了中断。

(2)双中断优先级实验1.按图1-12连接实验线路;2.编写实验程序,经编译、链接无误后装入系统;3.运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“7”,重复按单次脉冲开关KK2+,显示屏会显示字符“6”,说明响应了中断;4.尝试先按KK1+,再快速按KK2+,观察MIR7和MIR6两个中断请求的优先级,分析实验结果。

(3)级联双中断优先级实验1.按图1-12连接实验线路;2.编写实验程序,经编译、链接无误后装入系统;3.运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符串“M7”,重复按单次脉冲开关KK2+,显示屏会显示字符串“S1”,说明响应了中断;4.尝试先按KK1+,再快速按KK2+,观察MIR7和SIR1两个中断请求的优先级,分析实验结果。

3.3 程序流程图主程序流程图如图1-14:图1-14 主程序流程图中断程序流程图如图1-15图1-15 中断程序流程图四、程序清单与执行结果4.1 程序清单(1)单中断实验代码CODE SEGMENTASSUME CS:CODESTART:;DOS调用写入法CLI;关中断,防止硬件中断对程序的干扰PUSH DS;设置中断向量MOV AX,8MOV DX,AXMOV AX,OFFSET MIR7;取MIR7的偏移地址MOV BX,003CH;中断类型号为n,BX设置为4*nMOV [BX],AX;偏移地址放入4n,4n+1单元MOV AX,SEG MIR7;取MIR7的段地址MOV [BX+2],AX;偏移地址放入4n+2,4n+3单元POP DSMOV AL,11H;初始化ICM1OUT 20H,ALMOV AL,08H;初始化ICM2OUT 21H,ALMOV AL,04H;初始化ICM3OUT 21H,ALMOV AL,01H;初始化ICM4OUT 21H,ALMOV AL,6FH;设置OCW1,开放MIR7和IR4OUT 21H,ALSTI;开中断WIN:JMP WIN;等待中断MIR7:STIMOV AX,0137H;显示字符7INT 10HMOV AX,0120H;显示空格INT 10HMOV AL,20H ;中断结束命令OUT 20H,ALIRET;中断返回CODE ENDSEND STARTRETCODE ENDSEND START(2)双中断优先级实验代码CODE SEGMENTASSUME CS:CODESTART:CLIPUSH DS;设置中断向量MOV AX,8MOV DX,AXMOV AX,OFFSET MIR7MOV BX,003CHMOV [BX],AXMOV AX,SEG MIR7MOV [BX+2],AXMOV AX,8MOV DX,AXMOV AX,OFFSET MIR6MOV BX,0038HMOV [BX],AXMOV AX,SEG MIR6MOV [BX+2],AXPOP DSMOV AL,11H;初始化ICW1OUT 20H,ALMOV AL,08H;初始化ICW2OUT 21H,ALMOV AL,04H;初始化ICW3OUT 21H,ALMOV AL,01H;初始化ICW4OUT 21H,ALMOV AL,2FH;设置OCW1,开放MIR7和SIR4 OUT 21H,ALSTIWIN:JMP WIN ;主程序循环MIR7:STIMOV AX,0137H ;显示字符7INT 10HMOV AX,0120H ;显示空格INT 10HMOV AL,20HOUT 20H,ALIRETMIR6:STIMOV AX,0136H ;显示字符6INT 10HMOV AX,0120H ;显示空格INT 10HMOV AL,20HOUT 20H,ALIRETCODE ENDSEND START(3)级联双中断优先级实验代码CODE SEGMENTASSUME CS:CODESTART:CLIPUSH DS ;设置中断向量MOV AX,8MOV DX,AXMOV AX,OFFSET MIR7MOV BX,003CHMOV [BX],AXMOV AX,SEG MIR7MOV [BX+2],AXMOV AX,8 ;设置中断向量MOV DX,AXMOV AX,OFFSET SIR1MOV BX,00C4HMOV [BX],AXMOV AX,SEG SIR1MOV [BX+2],AXPOP DSMOV AL,11H ;初始化ICW1-ICW4OUT 20H,ALMOV AL,08HOUT 21H,ALMOV AL,04HOUT 21H,ALMOV AL,01HOUT 21H,ALMOV AL,11H ;初始化ICW1-ICW4OUT 0A0H,ALMOV AL,30HOUT 0A1H,ALMOV AL,02HOUT 0A1H,ALMOV AL,01HOUT 0A1H,ALMOV AL,6BH ;01101011OUT 21H,ALMOV AL,0FDH ;设置OCM1,开放MIR7和SIR1 OUT 0A1H,ALSTIWIN:JMP WIN ;主程序循环MIR7:STIMOV AX,014DH ;显示MINT 10HMOV AX,0137H ;显示7INT 10HMOV AX,0120H ;显示空格INT 10HMOV AL,20HOUT 20H,ALIRETSIR1:STIMOV AX,0153H ;显示SINT 10HMOV AX,0131H ;显示1INT 10HMOV AX,0120HINT 10H ;显示空格MOV AL,20HOUT 0A0H,ALOUT 20H,ALIRETCODE ENDSEND START4.2 执行结果(1)单中断实验的实验结果如图1-16,每按一次KK1+,就会打印一个字符,并且输出一个空格,自定义后结果变成输出字符串‘THIS IS A INTER’。

相关主题