8259A中断控制器实现

合集下载

8259、8253实验报告

8259、8253实验报告

数字逻辑与CPU实验报告实验内容:8259中断控制器、8253可编程定时/计数器接口实验姓名:班级:学号:实验一8259中断控制器实验一、实验目的1、掌握8259的工作原理。

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

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

二、实验内容用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。

三、实验方法(1)连线1、单脉冲发生器输出P+与8259的IR0相连;2、8259的片选CS8259与CS0相连;3、8259的INT与8086的INT相连;4、CS273与CS1相连;5、00与LED1相连;其他线均已连好。

(2)在8086实验系统软件中编辑程序,编译链接后,调试程序,程序流程图如图2。

(3)调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。

四、程序源代码CODE SEGMENT PUBLICASSUME CS:CODEORG 100H;设置堆栈起点0100HSTART: 图2 程序流程图 MOV DX,4A0HMOV AX,13H ;写ICW1,单片8259,要写ICW4OUT DX,AXMOV DX,4A2HMOV AX,80H ;写入ICW2,设定IR0中断类型吗为80HOUT DX,AXMOV AX,01 ;写入ICW4,设定一般嵌套,非自动EOI方式 OUT DX,AXMOV AX,0 ;写入OCW1,设定允许中断。

OUT DX,AXMOV AX,0MOV DS,AXMOV SI,200H ;中断向量预存放在0100:0200H(向量码80H) MOV AX,OFFSET HINT;取中断服务程序的入口地址MOV DS:[SI],AXADD SI 2MOV AX,CSMOV DS:[SI],AXSTI;开中断JMP $;原地跳转HINT:;中断服务程序XOR CX,0FFH;CX全部取反(8位)MOV DX,4B0H;CS273接口的地址,与8个LED灯相连MOV AX,CX;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的的地址MOV AX,20H;写入OCW2,一般EOI命令,全嵌套方式OUT DX,AXIRET;中断返回CODE ENDSEND START五、实验结果程序调试通过后,当我们按一次单脉冲发生器的输出开关,对应连好的灯就会亮。

微机原理8259A实验报告

微机原理8259A实验报告

实验二8259A中断控制器应用实验分析报告一、填写补充实验1-2中以下两段代码,并简述其意义:第1段:IN AL,21H_ AND AL, 0F7H _____________OUT 21H,ALIN AL,0A1H__AND AL, 0FBH______________OUT 0A1H,AL第2段:MOV AL,20HOUT 0A0H,ALOUT 20H,AL二、简述实验1-2的实验现象,分析解释其原因;结合本实验,简述中断嵌套和中断优先级的意义以及正确形成中断嵌套的基本要求。

答:实验1现象:按下一次单脉冲,显示一次字符,十次中断后停机,不再显示字符串实验2现象:分别按下两个单脉冲显示一串3和一串10,在3未显示完全时按下显示10的脉冲键,可发生中断,相反则不能发生中断,需等待一串10显示完后再显示一行3。

原因:IRQ10的中断级别高于IRQ3,所以可以在3还没有执行完时中断IRQ3,中断原程序执行IRQ10 。

中断嵌套的意义:为了让CPU及时响应更高级别的中断请求。

中断优先级的意义: CPU只能响应一个中断请求,在中断源较多的情况下,当有多个中断源同时发起中断请求时,CPU需要对多个中断源的优先级进行判断,判断出优先级最高的中断请求进行响应。

中断嵌套要求是:被中断程序的优先级低于请求程序中断的优先级。

三、抄写实验1-2中要求填写的“显示‘10’和‘空格’”的代码段NEXT10_1:MOV AX,SEG MESS10MOV DS,AXMOV DX,OFFSET MESS10MOV AH,09INT 21H ;使用INT21 – 09H实现字符串的输出‘10’CALL DELAY1 ;调用延时子程序LOOP NEXT10_1MOV DX,0DH ;调用DOS的中断功能,回车MOV AH,02HINT 21HMOV DX,0AH ;调用DOS的中断功能,换行MOV AH,02HINT 21H四、用文字简述或流程图方式,说明实验1-3中“以查询方式检测处理多中断请求”的过程。

8259中断实验报告

8259中断实验报告

8259中断实验报告8259中断实验实验报告实验报告实验名称8259A中断控制器实验姓名学号班级教师日期一、实验内容与要求1.1 实验内容了解8259A终端控制器的工作原理,了解PC中断的原理和过程,设计并编写程序,设置8259A的命令字,定义中断服务程序,使在TPC-USB平台上每按一次单脉冲开关产生一次中断,在屏幕上依次显示“The 1 TPCA Interrupt!”、“The 2 TPCA Interrupt!”、??、“The 10 TPCA Interrupt!”,中断10次后程序退出,并在屏幕上显示“The TPCA Interrupt end!”。

1.2 实验要求(1) 具有一定的汇编编程的基础,能编写一些基本语句来实现实验。

实验前根据实验流程图,写出对应代码;(2) 要了解8259A中断控制器的内部结构和外部引脚,理解芯片的工作原理和工作过程。

熟悉8259A芯片的命令字,对其进行编程;(3) 熟悉实验平台TPC-USB了解各个接口的名称与功能,进行实验时能快速并正确地连接好实验电路;(4) 连接PC与TPC-USB平台,用微机实验软件运行程序,每按一次TPC-USB平台上的单脉冲开关产生一次中断,要在屏幕上依次显示“The 1 TPCA Interrupt!”、“The 2 TPCA Interrupt!”、??、“The 10 TPCA Interrupt!”,中断10次后程序退出,并在屏幕上显示“The TPCA Interrupt end!”。

二、实验原理与硬件连线2.1 实验原理8259A是一种可编程中断控制器,可协助CPU进行中断管理。

8259A 的内部结构如图1所示。

单片8259A工作时,每次中断处理过程如下:(1) 当IR7 ~ IR0 上有中断请求,则IRR 相应的位置1;(2) 对于已进入IRR且未被IMR屏蔽的中断请求,PR电路进行优先级判定,得到最高级的中断请求;(3) 控制逻辑接收中断请求,向CPU发INT 信号;(4) 若CPU允许中断,则在当前指令结束后连续发出2个中断应答信号INTA,进行中断响应。

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中断系统的知识。

8259工作原理

8259工作原理

8259工作原理
8259工作原理是指8259A可编程中断控制器的工作原理。

8259A是一种用来处理中断信号的芯片,它可以管理多个设备的中断请求。

在8259A中,有8个中断请求线(IRQ0~IRQ7),这些中断
请求线可以连接到外部设备。

当一个设备需要通过中断通知CPU时,它会将相应的IRQ线拉低,8259A会将这个信号传
递给CPU。

8259A使用级联方式来管理多个设备的中断请求。

具体来说,它有一个主片和一个或多个从片。

主片连接到CPU,而从片
连接到各个外部设备。

主片负责管理整个中断系统,从片负责管理各自的设备的中断请求。

当一个设备的IRQ线被拉低时,从片会将这个信息传递给主片。

主片会根据中断请求的优先级确定要处理的中断请求,并将CPU相应的引脚拉高,通知CPU中断发生。

CPU会停止当前的工作,转而执行与中断相关的处理程序。

在8259A中,还有一些寄存器用来存储中断请求的相关信息。

这些寄存器可以被CPU读取和写入,以实现对8259A的配置
和控制。

总的来说,8259A的工作原理是通过管理中断请求线和级联连接的方式,实现外部设备与CPU之间的中断通信。

它可以在
多个设备同时发生中断时,决定中断的优先级,并通知CPU 执行相应的中断处理程序。

实验四 8259A的单级中断控制实验

实验四 8259A的单级中断控制实验

实验四使用8259A的单级中断控制实验一、实验目的1.掌握中断控制器8259A与微机接口的原理和方法。

2.掌握中断控制器8259A的应用编程。

二、实验内容编制程序,利用开关作为8259芯片IR7的中断源,人工控制产生单一中断。

中断的功能是驱动发光二极管,使其亮灭,不停地闪动。

三、实验提示8259中断控制器是专为控制优先级中断设计的芯片。

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

因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,并选择优行模式和中断请求方式,即中断结构可以由用户编程来设定。

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

实验箱中采用一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0~IR7对应的中断型号为8~F,其和中断矢量关于如下表所示。

表1 8259中断矢量对应关系务程序程序,使系统每次响应外部中断IR7时发光二极管闪烁。

四、实验电路五、实验软件清单Port0 EQU 0FFE0HPort1 EQU 0FFE1HCODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEORG 3400HP8259: CLIMOV AX,OFFSET INT8259MOV BX,003CHMOV [BX],AXMOV BX,003EHMOV AX,0000HMOV [BX],AXCALL FOR8259MOV AL,0FEHMOV DX,0FFE4HSTIJMP $;============================== FOR8259:MOV AL,13HMOV DX,Port0OUT DX,ALMOV AL,08HMOV DX,Port1OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,7FH ;IRQ7OUT DX,ALRET;--------------------------- INT8259:cliPush dxPush axMOV AL,20HMOV DX,Port0OUT DX,ALPop axPop dxOut dx,almov cx,0loop $Rol al,1STIIRETCODE ENDSEND P8259六、实验软件框图七、实验步骤(1)按实验电路图连接线路:①开关Ki 和8259 7号中断IR7插孔相连。

a可编程中断控制器实验

4.2 8259A可编程中断控制器实验4.2.1 实验目的1、掌握8259A可编程中断控制器的工作原理、编程方法以及如何通过8259A实现对外部可屏蔽硬件中断的管理;熟悉实验中涉及到的中断屏蔽寄存器IMR和中断服务寄存器ISR等的使用方法.2、进一步掌握中断服务程序的设计方法.4.2.2 实验预习要求1、复习教材中有关中断的内容,了解微型计算机中外部可屏蔽硬件中断的处理过程.2、复习8259A的工作原理以及如何通过8259A实现对外部可屏蔽硬件中断源的管理.3、复习中断服务程序的编写方法.4、预先编写好实验程序.4.2.3 实验原理微型计算机中用户可使用的外部硬件中断只有可屏蔽中断,由8259A可编程中断控制器管理.中断控制器用于接收外部的中断请求信号,可实现中断优先级判定、提供中断类型号、屏蔽中断输入等功能.在IBM PC/XT机中,仅使用了1片8259A芯片,能实现对外部8个硬件可屏蔽中断源的中断管理(其中IRQ2系统保留),有关8259A在IBM PC/XT机中的使用情况见教材“7.5 可编程中断控制器Intel 8259A”一节.IBM PC/A T(80286CPU)及其以后机型使用2片8259A组成级联方式,扩展的8259A与主8259A通过IRQ2进行级联,两个8259A中断控制器最多可对外部15个中断源进行管理.实验台上的中断请求信号通过扁平电缆连接到微机主板上的ISA总线扩展插槽的IRQ2、IRQ3、IRQ4和IRQ7中的某一个上,然后送往主板上主8259A可编程中断控制器的对应中断请求输入端.具体选用IRQ2、IRQ3、IRQ4和IRQ7中的哪一个,由本实验台接口卡上的跳线开关(JK)设置,可以选择将IRQ2、IRQ3、IRQ4和IRQ7中的某一个引到实验台上的IRQ插座上,跳线方法详见第3章,实验台接口卡出厂设置为IRQ7.系统启动时,8259A中断类型号的高5位已被初始化为00001,故IRQ0~IRQ7的中断类型号为08H~0FH;8259A的中断结束方式初始化为非自动结束方式,即要在中断服务程序中发EOI命令;中断请求信号设置为“边沿触发”方式;8259A的端口地址为20H和21H.4.2.4 实验内容按图4.2-1连接线路(只需连接一根线),按动单脉冲发生器的微动开关产生一个正脉冲作为中断请求信号.要求每按一次开关产生一次中断,在屏幕上显示一次“This is a interruption!”,中断10次后程序结束.4.2.5 实验提示设实验台接口卡上的跳线开关(JK)设置为通过ISA总线中的IRQ7(接口卡出厂设置)将实验台上的中断请求信号引入微机主板上的主8259A中断控制器.由于系统中使用IRQ7作为并行打印机的中断请求信号输入,其中断类型号为0FH,其对应的中断服务程序入口地址存放在内存(中断向量表)0FH⨯4~0FH⨯4+3四个存储单元中,因此,程序应首先将系统设置的IRQ7对应的中断服务程序的入口地址保存起来,然后再将实验台上的外部可屏蔽硬件中断对应的服务程序的入口地址写入中断向量表中的这四个单元中,在程序返回前恢复原有内容.下面分别给出以上有关操作的编程提示.1、原中断向量的保存与新中断向量的写入DATA SEGMENTKEEP_CS DW 0 ;存放原中断服务程序所在代码段的段地址&&图4.2-1 IRQKEEP_IP DW 0 ;存放原中断服务程序在代码段的偏移地址 OLD_IMR DB 0 ;存放中断屏蔽寄存器IMR 原来的内容DATA ENDSCODE SEGMENT;保存原中断服务程序的入口地址(由DOS 系统功能调用INT 21H 功能号为35H 实现)MOV AH ,35HMOV AL ,0FH ;IRQ7的中断类型号为0FHINT 21H ;返回值:(ES )=段地址 (BX )=偏移地址MOV KEEP_CS ,ES ;保存段地址MOV KEEP_IP ,BX ;保存偏移地址;将新的IRQ7的中断服务程序入口地址送中断向量表MOV AX ,SEG PIRQ7 ;中断服务程序入口地址送DS :DXMOV DS ,AXMOV DX ,OFFSET PIRQ7MOV AL ,0FH ;中断类型号0FH 送ALINT 21HPIRQ7 PROC ;IRQ7对应的新的中断服务程序IRETPIRQ7 ENDP CODE ENDS⋯ ⋯ ⋯ ⋯图4.2-2 主程序流程图 图4.2-3 中断服务程序流程图2、8259A中断屏蔽寄存器IMR对应位清零(允许该位中断)IN AL,21H ;读IMRMOV OLD_IMR,AL ;保存IMR内容AND AL,7FH ;IRQ7对应的bit7清零,允许IRQ7的中断OUT 21H,AL ;写回到IMR3、中断服务程序结束前使用中断结束命令MOV AL,20HOUT 20H,AL4、程序结束返回DOS前应恢复8259A中断屏蔽寄存器IMR的原有内容,并恢复原IRQ7的中断向量.注意:若实验台接口卡未使用出厂时的设置,即不是使用ISA总线中的IRQ7将实验台上的中断请求信号IRQ送到主板的8259A,请根据具体设置在编写程序时作适当修改.实验内容1和2的程序流程图如图4.2-2和4.2-3所示.4.2.6 实验报告要求1、根据流程图编写实验程序,并说明在实验过程中遇到了哪些问题,是如何处理的.2、写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等.。

微机原理-实验四-中断实验

微机原理实验报告班级:XXXXX姓名:XXXX学号:20XXXXXXXXX大学信息科学与技术学院信息工程系实验四8259A中断控制器实验一、实验目的:1、利用试验箱掌握8259A中断控制器的使用方法。

2、掌握中断的相关知识。

二、实验内容:1、实验连线(微机原理试验箱)⑴连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G 与总线单元上方的GS相连。

⑵将8259CS插孔与译码单元的Y0相连,中断源IR7与单脉冲单元的SP插孔相连。

⑶用8芯扁平电缆将8259中断控制单元的数据总线插座与数据总线单元任一插座相连。

2、 PC机连接好串口线电源线,打开电源,在电脑中打开intel8088微机实验系统选择串口一和 57600 波特率若出现仿真器没有连接的画面则串口线没有连接好如下图:3、LED环境⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。

Ph88/he08.asm代码在软件中自带的,打开软件中的he08.asm 点编译(c)点击编译、连接、装载⑵在“P.”状态下在小键盘键入3400,然后按“EXEC”进入实验项目的运行。

这是输入起始地址,对应代码中的 ORG 3400H4、观察运行结果在连续运行方式下,按动 AN 按钮,LED 数码管从最高位开始依次显示“7”显示满后,最高位显示“P.”继续等待中断。

5、终止运行按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出该程序的运行返回监控状态。

三、程序流程图和程序代码1、流程图2、代码与注释;-------------------硬件实验八 8259单级中断控制器实验------------------- CODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEORG 3400HH8: JMP P8259ZXK EQU 0FFDCHZWK EQU 0FFDDHLED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3HBUF DB ?,?,?,?,?,?Port0 EQU 0FFE0HPort1 EQU 0FFE1HP8259: CLICALL WP ;初始化显示“P.”MOV AX,OFFSET INT8259MOV BX,003CHMOV [BX],AXMOV BX,003EHMOV AX,0000HMOV [BX],AXCALL FOR8259mov si,0000hSTICON8: CALL DISJMP CON8;------------------------------------ INT8259:cliMOV BX,OFFSET BUFMOV BYTE PTR [BX+SI],07HINC SICMP SI,0007HJZ X59XX59: MOV AL,20HMOV DX,Port0OUT DX,ALmov cx,0050hxxx59: push cxcall dispop cxloop xxx59pop cxmov cx,3438hpush cxSTIIRETX59: MOV SI,0000HCALL WPJMP XX59;==============================FOR8259:MOV AL,13HMOV DX,Port0OUT DX,ALMOV AL,08HMOV DX,Port1OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,7FH ;IRQ7OUT DX,ALRET;---------------------------WP: MOV BUF,11H ;初始化显示“P.”MOV BUF+1,10HMOV BUF+2,10HMOV BUF+3,10HMOV BUF+4,10HMOV BUF+5,10HRET;--------------------------------DIS: MOV CL,20HMOV BX,OFFSET BUFDIS1: MOV AL,[BX]PUSH BXMOV BX,OFFSET LEDXLATPOP BXMOV DX,ZXKOUT DX,ALMOV AL,CLMOV DX,ZWKOUT DX,ALPUSH CXMOV CX,0100HDELAY: LOOP $POP CXCMP CL,01HJZ EXITINC BXSHR CL,1JMP DIS1EXIT: MOV AL,00HMOV DX,ZWKOUT DX,ALRET;--------------------------CODE ENDSEND H8四、调试过程及遇到的问题在“P.”状态下键入 3400,然后按“EXEC”进入实验项目的运行。

《8259中断控制器实验》的实验报告

实验六8259中断控制器实验6.1 实验目的(1) 学习中断控制器8259的工作原理。

(2) 掌握可编程控制器8259的应用编程方法。

6.2 实验设备PC微机一台、TD-PIT+实验系统一套。

6.3 实验内容1. 单中断应用实验(1)编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示一个字符。

(2)编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示“Hello”,中断5次后退出。

2.扩展多中断源实验利用实验平台上8259控制器对扩展系统总线上的中断线INTR进行扩展。

编写程序对8259控制器的IR0和IR1中断请求进行处理。

6.4 实验原理1. 8259控制器的介绍中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。

它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。

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

它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。

8259A的内部结构和引脚如图6-1所示。

8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。

8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。

ICW1-ICW4各命令字格式如图6-2所示,OCW1-OCW3各命令字格式如图6-3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。

8259中断控制器实验

实验五、8259中断控制器实验和作业实验题目:8259中断控制器点亮LED灯实验一、实验目的了解8259中断控制器的基本使用,掌握中断程序编程技术。

二、实验内容使用单脉冲电路产生的脉冲信号作为386EX模块8259中断请求输入,每按一次单脉冲按键,触发一次中断,通过8255 PC0驱动LED交替亮和灭,硬件连接如题图所示。

基础三题图、8259中断控制器实验连线示意图三、实验提示MIR5是接到PC的主8259A中断控制器的IR5端,因此不需要对8259A初始化(ICW1-ICW4),但要进行设置中断矢量和打开中断等操作;注意:TPC实验平台中采用的是非自动结束,则需要在中断结束前(中断服务程序的最后)发中断结束命令。

另外、写入中断屏蔽字应采用“读—修改—写”过程,如下所述:IN AL,21HAND AL,0DFH软件实现流程图.MODEL SMALL.386CODE SEGMENTASSUME CS:CODESTART: MOV DX,203HMOV AL,90H ;设置8255控制字,OUT DX,ALMOV CL,0CLI ;关386 CPU中断;写入中断屏蔽字OCW1时,采用读取-修改-写入的顺序IN AL,21HAND AL,11011111B ;MASK BYTEOUT 21H,AL;将中断入口地址写入中断向量表PUSH DSMOV BX,0MOV DS,BXLEA AX,CS:INT_PROC ;将中断程序的入口地址给AXMOV BX,5 ;N=IRX 中断IR5MOV SI,30H ;BASE =30H 基址ADD SI,BX;基址+IR5=中断类型号为35HSAL SI,2 ; 中断类型号为35H X 4=中断向量存于SIMOV DS:[SI],AX ;将入口地址AX送到中断向量表中PUSH CSPOP AXMOV DS:[SI+2],AXPOP DSSTI ;开386 CPU中断LLL: JMP LLLINT_PROC PROC FARPUSH AXCMP CL,0JZ SET0MOV DX,203H ;PC0=1MOV AL,01OUT DX,ALMOV CL,0JMP ENDINTSET0: MOV DX,203H ;PC0=0MOV AL,00OUT DX,ALMOV CL,1ENDINT:MOV AL,20HOUT 20H,ALPOP AXSTIIRETINT_PROC ENDPCODE ENDSEND START。

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

一、实验目的与要求
1、了解8259的内部结构,工作原理;了解8259A 与8088的接口逻辑;
掌握对8259A 的初始化编程方法,了解8088是如何响应中断、退出中断的。

二、实验逻辑原理图与分析 2.1 画实验逻辑原理图
AD0~AD15
ALE
WR#
INTR INTA
数据锁存器
地址锁存器
地址译码器D0~D7
CS#A0
WR#INT INTA#
IR0
A0
2.2 逻辑原理图分析
8282地址锁存器,用于8086CPU 与8259A 芯片地址线的连接用于总线周期T1状态
下发出的地址信号。

经锁存后的地址信号可以在整个周期内保持稳定不变,8286收发器用于8086CPU 与8259A 芯片数据线的连接,通过地址译码器实现片选信号(CS )的选通。

(1)、8086是Intel 系列的16为微处理器,芯片上有4万个晶体管,采用NMOS 工艺制造,用单一的+5V 电源,时钟频率为4.77MHZ~10MHZ.8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据,可寻址的内存空间为1MB 。

(2)、8282锁存器:用来锁存8086访问存储器或I/O 端口时,于总线周期T1状态下发出的地址信号。

经锁存后的地址信号可以在整个周期内保持稳定不变 (3)、8286收发器:可以进行双向数据锁存 (4)、8259A 可编程中断控制器主要功能:
1)、 1片8259A 能管理8级中断,通过级联用9片8259A 可以构成64 级主从 式中断系统
2)、每一级中断可以屏蔽或允许
3)、在中断响应周期,8259A 可提供相应的中断类型号。

4)、 可编程使8259A 工作在多种不同的方式。

(5)、8259A 的内部结构:
1)、IRR:当IR0-IR7某一个引脚上出现有效中断请求时,IRR对应位被置1
2)、IMR:当IR0-IR7中需要屏蔽的,IMR对应位置1
3)、ISR:是一个8位寄存器,通过8位二进制数的值纪录当前正在处理的中断请求。

4)、数据总线缓冲器:是一个8位双向三态缓冲器,是8259A与系统之间传送信息的数据通道
5)、读写控制逻辑:根据CPU的读写命令确定数据总线缓冲器中数据的传输方向
6)、控制逻辑:8259A的控制逻辑部分主要包括了一组初始化命令寄存器和一组操作命令字寄存器,其作用是确定8259A的工作方式
三、程序分析
3.1、程序功能:拨动单脉冲开关,将脉冲信号送给8259A的IR0,触发中断,
8088计数中断次数,显示与G5区的数码管上
3.2程序代码分析
(1)写初始化8259,初始化命令字ICW1(设置8259的工作方式)上升沿触发,单片工作。

端口地址0F000H
初始化命令字ICW1=13H
13H =0001 0011
D7~D5:不使用D4:1 特征位
D3:0 上升沿触发D1:1 单片工作
D0:1 写ICW4
MOV DX,IO8259_0
MOV AL,13H
OUT DX,AL
(2)、写初始化命令字ICW2(设置中断类型码),端口地址0F001H ,中断类型码为08H,由IRO引脚申请中断请求
初始化命令字ICW2=08H
08H =0000 1000
D7~D3:0000 1中断类型码的高5位
D2~D0:000 由IRO引脚申请中断请求
MOV DX,IO8259_1
MOV AL,08H
OUT DX,AL
(3)、写初始化ICW4(方式控制初始化命令字,设置中断结束方式),用于一般嵌套,缓冲方式,发送EOI结束命令(在中断服务程序最后发送一个EOI结束命令,将ISR对应位清0),端口地址0F0001H
初始化命令字ICW4=09H
09H =0000 1001
D7~D5:0000 ICW4的标示码D4:0 一般嵌套
D3~D2:10 8259A工作与缓冲方式D1:0正常EOI
D0:1 8086、8088系统
MOV AL,09H
OUT DX,AL
(4)、写操作命令字OCW1(设置和清除中断屏蔽寄存器),IR7~IR6屏蔽,IR0引脚产生的中断请求不被屏蔽端口地址:0F001H
写操作命令字OCW1=FEH
FEH =1111 1110
D7~D1:1111 111 不允许IR7~IR6中断请求被屏蔽
D0:0 IR0引脚产生的中断请求不被屏蔽
MOV AL,0FEH
OUT DX,AL
(5)、将中断服务程序的入口地址(CS:IP)写入中断向量表,中断向量表的地址,由于中断类型号是08H,则中断向量表地址=08H*4=20H
WriIntver PROC NEAR
PUSH ES
MOV AX,0
MOV ES,AX
MOV DI,20H
LEA AX,INT_0
STOSW
MOV AX,CS
STOSW
POP ES
WriIntver ENDP
(6)中断服务程序的功能:每当IR0引脚有一个产生一个请求,Counter中的内容+1,计算执行中断服务程序的次数
INT_0: PUSH DX
PUSH AX
MOV AL,Counter
ADD AL,1
DAA
MOV Counter,AL
MOV ReDisplayFlag,1
MOV DX,IO8259_0
MOV AL,20H
OUT DX,AL
POP AX
POP DX
IRET
(7)、将counter代表执行中断服务程序的次数,显示在数码管的后2个上LedDisplay PROC NEAR
MOV AL,Counter
MOV AH,AL
AND AL,0FH
MOV Buffer,AL
AND AH,0F0H
ROR AH,4
MOV Buffer + 1,AH
MOV Buffer + 2,10H ;高六位不需要显示
MOV Buffer + 3,10H
MOV Buffer + 4,10H
MOV Buffer + 5,10H
MOV Buffer + 6,10H
MOV Buffer + 7,10H
LEA SI,Buffer
CALL Display8
RET
LedDisplay ENDP
四、实验数据和结果分析
4.1 实验结果数据
实验结果: 1
4.2 结果数据分析
由逻辑电路图可知,外设的中断请求信号由IR2端引入。

(1)当拨动一下单脉冲(上升沿)时即IRO引脚产生一个中断请求信号,则IRR寄存器的D0位置1
(2)PR对中断优先权和中断屏蔽寄存器的状态进行判断,由于IRR寄存器只要D0位为1,且为允许中断状态,,则向CPU发高电平信号INT,请求中断服务。

(3)CPU响应中断时,送回应答信号 #INTA 。

(4)8259A接到来自CPU的第一个信号#INTA时,当前中断服务寄存器(ISR)中相应位置位,并把IRR中相应位复位。

同时,8259A准备向数据总线发送中断类型号。

(5)根据中断类型好08H,得到中断向量地址20H,通过中断向量表的地址可以得到中断服务程序的入口地址,则执行中断服务程序,中断服务程序的功能是,每执行一次中断服务程序counter+1=1,在中断服务程序结束时发送EOI命令,将ISR寄存器清0.
注意counter初始值为0
(6)将counter=1(执行中断服务程序的次数)显示在数码管上
五、实验问题分析、思考题与小结
5.1实验问题分析、思考题
(1)中断类型码、中断向量地址、以及中断服务程序的入口地址
(2)中断向量地址=中断类型号(08H)*4
(3)中断服务程序的入口地址在中断向量表中
(4)断点不固定
5.2实验小结
通过此次实验,使我熟悉了使用断点、单步进入、单步运行找到断点处,了解了每次中断结束,ISR(中断服务寄存器)的相应位清零,即复位,以及响应中断前要做的工作:关闭中断,保护断点,写中断向量表,即中断服务程序的段基址写入CS、偏移地址写入IP,以便在执行中断服务程序时,找到其入口地址。

对于这次实验我明白了所谓中断,是指CPU在正常运行时由于程序的预先安排或内外部事件引起CPU暂行正在运行的程序,转到为预先安排的事件或内外部事件服务的程序中去,服务程序执行结束后再返回到暂行的程序继续执行。

六、其它
得分(百分制)。

相关文档
最新文档