最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

8259中断控制实验报告

来源:动视网 责编:小OO 时间:2025-10-01 17:16:38
文档

8259中断控制实验报告

8259中断控制实验一.实验目的1.掌握8259中断控制器的工作原理。2.掌握系统总线上IR1,IR2中断请求的应用编程方法。二.实验设备IA-32架构的微机系统及应用教学平台一套。三.实验原理3.1中断控制器8259简介中断控制器8259是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需
推荐度:
导读8259中断控制实验一.实验目的1.掌握8259中断控制器的工作原理。2.掌握系统总线上IR1,IR2中断请求的应用编程方法。二.实验设备IA-32架构的微机系统及应用教学平台一套。三.实验原理3.1中断控制器8259简介中断控制器8259是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需
                                8259中断控制实验

一.实验目的                                               

1. 掌握8259 中断控制器的工作原理。

2. 掌握系统总线上IR1,IR2 中断请求的应用编程方法。

二.实验设备

IA-32 架构的微机系统及应用教学平台一套。

三.实验原理

3.1 中断控制器8259简介

中断控制器8259 是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259 的级连,能构成多达 级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU 传送中断类型号。8259 的内部结构和引脚如图1 所示。

图 1 8259 内部结构和引脚图

8259 的命令共有7 个,一类是初始化命令字,另一类是操作命令。8259 的编程就是根据应用需要将初始化命令字ICW1-ICW4 和操作命令字OCW1- OCW3 分别写入初始化命令寄存器组和操作命令寄存器组。ICW1-ICW4 各命令字格式如图2所示,OCW1-OCW3各命令字格式如图3 所示,其中OCW1 用于设置中断屏蔽操作字,OCW2 用于设置优先级循环方式和中断结束方式的操作命令字,OCW3 用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259 内部寄存器的读出命令。

图 2(a) ICW1格式

图 2(b) ICW2格式

图 2(c) ICW3格式

图 2(d) ICW4格式

图 3 OCW 命令字格式

3.2 8259寄存器及命令的控制访问

在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。对寄存器和命令的访问控制如表1所示。

表 1 8259 寄存器及命令的访问控制

3.3 EPC 微机系统中的8259

在80x86 系列EPC 微机系统中,系统中包含了两片8259 中断控制器,经级连可以管理15 级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表2 示。两片8259的端口地址为:主片8259 使用020H 和021H 两个端口;从片使用0A0H 和0A1H 两个端口。系统初始化两片8259 的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级~15级,然后是3 级~7 级。在实验平台上系统总线单元的IR1,IR2 信号对应的中断线就是系统8259中断控制器的IRQ10,IRQ7。

表2 EPC 微机系统中的硬件中断

四. 实验内容、步骤、程序及现象

4.1 IRQ单中断应用实验

⑴实验内容:

系统总线单元的IR1中断请求信号对应EPC 内部的IRQ10中断。IR1产生一个上升沿的中断请求,EPC 内部相应的那级中断就会得到响应。所以,使用IR1 中断请求信号,就相当在使用PC 机内部相应的IRQ10 中断。

本实验要求使用总线上IR1 中断请求线完成一次单中断应用实验。用单次脉冲上升沿模拟中断源,中断处理程序完成在屏幕上的显示字符“1”。

⑵实验步骤:

①、 实验接线图如图4所示,按图接线。

②、运行Tdpit 集成操作软件,编写程序,编译、链接。

③、 使用运行命令运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“1”,说明响应了中断。

图 4 8259单中断实验接线图

⑶实验程序:

IRQ_IVADD   EQU   01C8H          ;IRQ10对应的中断矢量地址

IRQ_OCW1    EQU   0A1H           ;IRQ10对应PC机内部8259的OCW1地址

IRQ_OCW2    EQU   0A0H           ;IRQ10对应PC机内部8259的OCW2地址

IRQ_IM      EQU   0FBH           ;IRQ10对应的中断屏蔽字

STACK1 SEGMENT STACK

        DW 256 DUP(?)

STACK1 ENDS

DATA SEGMENT 

MES      DB   'Press any key to exit!',0AH,0DH,0AH,0DH,'$'

CS_BAK   DW  ?                    ;保存IRQ10原中断处理程序入口段地址的变量

IP_BAK   DW  ?                    ;保存IRQ10原中断处理程序入口偏移地址的变量

IM_BAK   DB  ?                    ;保存IRQ10原中断屏蔽字的变量

DATA ENDS

CODE SEGMENT

        ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

       MOV DS,AX

       MOV DX,OFFSET MES          ;显示退出提示

MOV     AH,09H        INT 21H    

       CLI

       MOV AX,0000H               ;替换IRQ10的中断矢量

       MOV ES,AX

       MOV DI,IRQ_IVADD          

       MOV AX,ES:[DI]

       MOV IP_BAK,AX              ;保存IRQ10原中断处理程序入口偏移地址     

       MOV AX,OFFSET MYISR

       MOV ES:[DI],AX             ;设置当前中断处理程序入口偏移地址

       ADD DI,2

       MOV AX,ES:[DI]

       MOV CS_BAK,AX              ;保存IRQ10原中断处理程序入口段地址

       MOV AX,SEG MYISR

       MOV ES:[DI],AX             ;设置当前中断处理程序入口段地址

       MOV DX,IRQ_OCW1            ;设置中断屏蔽寄存器,打开IRQ10的屏蔽位

       IN  AL,DX

       MOV IM_BAK,AL              ;保存IRQ10原中断屏蔽字

       AND AL,IRQ_IM

       OUT DX,AL

       STI

WAIT1: MOV AH,1                   ;判断是否有按键按下

       INT 16H

       JZ  WAIT1                  ;无按键则跳回继续等待,有则退出

QUIT:  CLI

       MOV AX,0000H               ;恢复IRQ10原中断矢量

       MOV ES,AX

       MOV DI,IRQ_IVADD  

       MOV AX,IP_BAK              ;恢复IRQ10原中断处理程序入口偏移地址

       MOV ES:[DI],AX

       ADD DI,2

       MOV AX,CS_BAK              ;恢复IRQ10原中断处理程序入口段地址

       MOV ES:[DI],AX

       MOV DX,IRQ_OCW1            ;恢复IRQ10原中断屏蔽寄存器的屏蔽字

       MOV AL,IM_BAK

       OUT DX,AL

       STI

       MOV AX,4C00H               ;返回到DOS

       INT 21H

MYISR PROC NEAR                   ;中断处理程序MYISR

       PUSH AX

       MOV DL,'1'

       MOV AH,1

       INT 21h

       MOV DL,' '

       INT 21H

OVER:  MOV DX,IRQ_OCW2           ;向PC机内部8259发送中断结束命令

       MOV AL,20H

       OUT DX,AL

       MOV AL,20H

       OUT 20H,AL       

       POP AX  

       IRET       

MYISR ENDP

CODE ENDS

     END START

⑷实验现象:

     按图接好线并编好程序,编译连接完毕后,屏幕上先出现语句“Press any key to exit !”,当按单次脉冲开关KK+1时,屏幕上出现数字“1”;不按时为空格;而按下键盘上的任意键,则会出现语句“Press any key to continue…”,当再按下键盘上任意键时,显示界面消失。

4.2 级联中断实验

⑴实验内容:

本实验要求实现IR1、IR2两路中断都可以向EPC发起中断请求。用KK1+和KK2+模拟两个中断源,在IR1对应的服务程序中显示字符“1”,在IR2对应的服务程序中显示字符“2”。

⑵实验步骤:

①、 实验接线图如图5 所示,按图接线。

②、 运行Tdpit 集成操作软件, 编写程序,编译、链接。

③、 使用运行命令运行程序,按动KK1+、KK2+按键,观察中断是否产生。

图 5 级联中断实验接线图

⑶实验程序

IRQ_IVADD   EQU   01C8H           ;IRQ10对应的中断矢量地址01C8H

IRQ_OCW1    EQU   0a1H            ;IRQ10对应PC机内部8259的OCW1地址

IRQ_OCW2    EQU   0a0H            ;IRQ10对应PC机内部8259的OCW2地址

IRQ_IM      EQU   0FBH            ;IRQ10对应的中断屏蔽字0FBH

IRQ2_IVADD   EQU   003CH          ;IRQ7对应的中断矢量地址003CH

IRQ2_OCW1    EQU   021H           ;IRQ7对应PC机内部8259的OCW1地址

IRQ2_OCW2    EQU   020H           ;IRQ7对应PC机内部8259的OCW2地址

IRQ2_IM      EQU   07FH           ;IRQ7对应的中断屏蔽字07FH                            

STACK1 SEGMENT STACK

        DW 256 DUP(?)

STACK1 ENDS

DATA SEGMENT 

MES      DB   'Press any key to exit!',0AH,0DH,0AH,0DH,'$'

CS_BAK   DW  ?                    ;保存IRQ原中断处理程序入口段地址的变量

IP_BAK   DW  ?                    ;保存IRQ原中断处理程序入口偏移地址的变量

IM_BAK   DB  ?                    ;保存IRQ原中断屏蔽字的变量

DATA ENDS

CODE SEGMENT

        ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

       MOV DS,AX

       MOV DX,OFFSET MES          ;显示退出提示      MOV AH,09H      INT 21H    

       CLI

       MOV AX,0000H               ;替换IRQ10的中断矢量

       MOV ES,AX

       MOV DI,IRQ_IVADD          

       MOV AX,ES:[DI]

       MOV IP_BAK,AX              ;保存IRQ10原中断处理程序入口偏移地址     

       MOV AX,OFFSET MYISR

       MOV ES:[DI],AX             ;设置当前中断处理程序入口偏移地址

       ADD DI,2

       MOV AX,ES:[DI]

       MOV CS_BAK,AX              ;保存IRQ10原中断处理程序入口段地址

       MOV AX,SEG MYISR

       MOV ES:[DI],AX             ;设置当前中断处理程序入口段地址

       MOV DX,IRQ_OCW1            ;设置中断屏蔽寄存器,打开IRQ10的屏蔽位

       IN  AL,DX

       MOV IM_BAK,AL              ;保存IRQ10原中断屏蔽字

       AND AL,IRQ_IM

       OUT DX,AL

       STI     

       MOV AX,0000H               ;替换IRQ7的中断矢量

       MOV ES,AX

       MOV DI,IRQ2_IVADD          

       MOV AX,ES:[DI]

       MOV IP_BAK,AX              ;保存IRQ7原中断处理程序入口偏移地址     

       MOV AX,OFFSET MYISR2

       MOV ES:[DI],AX             ;设置当前中断处理程序入口偏移地址

       ADD DI,2

       MOV AX,ES:[DI]

       MOV CS_BAK,AX              ;保存IRQ7原中断处理程序入口段地址

       MOV AX,SEG MYISR2

       MOV ES:[DI],AX             ;设置当前中断处理程序入口段地址

       MOV DX,IRQ2_OCW1           ;设置中断屏蔽寄存器,打开IRQ7的屏蔽位

       IN  AL,DX

       MOV IM_BAK,AL              ;保存IRQ7原中断屏蔽字

       AND AL,IRQ2_IM

       OUT DX,AL

       STI

WAIT1: 

       MOV AH,1                   ;判断是否有按键按下

       INT 16H

       JZ  WAIT1                  ;无按键则跳回继续等待,有则退出

QUIT:  CLI

       MOV AX,0000H               ;恢复IRQ10原中断矢量

       MOV ES,AX

       MOV DI,IRQ_IVADD  

       MOV AX,IP_BAK              ;恢复IRQ10原中断处理程序入口偏移地址

       MOV ES:[DI],AX

       ADD DI,2

       MOV AX,CS_BAK              ;恢复IRQ10原中断处理程序入口段地址

       MOV ES:[DI],AX

       MOV DX,IRQ_OCW1            ;恢复IRQ10原中断屏蔽寄存器的屏蔽字

       MOV AL,IM_BAK

       OUT DX,AL

       STI

       MOV AX,4C00H               ;返回到DOS

       INT 21H

QUIT2: CLI

       MOV AX,0000H               ;恢复IRQ7原中断矢量

       MOV ES,AX

       MOV DI,IRQ2_IVADD  

       MOV AX,IP_BAK              ;恢复IRQ7原中断处理程序入口偏移地址

       MOV ES:[DI],AX

       ADD DI,2

       MOV AX,CS_BAK              ;恢复IRQ7原中断处理程序入口段地址

       MOV ES:[DI],AX

       MOV DX,IRQ2_OCW1           ;恢复IRQ7原中断屏蔽寄存器的屏蔽字

       MOV AL,IM_BAK

       OUT DX,AL

       STI

       MOV AX,4C00H               ;返回到DOS

       INT 21H

MYISR :STI                       ;中断处理程序MYISR

       PUSH AX

       MOV DL,'1'

       MOV AH,02H

       INT 21H

       MOV DL,' '

       INT 21H

OVER:  MOV DX,IRQ_OCW2           ;向EPC内部8259发送中断结束命令

       MOV AL,20H

       OUT DX,AL

       MOV AL,20H

       OUT 20H,AL       

       POP AX  

       IRET    

MYISR2 : STI                     ;中断处理程序MYISR       

       PUSH AX

       MOV DL,'2'

       MOV AH,02H

       INT 21H

       MOV DL,' '

       INT 21H

OVER2:  MOV DX,IRQ2_OCW2           ;向EPC内部8259发送中断结束命令

       MOV AL,20H

       OUT DX,AL

       POP AX  

       IRET

CODE ENDS

     END START

⑷实验现象:

按图接好线并编好程序,编译连接完毕后,屏幕上先出现语句“Press any key to exit !”,按动脉冲开关KK+1时屏幕上显示字符“A”;按动脉冲开关KK+2时,屏幕上显示字符“7”;不按动时,屏幕上是横线如“————”;而在键盘上输入任意键时,屏幕上则会出现语句“Press any key to continue…”,当再按下键盘上任意键时,显示界面消失。

文档

8259中断控制实验报告

8259中断控制实验一.实验目的1.掌握8259中断控制器的工作原理。2.掌握系统总线上IR1,IR2中断请求的应用编程方法。二.实验设备IA-32架构的微机系统及应用教学平台一套。三.实验原理3.1中断控制器8259简介中断控制器8259是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top