姓名院专业班年月日实验内容8259中断控制器实验指导老师【实验目的】(1)学习中断控制器8259的工作原理。
(2)掌握可编程控制器8259的应用编程方法。
【试验设备】PC微机一台、TD-PIT+实验系统一套。
【实验内容】(1) 编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示一个字符。
(2) 编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示“9”,中断显示6次后退出。
【实验原理】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内部寄存器的读出命令。
图6-1 8259内部结构和引脚图姓名院专业班年月日实验内容8259中断控制器实验指导老师图6-2(a) ICW1格式图6-2(b) ICW2格式图6-2(c) ICW3格式图6-2(d) ICW4格式姓名院专业班年月日实验内容8259中断控制器实验指导老师图6-3 OCW命令字格式2. 8259寄存器及命令的控制访问在硬件系统中,8259A仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的器和命令字。
对寄存器和命令的访问控制表如表6-1所示。
表6-1 8259寄存器及命令的访问控制3. PC微机系统中的8259在80x86系列PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表6-2示。
两片8259A的端口地址为:主片8259使用020H和021H两个端口;从片使用0A0H和0A1H两个端口。
系统初始化两片姓名院专业班年月日实验内容8259中断控制器实验指导老师8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级~15级,然后是3级~7级。
在扩展系统总线上的INTR对应的中断线就是PC机保留中断其中的一个。
对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。
表6-2 PC微机系统中的硬件中断中断号功能中断向量号中断向量地址主8259A IRQ0 日时钟/计数器0 08H 0020H~0023H主8259A IRQ1键盘09H 0024H~0027H主8259A IRQ2接从片8259A 0AH 0028H~002BH主8259A IRQ3串行口2 0BH 002CH~002FH主8259A IRQ4串行口1 0CH 0030H~0033H主8259A IRQ5并行口2 0DH 0034H~0037H主8259A IRQ6软盘0EH 0038H~003BH主8259A IRQ7并行口1 0FH 003CH~003FH从8259A IRQ8实时钟70H 01C0H~01C3H从8259A IRQ9保留71H 01C4H~01C7H从8259A IRQ10保留72H 01C8H~01CBH从8259A IRQ11保留73H 01CCH~01CFH从8259A IRQ12保留74H 01D0H~01D3H从8259A IRQ13协处理器中断75H 01D4H~01D7H从8259A IRQ14硬盘控制器76H 01D8H~01DBH从8259A IRQ15保留77H 01DCH~01DFH 【实验说明及步骤】本实验要求使用总线上INTR中断请求线完成一次单中断应用实验。
中断处理程序完成在屏幕上的显示字符“9”。
实验前先运行CHECK程序,得到INTR所对应的中断号、相应的初始化命令字寄存器ICW及操作命令字寄存器OCW的地址、开屏蔽的命令字、中断矢量地址和PCI卡中断控制寄存器INTCSR的地址。
得到这些信息后就可以开始设计实验了。
参考程序流程如图6-5所示。
实验步骤如下。
(1)确认从PC机引出的两根扁平电缆已经连接在实验平台上;(2)首先运行CHECK程序,查看INTR中断号及相关信息;(3)参考实验流程图编写程序,然后编译链接;(4)将单次脉冲单元的KK1+连接到系统总线上的INTR;(5)运行程序,按动KK1+按键,观察中断是否产生。
姓名院专业班年月日实验内容8259中断控制器实验指导老师图6-5 8259终端应用实验(1)参考程序流程图【汇编源程序】实验1:INTR_IVADD EQU 01CCH INTR_0CW1 EQU 0A1H INTR_0CW2 EQU 0A0H INTR_IM EQU 0F7H PCI_INTCSR EQU 7878H STACK1 SEGMENT STACKDW 256 DUP(?) STACK ENDSDATA SEGMENT CS_BAK DW ?IP_BAK DW ?IM_BAK DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE START:MOV AX,DATAMOV DS,AXCLIMOV AX,PCI_INTCSR姓名院专业班年月日实验内容8259中断控制器实验指导老师MOV AX,1F00HOUT DX,AXADD DX,2MOV AX,003FHMOV DX,AXMOV AX,0000HMOV ES,AXMOV DI,INTR_IVADDMOV AX,ES:[DI]MOV IP_BAK,AXMOV AX,OFFSET MYISRMOV ES:[DI],AXMOV DI,2MOV AX,ES:[DI]MOV CS_BAK,AXADD DI,2MOV AX,ES:[DI]MOV CS_BAK,AXMOV AX,SEG MYISRMOV ES:[DI],AXMOV DX,INTR_0CW1IN AL,DXMOV IM_BAK,ALADD AL,INTR_IMOUT DX,ALSTIWAIT1:MOV AH,1INT 16HJZ WAIT1QUIT: CLIMOV DX,PCI_INTCSRMOV AX,0000HOUT DX,AXMOV AX,0000HMOV ES,AXMOV DI,INTR_IVADDMOV AX.IP_BAKMOV ES:[DI],AXMOV DI,2MOV AX,CS_BAKMOV ES:[DI],AXMOV DX,INTR_0CW1MOV AL,IM_BAKOUT DX,ALSTIMOV AX,4C00HINT 21HMYISR PROC NEARMOV AL,39HMOV AH,0EHINT 10HMOV AL,20HINT 10HOVER:MOV DX,PCI_INTCSR ADD DX,2MOV AH,003FHOUT DX,AXMOV DX,INTR_0CW2MOV AL,20HOUT DX,ALMOV AL,20HOUT 20H,ALIRETMYISR ENDPCODE ENDSEND START姓名院专业班年月日实验内容8259中断控制器实验指导老师实验2:INTR_IVADD EQU 01CCH INTR_0CW1 EQU 0A1H INTR_0CW2 EQU 0A0H INTR_IM EQU 0F7H PCI_INTCSR EQU 7878H STACK1 SEGMENT STACKDW 256 DUP(?) STACK ENDSDATA SEGMENTCS_BAK DW ?IP_BAK DW ?IM_BAK DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE START:MOV AX,DATAMOV DS,AXMOV CX,0CLIMOV AX,PCI_INTCSRMOV AX,1F00HOUT DX,AXADD DX,2MOV AX,003FHMOV DX,AXMOV AX,0000HMOV ES,AXMOV DI,INTR_IVADDMOV AX,ES:[DI]MOV IP_BAK,AXMOV AX,OFFSET MYISRMOV ES:[DI],AXMOV DI,2MOV AX,ES:[DI]MOV CS_BAK,AXADD DI,2MOV AX,ES:[DI]MOV CS_BAK,AXMOV AX,SEG MYISRMOV ES:[DI],AXMOV DX,INTR_0CW1IN AL,DXMOV IM_BAK,ALADD AL,INTR_IMOUT DX,ALMOV CX,0STIWAIT1:CMP CX,6JNZ WAIT1 QUIT: CLIMOV DX,PCI_INTCSRMOV AX,0000HOUT DX,AXMOV AX,0000HMOV ES,AXMOV DI,INTR_IVADDMOV AX.IP_BAKMOV ES:[DI],AXMOV DI,2MOV AX,CS_BAKMOV ES:[DI],AXMOV DX,INTR_0CW1MOV AL,IM_BAKOUT DX,ALSTIMOV AX,4C00HINT 21HMYISR PROC NEARINC CXMOV AL,39HMOV AH,0EHINT 10H姓名院专业班年月日实验内容8259中断控制器实验指导老师MOV AL,20HINT 10HOVER:MOV DX,PCI_INTCSR ADD DX,2MOV AH,003FHOUT DX,AXMOV DX,INTR_0CW2MOV AL,20HOUT DX,ALMOV AL,20HOUT 20H,ALIRET MYISR ENDP CODE ENDSEND START【实验结果】实验1:每按一次KK1+按键,显示器上显示一个字符“9”;实验2:每按一次KK1+按键,显示器上显示一个字符“9”,6次后退出。