中断次数统计.docx

上传人:b****7 文档编号:9655649 上传时间:2023-02-05 格式:DOCX 页数:18 大小:281.16KB
下载 相关 举报
中断次数统计.docx_第1页
第1页 / 共18页
中断次数统计.docx_第2页
第2页 / 共18页
中断次数统计.docx_第3页
第3页 / 共18页
中断次数统计.docx_第4页
第4页 / 共18页
中断次数统计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

中断次数统计.docx

《中断次数统计.docx》由会员分享,可在线阅读,更多相关《中断次数统计.docx(18页珍藏版)》请在冰豆网上搜索。

中断次数统计.docx

中断次数统计

一、题目要求

1.1中断次数统计:

内容:

通过8259A芯片接收外部中断请求,将中断请求的累积次数通过LED数码管显示,若累计满10次,则清零重新开始统计次数。

二、芯片简介

2.18259芯片

1.1.1

2.1.18259的内部结构

8259A是专为控制优先级中断而设计的芯片。

它将中断源按优先级排队、辨认中断源、提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理8级中断。

如图5-19所示,它由中断请求寄存器(IRR)、优先级分析器、中断服务寄存器(ISR)、中断屏蔽寄存器(IMR)、数据总线缓冲器、读写控制电路和级联缓冲器、比较器组成。

图5-19

中断请求寄存器:

寄存所有要求服务的请求IR0~IR7。

中断服务寄存器:

寄存正在被服务的中断请求。

中断屏蔽寄存器:

存放被屏蔽的中断请求,该寄存器的每一位表示一个中断号,该位为1,屏蔽该号中断,否则开放该号中断。

数据总线缓冲器:

是双向三态的,用以连接系统总线和8259A内部总线,通过它可以由CPU对8259A写入状态字和控制字。

读写控制电路:

用来接受I/O命令,对初始化命令和操作命令字寄存器进行写入,以确定8259A的工作方式和控制方式。

级联缓冲器/比较器:

用于多片8259A的连接,能构成多达64级的矢量中断系统。

1.1.2

2.1.28259A编程及初始化

(1)写初始化命令字

写初始化命令字ICW1(A0=0),以确定中断请求信号类型,清除中断屏蔽寄存器,中断优先级排队和确定系统用单片还是多片。

写初始化命令字ICW2,以定义中断向量的高五位类型码。

写初始化命令字ICW3,以定义主片8259A中断请求线上IR0~IR7有无级联的8259A从片。

第i位=0,表明IRi引脚上无从片

第i位=1,表明IRi引脚上有从片

写初始化命令ICW4,用来定义8259A工作时用8085模式,还是8088模式,以及中断服务寄存器复位方式等。

(2)写控制命令字

写操作命令字0CW1,用来设置或清除对中断源的屏蔽。

第i位=0,对应的中断请求IRi开放

第i位=1,对应的中断请求IRi屏蔽

注:

OCW1如不写,则在初始化命令写入后,OCW1为全开放状态。

操作命令字OCW2,设置优先级是否进行循环、循环方式及中断结束方式。

注:

8259A复位时自动设置IR0优先权最高,IR7优先权最低。

操作命令字OCW3,设置查询方式、特殊屏蔽方式以及读取8259中断寄存器的当前状态。

2.1

2.28255芯片

1.2.1

2.2.1工作方式控制字

工作方式控制字的格式如图9.18所示,它规定了控制字各位的含义。

D7为方式控制字标志位,“1”为有效。

D6~D3为A组控制位,其中D6D5用于设置A口的工作方式(A口有3种工作方式),D4用于设置A口的输入/输出状态,D3用于设置C口高4位的输入/输出状态。

D2~D0为B组控制位,其中D2用于选择B口的工作方式(B口只有两种工作方式),D1用于选择B口的输入/输出状态,D0用于选择C口低4位的输入/输出状态。

工作方式控制字的这种格式表明:

图2.2.18255工作方式控制字格式

端口A和端口B要分别作为一个整体确定工作方式,而端口C则是分成高4位、低4位两部分分别确定工作方式。

端口A和端口B的工作方式可以不同,端口C的上半部和下半部的工作方式也可以不同。

8255这四部分的工作方式可以任意组合,这就使8255的I/O结构有很大的灵活性,几乎能适应任何一种外部设备的连接需要,还能满足同时连接几种不同I/O设备的需要。

图2.2.28255C口按位置位/复位控制字格式

虽然8255的I/O有上述四个部分,每部分的工作方式又可以不同,但是所有各个部分的工作方式却是CPU用一条输出指令,通过一个控制字写入一个控制寄存器而确定的。

这对于简化初始化编程是十分有利的。

C口按位置位/复位的功能主要用于对外设的控制。

利用这一功能,可使C口某一位输出一个开关量或一个脉冲,作为外设的启动或停止信号。

当端口A或B工作在方式1和方式2时,利用这一功能,也可使作为应答控制线的C口有关位产生所需的联络信号(脉冲或电平)。

这样,显然提高了应答线使用的灵活性,当然在程序上也增加了一些额外的控制步骤。

在使用C口按位置位/复位功能时要注意如下三点。

这一功能可使C口的任一位置“1”或置“0”,但一次(一条输出指令,一个控制字)只能使C口的一位置“1”或置“0”。

如果C口几位都要置“1”或置“0”,必须用几条输出指令,写入几个不同控制字。

表9.2给出了按位置位/复位控制字中的D6D5D4取000时,C口各位的置位、复位控制字。

如果要在某位上输出一个开关量信号,对该位的置“1”置“0”操作必须成对使用。

比如要使PC5输出一个负跳变信号,可用下列80X86指令:

MOVAL,0BH;PC5置“1”控制字送AL

MOVDX,××××××11B;控制寄存器口地址送DX

OUTDX,AL;置“1”控制字送控制寄存器

MOVAL,0AH;PC5置“0”控制字送AL

OUTDX,AL;置“0”控制字送控制寄存器

三、方案设计与论证

3.1实验连线:

(1)将微机原理试验箱与计算机连接

(2)将8259的INT与8088的INTR(X15)相连

(3)将8259的INTA连8088的INTA(Xl2)

(4)将“

”插孔和8259的3号中断IR3插孔相连(单脉冲与时钟单元)

(5)将8259的CS端接EX1(60H)

(6)将JX4与JX17相连

(7)将8259的IOWR与8088的IOWR相连

(8)将8259的IORD与8088的IORD相连

(9)将8259的A0与8088的A0相连

(10)将8255的PC口和PB口与数码管相接

图2.1硬件连接

此中断次数统计中,单脉冲信号作为中断请求信号,用8259对中断进行计数,最后用8255再经数码管显示出来。

3.2设计流程图

 

图2.2设计流程图

2.1

2.2

3.3中断子程序流程图:

 

图2.3中断子程序流程图

中断判断过程子程序:

CLI;关中断

ADDINTCNT,01H;中断次数加1

MOVBL,INTCNT;将中断次数给BL

MOVBH,0;将BH清零

CMPBX,10;看中断次数是否满10

JNELP1;没超过10次则执行LP1

MOVBX,0;超过则清零

MOVINTCNT,BL;将中断次数归零

MOVSI,0

2.1

3.4程序源代码

CODESEGMENT

ASSUMECS:

CODE

INTPORT1EQU0FF60H

INTPORT2EQU0FF61H

AEQU0FF28H

BEQU0FF29H

CEQU0FF2AH

CTLEQU0FF2BH

ORG12D0H

START:

JMPSTART0

INTCNTDB?

TABDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

START0:

MOVDX,CTL

MOVAL,90H;8255控制字

OUTDX,AL

XORAL,AL

MOVDX,B

OUTDX,AL

MOVDX,C

OUTDX,AL;8255初始化

NOP

NOP

MOVAL,0C0H;使B端口输出0

MOVDX,B

OUTDX,AL

CALLWRINTVER;WRITEINTRRUPT

MOVAL,13H;设置ICW1

MOVDX,INTPORT1

OUTDX,AL

MOVAL,08H;设置ICW2

MOVDX,INTPORT2

OUTDX,AL

MOVAL,09H;设置ICW4

OUTDX,AL

MOVAL,0F7H;设置ICW3

OUTDX,AL

MOVINTCNT,00H;中断次数为0

STI

WATING:

NOP

JMPWATING

;将中断类型码为0BH(11)的中断源所对应的中断服务程序首地址INTREEUP3存放在0000:

002CH开始的4个单元中

WRINTVER:

MOVAX,0H

MOVES,AX

MOVDI,002CH

MOVAX,OFFSETINTREEUP3

STOSW;将AX中的字节内容送入ES:

DI指向的目的串中

MOVAX,0000H

STOSW

RET

INTREEUP3:

PUSHAX

PUSHBX

PUSHCX

PUSHDX;压栈

CLI;关中断

ADDINTCNT,01H;中断次数加1

MOVBL,INTCNT;将中断次数给BL

MOVBH,0;将BH清零

CMPBX,10;看中断次数是否满10

JNELP1;没超过10次则执行LP1

MOVBX,0;超过则清零

MOVINTCNT,BL;将中断次数归零

MOVSI,0

;取中断次数所对应的数码管的显示字符

LP1:

MOVBL,INTCNT

MOVBH,0

MOVSI,BX

MOVBX,OFFSETTAB

MOVAL,[BX+SI]

MOVDX,B

OUTDX,AL

INTRE2:

MOVAL,20H

MOVDX,INTPORT1

OUTDX,AL

POPDX

POPCX

POPBX

POPAX;出栈

STI

IRET

CODEENDS

ENDSTART

2.1

2.2

2.3

.一

.二

一、

二、

四、测试数据与试验结果

3.1显示结果

图3.1部分结果显示图

本次实验采用3号中断源IR3,将“

”插孔和IR3相连,中断方式为边沿触发方式,每拨一次开关产生一次中断,从0开始计数,满10次清零重新计数。

所以,实验时可以看到,每动一次开关,数码管数值增加1,到9时则会跳到0重新计数。

.一

.二

.三

一、

二、

三、

五、总结与体会

8259中断控制器是专为控制优先级中断设计的芯片。

它将中断源优先级排队,辩别中断源以及提供中断矢量的电路集于一片中。

因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,并选择优行模式和中断请求方式,即中断结构可以由用户编程来设定。

同时,在不需要增加其它电路的情况下,通过多片8259的级联,能构成多达64级的矢量中断系统。

本次课程设计采用3号中断源IR3,将“”插孔和IR3相连,中断方式为边沿触发方式,每拨一次开关产生一次中断,从0开始计数,满10次清零重新计数。

此次课程设计最大的问题就是怎样将中断请求进行计数,并通过数码管显示出来,刚开始设计的时候只能显示初始值,拨动开关产生中断请求,数码管显示的数值始终不变。

之后参照《微型计算机及其接口实验指导书(8086汇编)》,结合对8259中断原理的理解,与同学交流后,仔细研究相应的程序,经过反复的运行与调试,最终得出中断次数统计的程序。

这次的课程设计中,我们认识到要善于发挥团队合作精神,小组成员之间分工明确,善于思考,力求用简洁的程序语言达到相应的课程设计要求。

多向老师同学请教,以完善设计方案。

我们也能够在设计过程中,认识到各自的不足,在以后的学习中要多加改进。

最后,感谢老师对我们的帮助,在设计中有许多不懂的地方都是马老师帮助我们解决的。

总的来说,经过这次课程设计,我们学到了许多书上所没有的知识,让我们受益匪浅,真的很高兴能有这样一次课程设计!

一、

二、

三、

四、

六、参考文献

[1]朱金钧麻新旗,微型计算机原理及应用技术(第2版),机械工业出版社,2005.7.

[2]顾元刚,汇编语言与微机原理教程,电子工业出版社(第2版),2000.6

[3]顾元刚,汇编语言与微机原理教程,电子工业出版社(第3版),2010.1

[4]刘婷婷王辉,微机原理及接口技术,北京师范大学出版社

课程设计独创性声明:

本设计是我们小组成员结合老师的建议独立完成的,所有电路图,元器件参数设定都是经过小组讨论得出。

 

学生签名:

指导教师评语:

 

课程设计成绩:

指导教师签名:

教研室意见:

 

教研室主任签名:

 

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

当前位置:首页 > PPT模板 > 其它模板

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

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