8259中断控制实验报告.docx

上传人:b****3 文档编号:27341589 上传时间:2023-06-29 格式:DOCX 页数:11 大小:88.17KB
下载 相关 举报
8259中断控制实验报告.docx_第1页
第1页 / 共11页
8259中断控制实验报告.docx_第2页
第2页 / 共11页
8259中断控制实验报告.docx_第3页
第3页 / 共11页
8259中断控制实验报告.docx_第4页
第4页 / 共11页
8259中断控制实验报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

8259中断控制实验报告.docx

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

8259中断控制实验报告.docx

8259中断控制实验报告

8259中断控制-实验报告

 

深圳大学实验报告

 

课程名称:

微机原理与接口技术

实验项目名称:

8259中断控制实验

学院:

信息工程学院

专业:

电子信息工程

指导教师:

报告人:

学号:

201019班级:

电子

实验时间:

2012.5.18

实验报告提交时间:

2012.6.9

教务处制

实验目的与要求:

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

 

2.掌握8259的应用编程方法

 

3.掌握8259的级联方式的使用方法

实验环境:

PC机一台,TD-PITE实验装置或TD-PITC实验装置一套,过滤器一台

实验内容及步骤:

1.中断控制器8259简介

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

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

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

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

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

图4.58259内部连续及外部管脚引出图

 

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

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

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

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

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

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

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

主片中断序号

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.8259单中断实验

实验接线图如图4.15所示,单次脉冲输出与主片8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。

图4.158259单中断实验接线图

实验步骤

(1)按图4.15连接实验线路。

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

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

实验程序清单(INT1.ASM)

SSTACKSEGMENTSTACK

DW32DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETMIR7;取中断入口地址

MOVSI,003CH;中断矢量地址放在0000:

003c-0000:

003f

MOV[SI],AX;填IRQ7的偏移矢量

MOVAX,CS;段地址

MOVSI,003EH

MOV[SI],AX;填IRQ7的段地址矢量

CLI

POPDS

;初始化主片8259

MOVAL,11H

OUT20H,AL;A0=0,ICW1为00010001B,边沿触发,需要ICW4

MOVAL,08H

OUT21H,AL;A0=1,ICW2为00001000B,保持低三位为0

MOVAL,04H

OUT21H,AL;A0=1,ICW1中SNGL=1,ICW3中D2=1,表示接端口接从属8259

MOVAL,01H

OUT21H,AL;ICW4,一般嵌套,8086模式,非自动EOI方式,非缓冲方式

MOVAL,6FH;A0=1,寻址OCW1,01101111B,M=0时清除屏蔽状态

OUT21H,AL

STI

AA1:

NOP;无限循环,等待中断发生

JMPAA1

MIR7:

STI

CALLDELAY

MOVAX,0137H

INT10H;显示字符7

MOVAX,0120H

INT10H

MOVAL,20H

OUT20H,AL;中断结束命令

IRET

DELAY:

PUSHCX;延时子程序

MOVCX,0F00H

AA0:

PUSHAX

POPAX

LOOPAA0

POPCX

RET

CODEENDS

ENDSTART

实验结果如图所示,能够正确执行设定功能.

 

实验程序分析:

一般中断实验,为了保护现场,程序开头都会引用堆栈把把现在的程序放入堆栈中进行保护,所以,PUSHDS就起到这样的作用.在中断程序结束后,为了能回到之前执行的程序入口,还得用POPDS指令返回现场.

这个实验是关于8259的单中断,不牵涉级联问题,所以,8259的初始化只需要看主片就可以了.初始化的时候,一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化字.8259有四个初始化控制字ICW1,ICW2,ICW3,ICW4,由于8259只有一根地址线,因此对各个控制字的操作是按照一定的顺序并结合某些数据位来进行寻址设置的.当初始化完成后,对8259的操作命令字的寻址是通过8259的地址线A0和某些数据位结合来进行的.其初始化控制字和控制命令辽的赋值理由我已经在注释中给出.

另外,在初始化程序中我们用了STI这条指令打开中断,那么进入MIR7中断程序中,我们为什么又执行STI这条指令呢,会不会重复了?

经过实验,我们知道这条指令并不是没用的,如果缺少后面这条STI指令,实验中我们会发现,当按一次KK1开关的时候,屏幕会显示一个字符7,但是,再按KK1的时候,就没有反应了,起初并不知道怎么解释这个现象,后来才知道8086CPU执行完一次中断后,会自动将相应的中断位屏蔽,所以,如果我们想按一次KK1就发生一次中断,就得重新在程序中打开中断,也就是STI.

另外,RET指令是短信返回指令,而IRET指令则是中断短程返回指令,一般中断程序也大多是短程的.

那么,中断发生的时候,CPU又是怎样进入中断子程序的呢?

这就需要我们正确地设置中断向量表的了.实验板上主中断序号7可用,也就是我们得利用3CH-3FH这矢量地址.所以在程序开始的时候,就采用MOVAX,OFFSETMIR7,MOVSI,003CH,MOV[SI],AX这三句来获得偏移地址IP,接着高地址位置又用MOVAX,CS,MOVSI,003EH,MOV[SI],AX这三条指令来获得CS.CPU根据CS,IP就能转入正确的中断程序执行中断了.

而中断程序结尾处,用了MOVAL,20HOUT20H,AL以及IRET这三条指令,是为了说明这是正常的EOI,可以通知8259A此次服务结束.  

 

3.8259级联实验

实验接线图如图4.16所示,KK1+连接到主片8259的IR7上,KK2+连接到从片8259的IR1上,当按一次KK1+时,显示屏上显示字符“M7”,按一次KK2+时,显示字符“S1”。

编写程序。

图4.168259级联实验

实验步骤

(1)按图4.16连接实验线路。

(2)输入程序,编译、链接无误后装入系统。

(3)运行程序,按动KK1+或KK2+,观察实验结果,验证实验程序的正确性。

(4)若同时按下KK1+和KK2+,观察实验结果,解释实验现象。

 

实验程序清单(INTCAS1.ASM)

SSTACKSEGMENTSTACK

DW32DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETMIR7;取中断入口地址

MOVSI,003CH;中断矢量地址

MOV[SI],AX;填IRQ7的偏移矢量

MOVAX,CS;段地址

MOVSI,003EH

MOV[SI],AX;填IRQ7的段地址矢量

MOVAX,OFFSETSIR1

MOVSI,00C4H

MOV[SI],AX

MOVAX,CS

MOVSI,00C6H

MOV[SI],AX

CLI

POPDS

;初始化主片8259

MOVAL,11H

OUT20H,AL;ICW1

MOVAL,08H

OUT21H,AL;ICW2

MOVAL,04H

OUT21H,AL;ICW3

MOVAL,01H

OUT21H,AL;ICW4

;初始化从片8259

MOVAL,11H

OUT0A0H,AL;ICW1

MOVAL,30H

OUT0A1H,AL;ICW2

MOVAL,02H

OUT0A1H,AL;ICW3

MOVAL,01H

OUT0A1H,AL;ICW4

MOVAL,0FDH

OUT0A1H,AL;OCW1=11111101

MOVAL,6BH

OUT21H,AL;主8259OCW1

STI

AA1:

NOP

JMPAA1

MIR7:

CALLDELAY

MOVAX,014DH

INT10H;M

MOVAX,0137H

INT10H;显示字符7

MOVAX,0120H

INT10H

MOVAL,20H

OUT20H,AL;中断结束命令

IRET

SIR1:

CALLDELAY

MOVAX,0153H

INT10H;S

MOVAX,0131H

INT10H;显示字符1

MOVAX,0120H

INT10H

MOVAL,20H

OUT0A0H,AL

OUT20H,AL

IRET

DELAY:

PUSHCX

MOVCX,0F00H

AA0:

PUSHAX

POPAX

LOOPAA0

POPCX

RET

CODEENDS

ENDSTART

实验结果截图如下,能够正确执行设定功能.

级联实验分析:

这是8259的级联实验.其中主片8259的初始化和操作前一个程序已经说了,现在,主要说说级联情况下,从片8259的初始化和操作控制.从片8259A的INT输出端接到主控制器的IR输入端,由从属控制器的中断请求通过主片8259向CPU申请.如果从片8259A的中断被CPU响应,在中断响应周期,主控8259将其对应的IR输入端的编码作为对从属8259进行识别的地址.

与主片8259类似,从片8259也需要初始化,以设置其工作状态.其程序与第一个实验程序大体相同.需要注意的是,在级联方式下,中断结束时,要发两次EOI命令,分别使主片和从片执行中断结束命令.程序最后的MOVAL,20HOUT0A0H,ALOUT20H,ALIRET

这四句就是实现这样的功能.但是,结束这两个中断的顺序,是否有要求呢?

经过实验,我们知道,两条结束中断的指令,不管谁先执行,都能达到相同的要求.

另外,当处于这种级联方式下,为了保证从属8259正常的中断请求,主片8259就设置成特殊全嵌套方式,从片8259则就选用一般全嵌套方式.

 

心得与体会:

中断的思想在程序的设计中无疑占有重要的位置.采取中断的方法,大大提高程序的有效性和CPU的高效率工作.因此,8259中断控制实验在微机的几个实验中,就显得尤其重点.掌握8259中断控制器的工作原理和应用编程方法,需要对课本上那些对8259的系统介绍有一个深入的了解,以及级联方式下各个寄存器相应的控制和操作方法,这些,都是我们学习的重点,我们应该熟练掌握.

 

指导教师批阅意见:

 

成绩评定:

 

指导教师签字:

年月日

备注:

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

当前位置:首页 > 工程科技 > 冶金矿山地质

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

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