8259中断实验

合集下载

微机实验三8259中断控制实验

微机实验三8259中断控制实验

姓名:学号:2.3 8259中断控制实验2.3.1 实验目的1. 掌握8259中断控制器的工作原理;2. 学习8259的应用编程方法;3. 掌握8259级联方式的使用方法。

2.3.2 实验设备PC机一台,TD-PITE实验装置一套。

2.3.3 实验内容及步骤1、8259单中断实验8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。

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

实验结果分析主程序运行过程中遇到中断请求,进而响应中断请求,即在屏幕上输出字符“7”。

实验流程图2、主8259 多中断实验实验步骤:(1)按上图所示完成实验电路连线。

KK1+连接到主片8259的IR7上,KK2+连接到从片8259的IR6上。

(2)打开PC机,运行Wmd86软件,进入Wmd86集成开发环境。

(3)对程序进行编译、连接、加载和运行,并验证实验程序的正确性。

(4)分别按动单次脉冲开关KK1+或KK2+时,显示屏上会显示什么信息,将屏幕截图填在实验报告数据处理分析部分的表2中。

(5)如果同时按KK1+和KK2+时,显示屏上会显示什么信息,并在实验结论对实验结果进行解释。

流程图中断请求分析与实验一相比,中断向量表多存储了M6。

主程序在运行过程中接到中断请求,于是响应中断,在处理中断程序的过程中再次接到中断请求,于是再次响应中断,处理中断程序。

处理完后逐层返回。

3. 8259级联实验实验接线图如图2-3-12所示,KK1+连接到主片8259的IR7上,KK2+连接到从片8259的IR1上,当按一次KK1+时,显示屏上显示字符“M7”,按一次KK2+时,显示字符“S1”。

编写程序。

实验步骤(1)按图2-3-12连接实验线路;(2)输入程序,编译、链接无误后装入系统;(3)运行程序,按动KK1+或KK2+,观察实验结果,验证实验程序的正确性; (4)若同时按下KK1+和KK2+,观察实验结果,解释实验现象。

8259中断控制器实验报告

8259中断控制器实验报告

竭诚为您提供优质文档/双击可除8259中断控制器实验报告篇一:8259中断控制器实验报告8259中断控制器实验报告作者:一实验目的1,掌握8259A的工作原理。

2,掌握编写中断服务程序方法。

3,掌握初始化中断向量的方法。

二,实验设备cpu挂箱,8086cpu模块图1-cpu挂箱三,实验内容用电平开关的输出作为中断源,每个开关对应于一个中断源。

在中断服务程序中,通过74Ls273输出一个数据,以点亮于中断源对应位置的LeD灯。

四,实验原理1.本实验用到三部分电路:电平开关电路、简单I/o扩展电路和8259中断控制器电路;2.8086的中断系统是向量中断方式,内存中特定位置有一中断向量表,表内存有不同中断类型的中断向量,不同的中断向量对应不同的偏移地址;3.中断类型由8359通过数据总线送给8086,8086内部电路会将该类型值自动乘4,而后赋给指令指针,从而转向中断向量表的相应单元取得中断入口地址,之后就进入中断服务程序;4.中断类型的高5位由8359寄存器Icw2决定,低3位由中断源IRx的编码自动填充,IRo~IR7的编码分别是000,001,010,011,100,101,110,111。

五,实验步骤1,实验接线cs0-cs8259cs1-cs27300~07-LeD1~LeD8K1~K8-IR0~IR7InT-InT(8086cpu板)InTA-InTA(8086cpu板)2,编译调试程序3,全速运行程度,拨动某一电平开关,观察LeD的亮灭情况。

六,实验结果全速运行程序,由上向下拨动开关时,相应位置的LeD灯点亮,其余LeD灯全灭七,源代码Assumecs:coDecoDesegmenTpubLIcoRg100hsTART:moVcx,0sTART1:cLImoVDx,04A0hmoVAx,13houTDx,AxmoVDx,04A2hmoVAx,80h ouTDx,AxmoVAx,01houTDx,AxmoVAx,00houTDx,AxnopmoVAx,0moVDs,AxmoVADDDI,2DI,200hmoVDs:[DI],100h;初始化中断向量表moVAx,oFFseTint0moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint1moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint2moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint3moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint4moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint5moVDs:[DI],AxADDDI,2moVAx,oFFseTint6moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint7moVDs:[DI],AxADDDI,2;上述程序为芯片8259的初始化程序moVDs:[DI],100hmAIn:moVAx,0sTIwAITIng:cmpAx,0hJewAITIngmoVDx,04b0houTDx,AxmoVcx,0 DeLAY:LoopDeLAYJmpsTART1Int0:cLInopmoVAx,oFehIReTInt1:cLInopmoVAx,oFDhIReTInt2:cLInopmoVAx,oFbhIReTInt3:cLInopmoVAx,oF7hIReTInt4:cLInopmoVAx,oeFhIReTInt5:cLInopmoVAx,oDFhIReTInt6:cLInopmoVAx,obFhIReTInt7:cLInopmoVAx,o7FhIReT篇二:8259中断控制实验报告深圳大学实验报告班级:实验时间:实验报告提交时间:教务处制篇三:8259中断控制实验报告实验六8259中断控制一、实验目的1.学习8086/8088cpu中断系统的知识。

8259A中断实验

8259A中断实验

实验8259单级中断控制器实验一、实验目的⒈掌握8259中断控制器的接口方法。

⒉掌握8259中断控制器的应用编程。

二、实验内容利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。

三、实验接线图图6-6四、编程指南⑴8259芯片介绍中断控制器8259A是专为控制优先级中断而设计的芯片。

它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。

因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。

即中断结构可以由用户编程来设定。

同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。

⑵本实验中使用3号中断源IR3,“”插孔和IR3相连,中断方式为边沿触发方式,每拨二次AN开关产生一次中断,满5次中断,显示“8259——good”。

如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。

五、实验程序框图IR3中断服务程序:IR7中断服务程序:六、实验步骤1、按图6-6连好实验线路图。

⑴8259的INT连8088的INTR;⑵8259的INTA连8088的INTA;⑶“”插孔和8259的3号中断IR3插孔相连,“”端初始为低电平;⑷8259的CS端接FF80H孔。

2、运行实验程序,在系统处于命令提示符“P.”状态下,按SCAL键,输入12D0,按EXEC键,系统显示8259-1。

3、拨动AN开关按钮,按满l0次显示good。

七、实验程序清单CODE SEGMENT ;H8259.ASMASSUME CS: CODEINTPORT1 EQU 0FF80HINTPORT2 EQU 0FF81HINTQ3 EQU INTREEUP3INTQ7 EQU INTREEUP7PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口ORG 12D0HSTART: JMP START0BUF DB ?,?,?,?,?,?intcnt db ?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: CLD ;递加CALL BUF1 ;写显示缓冲初值CALL WRINTVER ;写中断向量MOV AL,13H ;写ICW1MOV DX,INTPORT1OUT DX,ALMOV AL,08H ;写ICW2MOV DX,INTPORT2OUT DX,ALMOV AL,09H ;写ICW4OUT DX,ALMOV AL,0F7H ;写OCW1OUT DX,ALMOV intcnt,01H ;中断计数初值STI ;开中断WATING: CALL DISP ;DISP 8259-1JMP WATING ;循环显示WRINTVER: MOV AX,0H ;写中断向量子程序MOV ES,AXMOV DI,002CH ;IR3中断向量地址LEA AX,INTQ3 ;IR3中断服务地址STOSW ;写中断服务地址偏移量MOV AX,0000h ;写中断服务段地址STOSWMOV DI,003CH ;IR7中断向量地址LEA AX,INTQ7 ;IR7中断服务地址STOSW ;写中断服务地址偏移量MOV AX,0000h ;写中断服务段地址STOSWRETINTREEUP3: CLI ;IR3中断服务push ax ;压栈保护现场push bxpush cxpush dxMOV AL,INTCNT ;CALL CONVERS ;拆送缓冲区MOV BX,OFFSET BUF ;077BHMOV AL,10HMOV CX,05HINTRE0: MOV [BX],AL ;高五位缓冲区送熄灭码INC BXLOOP INTRE0MOV AL,20H ;中断返回码MOV DX,INTPORT1OUT DX,ALADD INTCNT,01HCMP INTCNT,06HJNA INTRE2 ;中断次数小于5次继续CALL BUF2 ;中断次数结束DISP:good INTRE1: CALL DISPJMP INTRE1CONVERS: AND AL,0FH ;拆送缓冲区MOV BX,offset buf ;077AHMOV [BX+5],ALRETINTRE2: MOV AL,20HMOV DX,INTPORT1OUT DX,ALpop dxpop cxpop bxpop axSTIIRET ;中断返回INTREEUP7: CLI ;IR7中断服务MOV AL,20H ;中断返回码MOV DX,INTPORT1OUT DX,ALcall buf3 ;disp:errINTRE3: CALL DISP ;循环显示:ERR JMP INTRE3DISP: MOV AL,0FFH ;显示子程序 ,5ms MOV DX,PAOUT DX,ALMOV CL,0DFH ;20HMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1INC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,08H ;写”8259-1”MOV BUF+1,02HMOV BUF+2,05HMOV BUF+3,09HMOV BUF+4,17HMOV BUF+5,01HRETBUF2: MOV BUF,09H ;写”good ”MOV BUF+1,00HMOV BUF+2,00HMOV BUF+3,0dHMOV BUF+4,10HMOV BUF+5,10HRETBUF3: MOV BUF,0eH ;写”err ”MOV BUF+1,18HMOV BUF+2,18HMOV BUF+3,10HMOV BUF+4,10HMOV BUF+5,10HRETCODE ENDSEND START。

微机实验六- 8259外部中断实验

微机实验六- 8259外部中断实验

南昌大学微机原理与接口技术实验报告南昌大学实验报告实验六 8259外部中断实验1、实验要求:用8088/86控制8259可编程中断控制器,实现对外部中断的响应和处理。

要求程序中对每次中断进行计数,并将计数结果显示在LED数码管上。

2、实验目的:(1)学习8088/86与8259的连接方法。

(2)学习8088/86对8259的控制方法。

3. 实验器材:(1)G2010+实验平台 1 台(2)G6W仿真器 1 台(3)连线若干根(4)8259芯片 1 片(5)万用表 1 块(6)Lab8088板 1 块4、实验电路:5、实验说明:编程时注意:(1)正确地设置可编程中断控制和工作方式。

(2)必须正确地设置中断服务程序地址。

8259可外接8个中断源,本实验只响应INT0中断,8259也可以多级连接以响应多个中断源。

实验时,将单脉冲信号接到8259的INT0脚。

每次中断时,可看到LED显示南昌大学微机原理与接口技术实验报告OUTBIT equ 0e101h; 位控制口CLK164 equ 0e102h;段控制口(接164时钟)DAT164 equ 0e102h; 段控制口(接164数据位)ICW1 equ 00010011b;单片8259, 上升沿中断, 要写ICW4ICW2 equ 00100000b; 中断号为20HICW4 equ 00000001b; 工作在8086/88 方式OCW1 equ 11111110b;只响应INT0 中断CS8259A equ 0A000h ; 8259地址CS8259B equ 0A001h……IEnter proc nearpush axpush dxinc CNTmov dx, CS8259Amov al, 20h ; 中断服务程序结束指令out dx, alpop dxpop axiretIEnter endpIInit procmov dx, CS8259Amov al, ICW1out dx, almov dx, CS8259Bmov al, ICW2out dx, almov al, ICW4out dx, almov al, OCW1out dx, alretIInit endpStart proc nearcli……mov ax, 0mov ds, axmov bx, 4*ICW2 ; 中断号mov ax, codeshl ax, 4; x 16add ax, offset IEnter; 中断入口地址(段地址为0) mov [bx], axmov ax, 0inc bxinc bxmov [bx], ax; 代码段地址为0call IInitmov ax, datamov ds, axmov CNT, 0; 计数值初始为0sti……DispAgain:call DisplayLED; 显示dec DelayTjnz DispAgainjmp MLoopStart endpcode endsend start8、实验结果每次按一次脉冲时,LED数码管计数加一。

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所示。

实验3 8259中断控制器实验(20131104)

实验3 8259中断控制器实验(20131104)

实验三、8259中断控制器实验1.实验目的(1).掌握中断控制器8259 IP核的工作原理,熟悉对8259的初始化设置。

(2).掌握中断服务程序的编写方法。

(3).掌握程序固化及脱机运行程序的方法。

2.实验原理8259的工作原理。

参考微机原理与接口技术相关教材。

使用中断控制器8259,首先要对8259初始化,对初始化命令字ICW1~ICW4进行设置,初始化命令字的格式如表3-1所示。

8259 - P rogrammble Intrrupt Controller图3-1 8259 可编程中断控制器表3-1 初始化命令字ICW1~ICW4数据格式:子程序的入口地址写入中断向量表。

另外要编写相关的中断服务子程序。

8259的端口地址如下:PIC_ICW1 EQU 20HPIC_ICW2 EQU 21HPIC_ICW3 EQU 21HPIC_ICW4 EQU 21Hppt 8255的端口地址是:port A 378h ;PA接2个LED数码管port B 379h ;PB接8个LED 发光二极管port C 37ah ;PC口ppt_ctrl 37bh ;控制字口ppi 8255的端口地址是:port A 060h ;PA接4×4键盘和LCD液晶模块port B 061h ;PB 最低位控制计数器2门控信号port C 062h ;PC pc.0控制ppi portA 输入使能ppt_ctrl 063h ;控制字口定时器/计数器8254的端口地址:PIT_CNT0 EQU 40HPIT_CNT1 EQU 41HPIT_CNT2 EQU 42HPIT_CTRL EQU 43H3.实验内容(1)中断计数显示程序本实验主要验证中断控制器8259的中断控制功能。

中断请求信号由按键产生,该按键向8259的IR1发出中断请求,每中断一次,寄存器加1计数,并通过8255的PA口外接的数码管显示出中断的次数。

PA 口输出使能由PC口最低位控制。

8259中断控制实验报告

8259中断控制实验报告

8259中断控制实验报告实验报告:8259中断控制实验一、实验目的:学习和掌握8259中断控制器的工作原理和使用方法。

二、实验设备:计算机、8259中断控制器芯片、连接线、示波器等。

三、实验原理:1.8259中断控制器简介8259是Intel公司推出的一个通用中断控制器芯片,它可以管理多种设备的中断请求,并对中断请求进行优先级排序和处理。

8259具有级联功能,可以通过级联实现更多的设备中断管理。

2.8259工作原理8259中断控制器有两个主要模块:中断请求译码器和中断向量地址寄存器。

中断请求译码器用于判断中断请求的优先级,按照优先级排序,将中断请求发送给CPU。

中断向量地址寄存器用于存储中断向量的地址,CPU根据中断向量的地址来执行相应的中断服务程序。

3.8259中断控制器的寄存器8259中断控制器有多个重要的寄存器,包括中断屏蔽寄存器、中断请求寄存器、中断服务地址寄存器等。

中断屏蔽寄存器用于屏蔽或打开特定中断请求。

中断请求寄存器用于存储当前的中断请求状态。

中断服务地址寄存器用于存储中断向量的地址。

四、实验内容:1.配置8259中断控制器将8259中断控制器连接到计算机,并通过连接线将适当的引脚连接到需要中断控制的设备上。

2.编写中断服务程序根据实验要求,编写相应的中断服务程序,并将其存储在中断服务地址寄存器指定的内存地址中。

3.设置中断向量地址将中断向量的地址存储在中断向量地址寄存器中,使CPU能够根据中断请求执行相应的中断服务程序。

4.测试中断控制功能通过测试设备向8259中断控制器发送中断请求,观察计算机是否能正确处理中断请求,并执行相应的中断服务程序。

五、实验结果与分析:经过以上实验步骤,我们成功配置了8259中断控制器,并编写了相应的中断服务程序。

在测试过程中,通过向8259中断控制器发送中断请求,我们观察到计算机正确地处理了中断请求,并执行了我们编写的中断服务程序。

这表明我们成功地完成了8259中断控制实验。

试验三8259实验

试验三8259实验

实验三、使用8259的单级中断控制实验一、实验目的:1、通过本实验,要掌握8259的使用方法。

二、实验内容8259的IR3引脚接单脉冲发生电路。

产生的中断次数由8086计数,并将计数个数显示在一位LED上。

三、实验分析:本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0-IR7对应的中断类型号为8-F,其中断矢量关系如下表所示。

中断向量表的写入:使用STOSW 命令将AX的内容存储在ES:DI地址。

ES=0,DI=002CH。

AX先为中断服务程序的地址偏移量(offset INTQ3)、后为段地址0000.A.Y6是由74LS138输出端引出的,由CPU地址线的A4、A5、A6分别连到138的ABC端。

所以,可以确定Y6作为选通信号A6A5A4=110。

B.CPU的A0和8259的A0相连。

C.故8259A 有2 个端口地址。

选择的是60H、61H. 60H 用来写ICW1, 61H 用来写ICW2、ICW3、ICW4,初始化命令字写好后,再写操作命令字。

OCW2、OCW3 用口地址60H,OCW1用口地址61H。

所以:对8259的初始化值如下:ICW1:13HICW2:08HICW4:09HIMR :0F7H图中,使用了3号中断源,IR3插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A发出中断请求信号。

CPU响应中断后,在中断服务中,对中断次数进行计数并显示。

使用[0701H] 存放计数次数,从1到F。

如果〉F ,重新显示。

所以中断服务程序需要更改计数值。

四、实验线路连接1)8259模块上的INT1连8088的INTR(在主板键盘矩阵下面)。

2)8259模块上的INTA连8088的INTA(在主板键盘矩阵下面)。

3)MP区SP插孔和8259的3号中断IR3插孔相连,SP端初始为低电平。

4)8259模块上的D0~D7连到BUS 2区的XD0~XD7。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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:CODECLIPUSH 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’。

相关文档
最新文档