1、实验五 使用 8259A 的单级中断控制实验一、实验目的1、掌握中断控制器 8259A 与微机接口的原理和方法。2、掌握中断控制器 8259A 的应用编程。二、预备知识1、8259A 的内部结构8259A 是专为控制优先级中断而设计的芯片。它将中断源按优先级排队、辨认中断源、提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理 8 级中断。如图 519 所示,它由中断请求寄存器(IRR)、优先级分析器、 中断服务寄存器(ISR)、中断屏蔽寄存器(IMR)、数据总线缓冲器、读写控制电路和级联缓冲器、比较器组成。图 519中断请求寄存器:寄存所有要求服务的请求 IR0IR7。中断服务寄
2、存器:寄存正在被服务的中断请求。 中断屏蔽寄存器:存放被屏蔽的中断请求,该寄存器的每一位表示一个中断号, 该位为1,屏蔽该号中断,否则开放该号中断。数据总线缓冲器:是双向三态的,用以连接系统总线和 8259A 内部总线, 通过它可以由CPU 对 8259A 写入状态字和控制字。读写控制电路:用来接受 I/O 命令,对初始化命令和操作命令字寄存器进行写入,以确定8259A 的工作方式和控制方式。级联缓冲器/比较器:用于多片 8259A 的连接,能构成多达 64 级的矢量中断系统。2、8259A 编程及初始化(1) 写初始化命令字* 写初始化命令字 ICW1(A0=0),以确定中断请求信号类型,清
3、除中断屏蔽寄存器,中断优先级排队和确定系统用单片还是多片。* 写初始化命令字 ICW2,以定义中断向量的高五位类型码。* 写初始化命令字 ICW3,以定义主片 8259A 中断请求线上 IR0IR7 有无级联的 8259A从片。 第 i 位=0,表明 IRi 引脚上无从片第 i 位=1,表明 IRi 引脚上有从片* 写初始化命令 ICW4,用来定义 8259A 工作时用 8085 模式,还是 8088 模式,以及中断服务寄存器复位方式等。(2) 写控制命令字* 写操作命令字 0CW1,用来设置或清除对中断源的屏蔽。第 i 位=0,对应的中断请求 IRi 开放第 i 位=1,对应的中断请求 IR
4、i 屏蔽注: OCW1 如不写,则在初始化命令写入后,OCW1 为全开放状态。* 操作命令字 OCW2,设置优先级是否进行循环、循环方式及中断结束方式。注: 8259A 复位时自动设置 IR0 优先权最高,IR7 优先权最低。* 操作命令字 OCW3,设置查询方式、特殊屏蔽方式以及读取 8259 中断寄存器的当前状态。(3) 8259A 查询字通过 OCW3 命令字的设置,可使 CPU 处于查询方式,随时查询 8259A 有否中断请求, 有则转入相应的中断服务程序。三、实验内容本系统中已设计有一片 8259A 中断控制芯片,工作于主片方式,8 个中断请求输入端IR0IR7 对应的中断型号为 8
5、F,其和中断矢量关于如下表 53 所示。表 53根据实验原理图 520(见下页) ,8259A 和 8088 系统总线直接相连,8259A 上连有一系统地址线 A0,故 8259A 有 2 个端口地址, 本系统中为 20H、21H。 20H 用来写 ICW1, 21H 用来写 ICW2、 ICW3、ICW4,初始化命令字写好后, 再写操作命令字。OCW2、OCW3 用口地址 20H,OCW1 用口地址 21H。图 514 中,使用了 3 号中断源,IR3插孔和 SP 插孔相连,中断方式为边沿触发方式,每按一次 AN 按钮产生一次中断信号,向8259A 发出中断请求信号。如果中断源电平信号不符规
6、定要求则自动转到 7 号中断,显示“Err”。CPU 响应中断后,在中断服务中, 对中断次数进行计数并显示,计满 5 次结束,显示器显示“8259Good” 。四、实验线路连接8259A 的 IR3 插孔和 SP 插孔相连。SP 插孔初始电平为低电平。图 520五、实验软件框图六、实验软件清单CODE SEGMENTASSUME CS:CODEINTPORT1 EQU 0020HINTPORT2 EQU 0021HINTQ3 EQU INTREEUP3INTQ7 EQU INTREEUP7CONTPORT EQU 00DFHDATAPORT EQU 00DEHDATA0 EQU 0580HDA
7、TA1 EQU 0500HDATA2 EQU 0508HDATA3 EQU 0518HDATA4 EQU 0520HORG 1800HSTART: JMP Tint1Tint1: CALL FORMATCLDMOV DI,DATA0MOV CX,08HXOR AX,AXREP STOSWMOV SI,DATA3CALL LEDDISP ;DISP 8259-1MOV AX,0HMOV DS,AXCALL WRINTVER ;WRITE INTRRUPTMOV AL,13HMOV DX,INTPORT1OUT DX,ALMOV AL,08HMOV DX,INTPORT2OUT DX,ALMOV
8、AL,09HOUT DX,ALMOV AL,0F7HOUT DX,ALMOV BYTE PTR DS:0601H,01H ;TIME=1STIWATING: JMP WATINGWRINTVER:MOV AX,0HMOV ES,AXMOV DI,002CHLEA AX,INTQ3STOSWMOV AX,CSSTOSWMOV DI,003CHLEA AX,INTQ7STOSWMOV AX,CSSTOSWRETINTREEUP3:CLIMOV AL,DS:0601HCALL CONVERSMOV SI,DATA0CALL LEDDISPDMOV AL,20HMOV DX,INTPORT1OUT D
9、X,ALADD BYTE PTR DS:0601H,01HCMP BYTE PTR DS:0601H,06HJNA INTRE1MOV SI,DATA4CALL LEDDISPINTRE3: JMP INTRE3CONVERS:MOV BH,0HAND AL,0FHMOV BL,ALMOV AL,CS:BX+DATA2MOV BX,DATA0MOV DS:BX,ALRETINTRE1: MOV AL,20HMOV DX,INTPORT1OUT DX,ALSTIIRETINTREEUP7: CLIMOV SI,DATA1CALL LEDDISPMOV AL,20HMOV DX,INTPORT1O
10、UT DX,ALIRETLEDDISP:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:0600H,00LED1: CMP BYTE PTR DS:0600H,07HJA LED2MOV BL,DS:0600HMOV BH,0HMOV AL,CS:BX+SIMOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:0600H,01HJNZ LED1LED2: RETLEDDISPD:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:0600H,00LEDD1: CMP B
11、YTE PTR DS:0600H,07HJA LEDD2MOV BL,DS:0600HMOV BH,0HMOV AL,DS:BX+SIMOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:0600H,01HJNZ LEDD1LEDD2: RETFORMAT: MOV BX,0MOV WORD PTR DS:BX+0500H,5050HADD BX,2MOV WORD PTR DS:BX+0500H,0079HADD BX,2MOV WORD PTR DS:BX+0500H,0000HADD BX,2MOV WORD PTR DS:BX+0500H,0000HADD B
12、X,2MOV WORD PTR DS:BX+0500H,063FHADD BX,2MOV WORD PTR DS:BX+0500H,4F5BHADD BX,2MOV WORD PTR DS:BX+0500H,6D66HADD BX,2MOV WORD PTR DS:BX+0500H,077DHADD BX,2MOV WORD PTR DS:BX+0500H,6F7FHADD BX,2MOV WORD PTR DS:BX+0500H,7C77HADD BX,2MOV WORD PTR DS:BX+0500H,5E39HADD BX,2MOV WORD PTR DS:BX+0500H,7179HA
13、DD BX,2MOV WORD PTR DS:BX+0500H,4006HADD BX,2MOV WORD PTR DS:BX+0500H,4040HADD BX,2MOV WORD PTR DS:BX+0500H,6D6FHADD BX,2MOV WORD PTR DS:BX+0500H,7F5BHADD BX,2MOV WORD PTR DS:BX+0500H,3F5EHADD BX,2MOV WORD PTR DS:BX+0500H,5C3FHADD BX,2MOV WORD PTR DS:BX+0500H,6D6FHADD BX,2MOV WORD PTR DS:BX+0500H,7F5BHRETCODE ENDSEND START七、实验步骤1、按图 520 连好实验线路2、 运行实验程序在系统显示“DVCC 86H”状态下,按任意键,系统显示命令提示符“” 。按 GO 键,显示“1000 XX”输入 F000 : B2E0按 EXEC 键, 在 DVCC8086H 上显示“82591” 。3、 按 AN 按键,每按二次产生一次中断,在显示器左边一位显示中断次数, 满 5 次中断,显示器显示“8259 good” 。