8259A中断控制器实现
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中断控制器应用实验分析报告一、填写补充实验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中断实验实验报告实验报告实验名称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中断控制器实验报告作者:一实验目的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工作原理是指8259A可编程中断控制器的工作原理。
8259A是一种用来处理中断信号的芯片,它可以管理多个设备的中断请求。
在8259A中,有8个中断请求线(IRQ0~IRQ7),这些中断
请求线可以连接到外部设备。
当一个设备需要通过中断通知CPU时,它会将相应的IRQ线拉低,8259A会将这个信号传
递给CPU。
8259A使用级联方式来管理多个设备的中断请求。
具体来说,它有一个主片和一个或多个从片。
主片连接到CPU,而从片
连接到各个外部设备。
主片负责管理整个中断系统,从片负责管理各自的设备的中断请求。
当一个设备的IRQ线被拉低时,从片会将这个信息传递给主片。
主片会根据中断请求的优先级确定要处理的中断请求,并将CPU相应的引脚拉高,通知CPU中断发生。
CPU会停止当前的工作,转而执行与中断相关的处理程序。
在8259A中,还有一些寄存器用来存储中断请求的相关信息。
这些寄存器可以被CPU读取和写入,以实现对8259A的配置
和控制。
总的来说,8259A的工作原理是通过管理中断请求线和级联连接的方式,实现外部设备与CPU之间的中断通信。
它可以在
多个设备同时发生中断时,决定中断的优先级,并通知CPU 执行相应的中断处理程序。
实验四 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。
8259A中断控制器
– 如果进入的中断申请比 ISR 中记录的中断优先级高, » 则通过 8259A 的 INT 引脚向 CPU发出中断请求信号; – 如果进入的中断申请不比 ISR 中记录的中断优先级高, » 同级或低级,则不向 CPU 发中断请求信号。
① 中断申请寄存器IRR 锁存外部的中断申请。 • 若 IR0~IR7 引脚上有中断申请,则将 IRR 相应位置1
(1) 处理外设中断申请,决定是否向 处理外设中断申请,决定是否向CPU发中断申请信号 发中断申请信号 ① 中断申请寄存器IRR 锁存外部的中断申请。 • 若 IR0~IR7 引脚上有中断申请,则将 IRR 相应位置1 ② 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请 是否进入优先级裁决器 PR。 • IMR对应位为 0,允许中断申请进入优先级裁决器,
第二个 中断响应周期 T1 T2 T3 T4
向量类型
三、8088CPU的中断优先权 8088CPU的中断优先权
• 优先级 • 高
• 非屏蔽中断 • 可屏蔽中断
低
• 内中断 ( 除零,INT 指令,断点,INTO指令 )
•
低
内中断( 单步 )
当有多个中断源同时产生中断申请时, 当有多个中断源同时产生中断申请时, CPU先响应优先权最高的中断源,再 先响应优先权最高的中断源, 先响应优先权最高的中断源 响应优先级较低的中断源。 响应优先级较低的中断源。
– ISR中的某位为1,表示CPU正在响应此级中断, » 即正在执行此中断源的中断子程; – ISR中的某位为 0,表示CPU没有或已响应完此级中断, » 即不在执行此中断源的中断子程 总线 D0 ~ D7 A0 A5 ~ A9 IOR IOW INTA INTR 片 选 CS 译 码 RD WR INTA INT 数据线 A0 D0 ~ D7
8259A中断实验报告
实验十一8259A中断实验一、实验目的1.学习8086/8088与8259A的连接与控制方法, 掌握其工作原理。
2、完成程序设计题, 学会编写中断服务程序。
二、实验原理8259A是一种可编程序中断控制器, 与8088/86微机兼容, 能处理8级向量优先权中断, 亦可以通过级联构成64级向量优先权中断系统。
具有可编程控制中断方式, 并能分别屏蔽各个中断请求。
通过4个初始化命令字(ICW1——ICW4)及3个操作命令字(OCW1——OCW3)使用8259A可编程序中断控制器。
三、实验内容用8066/86控制8259可编程中断控制器, 实现对外部中断的响应和处理。
要求程序中对每次中断进行计数, 并将计数结果用8255的PA口输出到LED显示。
四、实验方法与步骤(1)根据要求编写程序mode equ 82hpa8255 equ 8000hctl8255 equ 8003hicw1 equ 00010011bicw2 equ 00100000bicw4 equ 00000001bocw1 equ 11111110bcs8259a equ 09000hcs8259b equ 09001hdata segmentcnt db 0data endscode segmentassume cs:code,ds:dataienter proc nearpush axpush dxmov dx,pa8255inc cntmov al ,cntout dx,almov dx,cs9259amov al,20hout dx,alpop dxpop axiretienter endpiinit proc nearmov dx ,cs8259amov al ,icw1out dx ,almov dx, cs8259bmov al,icw2out dx,almov al,icw4out dx,almov al,ocw1out dx,alretiinit endpstart proc nearmov dx,ctl8255mov al,modeout dx,alclimov ax,0mov ds,axmov bx,4*icw2mov ax,codeshl ax,4add ax,offset ientermov [bx],axmov ax,0inc bxinc bxmov [bx],axcall iinitmov ax,datamov ds,axmov cnt,0mov al,cntmov dx,pa8255out dx,alstilp:nopjmp lpstart endpcode endsend start(2)根据电路连线。
接口技术实验-8259中断控制器
接口技术实验报告实验四:8259中断控制器实验一、实验目的1、掌握8259中断控制器的接口方法。
2、掌握8259中断控制器的应用编程。
二、实验设备微机原理实验箱、8086CPU模块。
三、实验内容用脉冲发生器作为中断源,每按一次脉冲发生器的按键即产生一次中断。
在中断服务程序中,通过74LS273输出一个数据,以点亮与中断源相对应位置的LED。
四、实验原理介绍8259中断控制器电路本实验用到三部分电路:电平开关电路、简单I/O口扩展电路和8259中断控制器电路。
电平开关电路、简单I/O口扩展电路参看实验一。
8259中断控制器电路:如上图所示,其中:CS是8259芯片的片选插孔,IR0~IR7是8259的中断申请输入插孔。
DBUS是系统8位数据总线。
INT插孔是8259向8086CPU的中断申请线,INTA是8086的中断应答信号。
五、实验步骤1.断电连接导线,连好实验线路图。
1)8259的INT连8088的INTR;2)8259的INTA连8088的INTA;3)“”插孔和8259的3号中断IR3插孔相连,“”端初始为低电平;4)8259的CS端接FF80H孔,74LS273的CS端接FF90H孔。
5)Q0~Q7 L1~L82.编译调试程序3.全速运行,观察实验现象六、实验提示1、8259芯片介绍中断控制器8259A是专为控制优先级中断而设计的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。
因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。
即中断结构可以由用户编程来设定。
同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。
2、8086的中断系统是向量中断方式。
内存中特定位置有一中断向量表,表内存有不同中断类型的中断向量(中断入口地址)。
不同中断类型的中断向量在表内有对应的偏移地址,其计算方法是:中断类型*4。
8259A中断控制器实验
8259A中断控制器实验一、实验目的与要求了解8259A的内部结构、工作原理;了解8259A与8088的接口逻辑;掌握对8259A的初始化编程方法,了解8088是如何响应中断、退出中断的。
复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。
二、实验设备STAR系列实验仪一套、PC机一台三、实验内容1、编制程序:拨动单脉冲开关,“”送给8259A的IR0,触发中断,8088计数中断次数,显示于F4区的数码管上四、实验原理图五、实验步骤1、连线说明:区:单脉冲3、上下拨动单脉冲开关,拨动二次,产生一个“”,观察结果,数码管上显示的次数与拨动开关次数是否对应。
六、演示程序.MODEL TINYEXTRN Display8:NEARIO8259_0 EQU 0F000HIO8259_1 EQU 0F001H.STACK 100.DATABUFFER DB 8 DUP(?)Counter DB ?ReDisplayFlag DB 0.CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPCALL Init8259CALL WriIntverMOV Counter,0 ;中断次数MOV ReDisplayFlag,1 ;需要显示STI ;开中断START1: CMP ReDisplayFlag,0JZ START1CALL LedDisplayMOV ReDisplayFlag,0JMP START1Init8259 PROC NEARMOV DX,IO8259_0MOV AL,13HOUT DX,ALMOV DX,IO8259_1MOV AL,08HOUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0FEHOUT DX,ALRETInit8259 ENDPWriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA AX,INT_0STOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPLedDisplay PROC NEARMOV AL,CounterMOV AH,ALAND AL,0FHMOV Buffer,ALAND AH,0F0HROR AH,4MOV Buffer + 1,AHMOV Buffer + 2,10H ;高六位不需要显示MOV Buffer + 3,10HMOV Buffer + 4,10HMOV Buffer + 5,10HMOV Buffer + 6,10HMOV Buffer + 7,10HLEA SI,BufferCALL Display8RETLedDisplay ENDPINT_0: PUSH DXPUSH AXMOV AL,CounterADD AL,1DAAMOV Counter,ALMOV ReDisplayFlag,1MOV DX,IO8259_0MOV AL,20HOUT DX,ALPOP AXPOP DXIRETEND START七、实验扩展及思考1、从8259A收到上升沿,到8088响应中断,试画这个过程的时序图。
可编程中断控制器8259A
2021年1月30日星期六
图1-11 ICW2命令字
3)ICW3 ICW3用于8259A的级联,如果系统中只有一片8259A,就不 用ICW3;若含有多片,则主片8259A和从片8259A都需要写入 ICW3。A0=1,表示此命令必须写入奇地址中。主从片的写入格 式不同,如图1-12所示。
2021年1月30日星期六
可编程中断控制器8259A
1.1 8259A中断控制器内部逻辑结构
2021年1月30日星期六
图1-7 8259A内部结构图
1.2 8259A中断控制器外部引脚
8259A 是双列直插式芯片,共28个引脚,如图1-8所示。
2021年1月30日星期六
图7 88259A引脚图
1.3 8259A的工作方式
图1-12 ICW3命令字
4)ICW4 ICW4为中断结束方式命令字,写入格式如图1-13所示。ICW4
在初始化时不一定写入,只有当ICW1的D0位为1时才需写入。
2021年1月30日星期六
图1-13 ICW4命令字
5)PC/AT中断控制器的初始化编程 在PC/AT中,8259A以两片级联的方式管理15级向量中断, 它们与总线控制器的硬件连接如图1-14所示。
2021年1月30日星期六
图1-14 8259A的级联与总线控制器的连接
2.操作命令字OCW 1)OCW1 OCW1是中断屏蔽操作命令字,其每一位可以对相应的中断请求输 入线进行屏蔽,是针对有多个中断源的存在而设置的,如图1-15所示。
2021年1月30日星期六
图1-15 OCW1命令字
2)OCW2 OCW2用于控制中断结束、自动循环和特殊循环的操作方式。图116说明了它的功能。D4和D3必须为0,作为写入OCW2的标志,其他各 位含义如下:
第九章 中断控制器8259A(9.1)
中断类型码:
D7D6D5D4D3 D2D1D0 0 0 0 0 0 1 … 1 1 1
2. 优先级的管理方式
(1)完全嵌套方式
在对8259进行初始化后,没有设置其它优先级方式, 则自动按此方式工作.即这是8259A默认的优先权设置方 式,在全嵌套方式下,8259A所管理的8级中断优先权是 固定不变的,其中IR0的中断优先级最高,IR7的中断优 先级最低。 特点:在全嵌套方式中,中断请求按优先级IR0~IR7级 进行处理,IR0级中断的优先级最高。 当一个中断被响应时,中断类型码被放到数据总线上, ISR中的对应位ISn被置1,然后进入中断服务程序。一般情 况下(除了中断自动结束方式外),在CPU发出中断结束 命令(EOI)前,此对应位一直保持“1”。
4.
结束中断处理的方式(EOI)
(1)中断自动结束方式: 用于系统中只有一片8259A,多个中断不会嵌 套的情形。系统一进入中断处理,就将当前中断服 务寄存器ISR的对应位清除。对8259A来说,好像已 经结束了当前中断。 在命令字ICW4中将AEOI(D1)位置“1”。 (2)一般的中断结束方式: 用在全嵌套的情形。 CPU用OUT指令往8259A偶地址发一个EOI命令, 8259A将使ISR最高非零IS位清0。结束当前正在处理 的中断。
⑦优先权判别器PR:用以比较正在处理的中断和刚刚进 入的中断请求之间的优先级别,以决定是否产生多重中断 或中断嵌套。 ⑧ 控制逻辑电路:对整个芯片内部各部件的工作进行协 调和控制。
9.1.2、8259A芯片的工作方式
8259A有多种工作方式,这些工作方式, 可以通过编程设置或改变。 下面,我们进行分类介绍。
CPU响应中断后, 请求中断的中断源 中,优先级最高的 中断源,在中断服 务寄存器ISR中的相 应位置位,而且把 它的中断矢量送至 系统数据总线,在 此中断源的中断服 务完成之前,与它 同级或优先级低的 中断源的中断请求 被屏蔽只有优先级 比它高的中断源的 中断请求才是有效 的,从而出现中断 嵌套。
利用8259A中断实现LED灯和数码管显示实验
实验三:利用8259A中断实现LED灯和数码管显示实验安全0901 王宇航 09283020实验报告1.实验目的:了解8259中断控制器的基本使用,掌握中断程序编程技术。
同时使同学掌握中断和其它接口芯片配合来完成某一特定任务的方法。
2.实验步骤:8254A的OUT1输出接到8259A的MIR5上,每秒产生一次中断信号向8259A发出中断请求,在中断程序里将连接在8255A口的LED灯按照中断次数二进制点亮(即中断一次L0亮,中断两次L1亮,中断三次L1L0亮,中断四次L2亮……)。
同时在数码管低位上显示中断次数。
满10次后停止。
1.8254A在主程序中初始化。
CLK0工作在方式3,则控制字为00110110B,计数常数设为1000;CLK1工作在方式3,则控制字为01110110B,计数常数设为1000,则OUT1输出为1HZ 的方波。
2.8255A在使用前需要在主程序中初始化。
A口方式0输出,B口方式0输入,则控制字为10000011B。
3.8259A不用初始化,但在程序中需要包含以下几个部分:(1)8259A的MIR5对应的中断向量号为35H,需用此来设置中断入口地址。
(2)设置中断入口地址之后,需设置中断屏蔽字OCW1,使IR5请求被允许,其他请求被禁止。
(3)中断服务程序结束之前写OCW2,送中断结束命令EOI。
4.中断服务程序的主要功能是LED指示灯和数码管显示。
图3-1 实验连线图注意:实验系统的主8259A的片选信号为20H。
3.实验代码:.Model small.386DATA SEGMENTDATA0 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;分别对应字符0-9 COUNT DB 10 ;计数值为10DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX ;DS装入段基址LEA SI,DA TA0 ;取操作数DA TA0的16位偏移地址送到寄存器SI中 ;8254初始化MOV DX,203H ;8254命令口MOV AL,00110110B ;控制字--0通道、方式3(方波发生器)、二进制计数 OUT DX,AL ;将控制字写入命令口MOV DX,200H ;0通道的数据口MOV AX,1000 ;计数常数=1000OUT DX,AL ;先写入低字节MOV AL,AHOUT DX,AL ;再写入高字节MOV DX,203H ;8254命令口MOV AL,01110110B ;控制字1通道、方式3(方波发生器)、二进制计数 OUT DX,ALMOV DX,201H ;1通道的数据口MOV AX,1000 ;计数常数=1000OUT DX,ALMOV AL,AHOUT DX,AL ;8255初始化MOV DX,213H ;8255命令口MOV AL,10000011B ;8255控制字--A口方式0输出,B口方式0输入OUT DX,AL ;将控制字写入命令口;中断入口地址设置(用串指令)CLI ;关中断MOV AX,0MOV ES,AX ;置附件段基地址为0MOV DI,4*35H ;置附件段偏移地址到DIMOV AX,OFFSET INT_35 ;置中断程序首地址的偏移量到AXCLDSTOSW ;填首地址的偏移量到中断地址表MOV AX,SEG INT_35 ;置中断程序的段基地址到AXSTOSW ;填段基地址到中断地址表IN AL,21H ;读中断屏蔽寄存器IMRAND AL,11011111B ;设置中断屏蔽字OCW1,IR5请求被允许,其他请求被禁止 OUT 21H,AL ;将OCW1写入IMR中STI ;开中断WAIT:CMP COUNT,10 ;判断10次中断是否结束JNZ WAIT ;未结束,等待CLI ;10次中断后,关中断MOV AH,4CH ;结束,返回DOSINT 21H;延时程序DELAY PROCPUSH CX ;保护现场MOV CX,100H ;延时时间为处理一次CX自减1的时间乘以100HDELAY1: LOOP DELAY1POP CX ;恢复现场RET ;返回到调用处,继续执行DELAY ENDP;中断服务程序INT_35 PROCPUSH DX ;保护现场PUSH AXPUSH CXCLI ;关中断MOV AX,DATAMOV DS,AXINC COUNT ;中断次数加1MOV AL,COUNT ;将中断次数写入AL中MOV DX,210H ;8255数据口OUT DX,AL ;将中断次数输出到LED显示灯MOV CX,680HCMP COUNT,10JB GOON-randomirandom; ;低于10时跳转到GOONCMP COUNT,10JNZ L1 ;不等于10(此处即大于10)时跳转到L1 SUB SI,9 ;第10次中断时SI减去9,即归0L1:MOV AL,[SI] ;查表,对应0-9MOV DX,220H ;地址译码器连接六位数码管电路的数据口OUT DX,ALMOV DX,221H ;数据口MOV AL,00000001B ;指定六位数码管在最低位显示0-9OUT DX,ALCALL DELAY ;调用延时程序MOV AL,06H ;对应字符'1'MOV DX,220HOUT DX,ALMOV DX,221HMOV AL,00000010B ;指定六位数码管在次低位显示1OUT DX,ALCALL DELAYLOOP L1 ;CX=680HINC SI ;SI加1JMP L ;跳转至LGOON:INC SI ;SI加1MOV AL,[SI] ;查表MOV DX,220HOUT DX,ALMOV DX,221HMOV AL,00000001BOUT DX,ALL:MOV AL,20H ;写OCW2,送中断结束命令EOIOUT 20H,ALSTI ;开中断POP CX ;恢复现场POP AXPOP DXIRET ;中断返回INT_35 ENDPCODE ENDSEND START4.试验流程图:主程序流程图中断服务程序流程图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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暂行正在运行的程序,转到为预先安排的事件或内外部事件服务的程序中去,服务程序执行结束后再返回到暂行的程序继续执行。
六、其它
得分(百分制)。