8259中断实验.docx

上传人:b****7 文档编号:23328453 上传时间:2023-05-16 格式:DOCX 页数:20 大小:192.35KB
下载 相关 举报
8259中断实验.docx_第1页
第1页 / 共20页
8259中断实验.docx_第2页
第2页 / 共20页
8259中断实验.docx_第3页
第3页 / 共20页
8259中断实验.docx_第4页
第4页 / 共20页
8259中断实验.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

8259中断实验.docx

《8259中断实验.docx》由会员分享,可在线阅读,更多相关《8259中断实验.docx(20页珍藏版)》请在冰豆网上搜索。

8259中断实验.docx

8259中断实验

XX学院

实验报告

实验名称

姓名

学号

班级

教师

日期

一、实验内容与要求

1.1实验内容

本次实验分为如下3个子实验:

(1)单中断请求实验:

利用系统总线上中断请求信号MIR7,设计一个单一中断请求实验;

(2)双中断优先级实验:

利用系统总线上中断请求信号MIR6和MIR7,设计一个双中断优先级应用实验,观察8253对中断优先级的控制;

(3)级联中断实验:

利用系统总线上中断请求信号MIR7和SIR1,设计一个级联中断应用实验。

1.2实验要求

本次实验中三个子实验的实验要求如下:

(1)单中断请求实验:

单脉冲KK1+与主片8259的IR7相连。

每按KK1+,进入一次中断,输出7;

(2)双中断优先级实验:

单脉冲KK1+连主片8259的IR7,KK2+连其IR6。

每当KK1+按下时显示“7”,每当KK2+按下显示“6”;

(3)级联中断实验:

单脉冲KK1+连主片8259的IR7,KK2+连从片的IR1。

每当KK1+按下时显示“M7”,每当KK2+按下显示“S1”。

二、实验原理与硬件连线

2.1实验原理

(1)中断控制器8259简介

在Intel386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。

该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。

从片的INT连接到主片的IR2信号上构成两片8259的级联。

在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。

8259的内部连接及外部管脚引出如图1-1:

图1-18259内部连续及外部管脚引出图

表1-1列出了中断控制单元的寄存器相关信息。

表1-1ICU寄存器列表

寄存器

口地址

功能描述

ICW1(主)

ICW1(从)

(只写)

0020H

00A0H

初始化命令字1:

决定中断请求信号为电平触发还是边沿触发。

ICW2(主)

ICW2(从)

(只写)

0021H

00A1H

初始化命令字2:

包含了8259的基址中断向量号,基址中断向量是IR0的向量号,基址加1就是IR1的向量号,依此类推。

ICW3(主)

(只写)

0021H

初始化命令字3:

用于识别从8259设备连接到主控制器的IR信号,内部的从8259连接到主8259的IR2信号上。

ICW3(从)

(只写)

00A1H

初始化命令字3:

表明内部从控制器级联到主片的IR2信号上。

ICW4(主)

ICW4(从)

(只写)

0021H

00A1H

初始化命令字4:

选择特殊全嵌套或全嵌套模式,使能中断自动结束方式。

OCW1(主)

OCW1(从)

(读/写)

0021H

00A1H

操作命令字1:

中断屏蔽操作寄存器,可屏蔽相应的中断信号。

OCW2(主)

OCW2(从)

(只写)

0020H

00A0H

操作命令字2:

改变中断优先级和发送中断结束命令。

OCW3(主)

OCW3(从)

(只写)

0020H

00A0H

操作命令字3:

使能特殊屏蔽方式,设置中断查询方式,允许读出中断请求寄存器和当前中断服务寄存器。

IRR(主)

IRR(从)

(只读)

0020H

00A0H

中断请求:

指出挂起的中断请求。

ISR(主)

ISR(从)

(只读)

0020H

00A0H

当前中断服务:

指出当前正在被服务的中断请求。

POLL(主)

POLL(从)

(只读)

0020H

0021H

00A0H

00A1H

查询状态字:

表明连接到8259上的设备是否需要服务,如果有中断请求,该字表明当前优先级最高的中断请求。

初始化命令字1寄存器(ICW1)说明见图1-2所示。

图1-2初始化命令字1寄存器

初始化命令字2寄存器(ICW2)说明见图1-3所示。

图1-3初始化命令字2寄存器

初始化命令字3寄存器(ICW3)说明,主片见图1-4,从片见图1-5。

图1-4主片初始化命令字3寄存器

图1-5从片初始化命令字3寄存器

初始化命令字4寄存器(ICW4)说明见图1-6。

图1-6初始化命令字4寄存器

操作命令字1寄存器(OCW1)说明见图1-7。

图1-7操作命令字1寄存器

操作命令字2寄存器(OCW2)说明如图1-8所示。

图1-8操作命令字2寄存器

操作命令字3寄存器(OCW3)说明如图1-9所示。

图1-9操作命令字3寄存器

查询状态字(POLL)说明如图1-10所示。

图1-10程序状态字寄存器

在对8259进行编程时,首先必须进行初始化。

一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化命令字。

8259有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。

在初始化主片8259时,写入初始化命令字的顺序是:

ICW1、ICW2、ICW3、ICW4,初始化从片8259的顺序与初始化主片8259的顺序是相同的。

系统启动时,主片8259已被初始化,且4号中断源(IR4)提供给与PC联机的串口通信使用,其它中断源被屏蔽。

中断矢量地址与中断号之间的关系如表1-2所示:

表1-2中断矢量地址与中断号关系表

主片中断序号

0

1

2

3

4

5

6

7

功能调用

08H

09H

0AH

0BH

0CH

0DH

0EH

0FH

矢量地址

20H~23H

24H~27H

28H~2BH

2CH~2FH

30H~33H

34H~37H

38H~3BH

3CH~3FH

说明

未开放

未开放

未开放

未开放

串口

未开放

可用

可用

从片中断序号

0

1

2

3

4

5

6

7

功能调用

30H

31H

32H

33H

34H

35H

36H

37H

矢量地址

C0H~C3H

C4H~C7H

C8H~CBH

CCH~CFH

D0H~D3H

D4H~D7H

D8H~DBH

DCH~DFH

说明

未开放

可用

未开放

未开放

未开放

未开放

未开放

未开放

2.2硬件连线

(1)单中断实验:

实验接线图如图1-11所示,单次脉冲输出KK1+与主片8259的IR7相连(与实验平台中的MIR7相连),每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”;

图1-11单中断实验硬件连线图

(2)双中断优先级实验:

实验接线图如图1-12所示,KK1+和KK2+分别连接到主片8259的IR7(与实验平台MIR7相连)和IR6(与实验平台MIR6相连)上,当按一次KK1+时,显示屏上显示字符“7”,按一次KK2+时,显示字符“6”;

图1-12双中断优先级实验硬件连线图

(3)级联双中断优先级实验:

实验接线图如图1-13所示,KK1+连接到主片8259的IR7(与实验平台MIR7相连)上,KK2+连接到从片8259的IR1(与实验平台SIR1相连)上,当按一次KK1+时,显示屏上显示字符“M7”,按一次KK2+时,显示字符“S1”。

图1-13级联双中断优先级实验硬件连线图

三、设计思路、步骤和程序流程图

3.1设计思路

(1)单中断实验:

采用一片8259芯片和KK1+单次脉冲开关,首先让程序进入死循环,等待中断,每按动一次单次脉冲,产生一次外部中断,调用中断程序,在显示屏上输出一个字符“7”。

(2)双中断优先级实验:

采用一片8259芯片和KK1+与KK2+单次脉冲开关,首先让程序进入死循环,等待中断,当按一次KK1+或KK2+时,产生一次外部中断,调用对应的中断程序,在显示屏上输出对应的字符“7”和“6”。

(3)级联双中断优先级实验:

采用两片8259芯片,一片为主片,一片作为从片,以及KK1+与KK2+单次脉冲开关。

首先让程序进入死循环,等待中断,当按一次KK1+或KK2+时,产生一次外部中断,调用对应的中断程序,在显示屏上输出对应的字符串“M7”和“S1”。

3.2实验步骤

(1)单中断实验

1.按图1-11连接实验线路;

2.编写实验程序,经编译、链接无误后装入系统;

3.运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“7”,说明响应了中断。

(2)双中断优先级实验

1.按图1-12连接实验线路;

2.编写实验程序,经编译、链接无误后装入系统;

3.运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“7”,重复按单次脉冲开关KK2+,显示屏会显示字符“6”,说明响应了中断;

4.尝试先按KK1+,再快速按KK2+,观察MIR7和MIR6两个中断请求的优先级,分析实验结果。

(3)级联双中断优先级实验

1.按图1-12连接实验线路;

2.编写实验程序,经编译、链接无误后装入系统;

3.运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符串“M7”,重复按单次脉冲开关KK2+,显示屏会显示字符串“S1”,说明响应了中断;

4.尝试先按KK1+,再快速按KK2+,观察MIR7和SIR1两个中断请求的优先级,分析实验结果。

3.3程序流程图

主程序流程图如图1-14:

图1-14主程序流程图

中断程序流程图如图1-15

图1-15中断程序流程图

四、程序清单与执行结果

4.1程序清单

(1)单中断实验代码

CODESEGMENT

ASSUMECS:

CODE

START:

;DOS调用写入法

CLI;关中断,防止硬件中断对程序的干扰

PUSHDS;设置中断向量

MOVAX,8

MOVDX,AX

MOVAX,OFFSETMIR7;取MIR7的偏移地址

MOVBX,003CH;中断类型号为n,BX设置为4*n

MOV[BX],AX;偏移地址放入4n,4n+1单元

MOVAX,SEGMIR7;取MIR7的段地址

MOV[BX+2],AX;偏移地址放入4n+2,4n+3单元

POPDS

MOVAL,11H;初始化ICM1

OUT20H,AL

MOVAL,08H;初始化ICM2

OUT21H,AL

MOVAL,04H;初始化ICM3

OUT21H,AL

MOVAL,01H;初始化ICM4

OUT21H,AL

MOVAL,6FH;设置OCW1,开放MIR7和IR4

OUT21H,AL

STI;开中断

WIN:

JMPWIN;等待中断

MIR7:

STI

MOVAX,0137H;显示字符7

INT10H

MOVAX,0120H;显示空格

INT10H

MOVAL,20H;中断结束命令

OUT20H,AL

IRET;中断返回

CODEENDS

ENDSTART

RET

CODEENDS

ENDSTART

(2)双中断优先级实验代码

CODESEGMENT

ASSUMECS:

CODE

START:

CLI

PUSHDS;设置中断向量

MOVAX,8

MOVDX,AX

MOVAX,OFFSETMIR7

MOVBX,003CH

MOV[BX],AX

MOVAX,SEGMIR7

MOV[BX+2],AX

MOVAX,8

MOVDX,AX

MOVAX,OFFSETMIR6

MOVBX,0038H

MOV[BX],AX

MOVAX,SEGMIR6

MOV[BX+2],AX

POPDS

MOVAL,11H;初始化ICW1

OUT20H,AL

MOVAL,08H;初始化ICW2

OUT21H,AL

MOVAL,04H;初始化ICW3

OUT21H,AL

MOVAL,01H;初始化ICW4

OUT21H,AL

MOVAL,2FH;设置OCW1,开放MIR7和SIR4

OUT21H,AL

STI

WIN:

JMPWIN;主程序循环

MIR7:

STI

MOVAX,0137H;显示字符7

INT10H

MOVAX,0120H;显示空格

INT10H

MOVAL,20H

OUT20H,AL

IRET

MIR6:

STI

MOVAX,0136H;显示字符6

INT10H

MOVAX,0120H;显示空格

INT10H

MOVAL,20H

OUT20H,AL

IRET

CODEENDS

ENDSTART

(3)级联双中断优先级实验代码

CODESEGMENT

ASSUMECS:

CODE

START:

CLI

PUSHDS;设置中断向量

MOVAX,8

MOVDX,AX

MOVAX,OFFSETMIR7

MOVBX,003CH

MOV[BX],AX

MOVAX,SEGMIR7

MOV[BX+2],AX

MOVAX,8;设置中断向量

MOVDX,AX

MOVAX,OFFSETSIR1

MOVBX,00C4H

MOV[BX],AX

MOVAX,SEGSIR1

MOV[BX+2],AX

POPDS

MOVAL,11H;初始化ICW1-ICW4

OUT20H,AL

MOVAL,08H

OUT21H,AL

MOVAL,04H

OUT21H,AL

MOVAL,01H

OUT21H,AL

MOVAL,11H;初始化ICW1-ICW4

OUT0A0H,AL

MOVAL,30H

OUT0A1H,AL

MOVAL,02H

OUT0A1H,AL

MOVAL,01H

OUT0A1H,AL

MOVAL,6BH;01101011

OUT21H,AL

MOVAL,0FDH;设置OCM1,开放MIR7和SIR1

OUT0A1H,AL

STI

WIN:

JMPWIN;主程序循环

MIR7:

STI

MOVAX,014DH;显示M

INT10H

MOVAX,0137H;显示7

INT10H

MOVAX,0120H;显示空格

INT10H

MOVAL,20H

OUT20H,AL

IRET

SIR1:

STI

MOVAX,0153H;显示S

INT10H

MOVAX,0131H;显示1

INT10H

MOVAX,0120H

INT10H;显示空格

MOVAL,20H

OUT0A0H,AL

OUT20H,AL

IRET

CODEENDS

ENDSTART

4.2执行结果

(1)单中断实验的实验结果如图1-16,每按一次KK1+,就会打印一个字符,并且输出一个空格,自定义后结果变成输出字符串‘THISISAINTER’。

图1-16单中断实验实验结果

(2)双中断优先级实验的实验结果如图1-17,两个开关按下分别对应字符‘6’与字符‘7’。

其中优先级为MIR7高于MIR6。

图1-17双中断优先级实验实验结果

(3)级联双中断优先级实验的实验结果如图1-18,两个开关按下分别显示“S1”与“M7”,优先级为MIR7高于SIR1。

图1-18级联双中断优先级实验实验结果

五、程序调试说明和实验感想

5.1调试说明

在对主从片进行初始化时,未仔细查阅8259初始化命令字。

不正确的初始化导致了异常初始化,正确方法应该是按照ICW1~ICW4顺序进行初始化。

初始化前应先使用CLI指令将所有的可屏蔽中断禁止,否则有可能出错。

中断矢量的地址应注意十六进制的换算和十进制换算不同。

5.2实验感想与收获

通过本次与实验,对8255A有了深入的了解;对8255A的内部接口和引脚有了充分的认识;对8255A的工作方式、应用编程及其典型电路的接法有了全新的掌握。

8255A有三个并行数据端口A、B、C,可工作于三种工作方式:

方式0——基本输入输出方式;方式1——选通输入输出方式;方式2——双向输入输出方式。

在这次实验中,实践了方式0和方式1在端口上的输入输出,结合书上所说,又将端口C上的高低4位独立设置为输入或输出。

纸上得来终觉浅,在对实验的实践中,实验前事先预习,实验中不断尝试,实验后总结复习,收获良多。

5.3实验特色

我在第一个实验中尝试了各种字符以及字符串的输出。

5.4展望

如果有充裕的时间,还可以改变8255方式1输出LED流水效果为每按一次KK1+依次亮起1个LED灯,直至16个LED灯变亮。

(注:

文档可能无法思考全面,请浏览后下载,供参考。

可复制、编制,期待你的好评与关注)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1