中断控制8259三.docx
《中断控制8259三.docx》由会员分享,可在线阅读,更多相关《中断控制8259三.docx(8页珍藏版)》请在冰豆网上搜索。
中断控制8259三
武夷学院实验报告
课程名称:
__汇编语言与微机接口__项目名称:
中断控制8259
姓名:
_安小圣_专业:
_计科_班级:
_10
(2)班__学号:
_20104061049___
同组成员_____无____
一、实验准备:
(一)、实验环境:
硬件环境:
微型计算机DVCC-8086JH实验箱
软件环境:
Windows操作系统,debug编程模式下
(二)、实验目的:
1、掌握中断控制器8259A与微机接口的原理与方法。
2、掌握中断控制器8259A的应用编程。
(二)、实验知识准备:
1、8259A的内部结构:
8259A是专为控制优先级中断而设计的芯片。
它将中断源按优先级排队、辨
认中断源、提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理8级中断。
它由中
断请求寄存器、优先级分析器、中断服务寄存器、中断屏蔽寄存器、数据总线缓冲器、读写控制电路和
级联缓冲器、比较器组成。
2、8259A编程及初始化:
(1)写初始化命令字:
a、写初始化命令字ICW1(A0=0),以确定中断请求信号类型,清除中断屏蔽寄存器,中断优
先级排队和确定系统用单片还是多片。
b、写初始化命令字ICW2,以定义中断向量的高五位类型码。
C、写初始化命令字ICW3,以定义主片8259A中断请求线上IRO-IR7有无级联的8259A从片。
d、写初始化命令字ICW4,用来定义8259A工作时用8085模式,还是8086模式,以及中断服务寄存器复位方式。
(2)、写控制命令字:
a、写操作命令字0CW1,用来设置或清除对中断源的屏蔽。
b、操作命令字0CW2,设置优先级是否进行循环、循环方式及中断结束方式。
C、操作命令字0CW3,设置查询方式、特殊屏蔽方式以及读取8259中断寄存器的当前状态。
(3)、8259A查询字:
通过OCW3命令字的设置,可使CPU处于查询方式,随时查询8259A有否中断请求,有则转入相应的中断服务程序。
(三)、实验内容:
由于实验箱中已设计有一片8259A的中断控制芯片,工作于主片方式,8个中断请求输入端IR0-IR7
对应的中断型号为8-F。
8259A和8088系统总线相连,8259A上连有一系统地址线A0,故8259A有2个
端口地址,本系统中位20H,21H。
20H用来写ICW1,21H用来写ICW2、ICW3、ICW4,初始化命令字写好
后,再写操作命令字。
OCW2、OCW3用端口地址20H,OCW1用端口地址21H。
在实验中,会使用3号中断
源,IR3插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A
发出中断请求信号。
如果中断源电平信号不符规定要求则自动转到7号中断,显示“Er”。
CPU相应中断
后,在中断服务中,对中断次数进行计数并显示,计满5次结束,显示器显示“8259GooD”。
二、实验过程记录:
1、先在MasmforWindows集成实验环境共享版中编写所需代码:
CODESSEGMENT
ASSUMECS:
CODES;定义代码段
INTPORT1EQU0020H;定义8259端口0地址
INTPORT2EQU0021H;定义8259端口1地址
INTQ3EQUINTREEUP3;定义中断地址
INTQ7EQUINTREEUP7;定义出错中断地址
CONTPORTEQU00DFH;定义8279命令数据口地址
DATAPORTEQU00DEH;定义8279数据口地址
ORG0B2E0H;定义代码起始段地址
START:
JMPTint1
DATA1DB50H,50H,79H,00H,00H,00H,00H,00H;置出错显示"ERR"显示代码表
DATA2DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;置"0-F"显示代码表
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
DATA3DB06H,40H,40H,40H,6FH,6DH,5BH,7FH;置8259-1显示代码
DATA4DB5EH,3FH,3FH,5CH,6FH,6DH,5BH,7FH;置8259good显示代码
Tint1:
CLD;关中断
MOVDI,0580H;清数据区0580-0587H
MOVCX,08H
XORAX,AX
REPSTOSW
LEASI,DATA3;显示8259-1
CALLLEDDISP
MOVAX,0H;调写中断向量子程序
MOVDS,AX;
CALLWRINTVER
MOVAL,13H;写ICW1,电平触发、单片,要ICW4
MOVDX,INTPORT1
OUTDX,AL
MOVAL,08H;写ICW2,中断号的高5位
MOVDX,INTPORT2
OUTDX,AL
MOVAL,09H;写ICW4,表示8088模式,缓冲方式,一般嵌套
OUTDX,AL
MOVAL,0F7H;允许8259IR3中断
OUTDX,AL
MOVBYTEPTRDS:
[0601H],01H;置中断次数初值
STI;开中断
WATING:
JMPWATING;等待中断
;写中断向量子程序
WRINTVER:
MOVAX,0000H
MOVES,AX;写3号中断中断向量
MOVDI,002CH
LEAAX,INTQ3
STOSW
MOVDI,003CH;写7号中断中断向量
LEAAX,INTQ7
STOSW
MOVAX,CS
STOSW
RET
;3号中断服务程序
INTREEUP3:
CLI;关中断
MOVAL,DS:
[0601H];取中断次数
CALLCONVERS;将中断次数转换为显示代码
MOVSI,0580H
CALLLEDDISPD;显示中断次数
MOVAL,20H
MOVDX,INTPORT1
OUTDX,AL
ADDBYTEPTRDS:
[0601H],01H;中断次数加
CMPBYTEPTRDS:
[0601H],06H;判断次数满5次否?
JNAINTRE1;不满转移
LEASI,DATA4;满5次显示“8259good”
CALLLEDDISP
INTRE3:
JMPINTRE3
;转换子程序
CONVERS:
MOVBH,0H
ANDAL,0FH
MOVBL,AL
MOVAL,CS:
[BX+DATA2]
MOVBX,0580H
MOVDS:
[BX],AL
RET
INTRE1:
MOVAL,20H;不满5次,开中断返回
MOVDX,INTPORT1
OUTDX,AL
STI
IRET
;7号中断服务程序:
INTREEUP7:
CLI;关中断
LEASI,DATA1
CALLLEDDISP;显示ERR
MOVAL,20H
MOVDX,INTPORT1
OUTDX,AL
IRET;中断返回
;显示子程序1
LEDDISP:
MOVAL,90H
MOVDX,CONTPORT
OUTDX,AL
MOVBYTEPTRDS:
[0600H],00H
LED1:
CMPBYTEPTRDS:
[0600H],07H
JALED2
MOVBL,DS:
[0600H]
MOVBH,00H
MOVAL,CS:
[BX+SI]
MOVDX,DATAPORT
OUTDX,AL
ADDBYTEPTRDS:
[0600H],01H
JNZLED1
LED2:
RET
;显示子程序2
LEDDISPD:
MOVAL,90H
MOVDX,CONTPORT
OUTDX,AL
MOVBYTEPTRDS:
[0600H],00H
LEDD1:
CMPBYTEPTRDS:
[0600H],07H
JALEDD2
MOVBL,DS:
[0600H]
MOVBH,00H
MOVAL,DS:
[BX+SI]
MOVDX,DATAPORT
OUTDX,AL
ADDBYTEPTRDS:
[0600H],01H
JNZLEDD1
LEDD2:
RET
CODESENDS
ENDSTART
2、把8259A的IR3插孔和SP插孔相连。
SP插孔初始电平为低电平。
3、然后用数据线连接PC和8086系统实验箱,并运行代码程序。
4、当实验箱系统显示器上显示“DVCC-86H”状态时,按任意键,系统显示命令符“—”。
按GO键,显示“1000XX”,输入F000:
B2E0,接着按EXEC键,在DVCC—8086JH上显示“8259—1”。
5、按AN键,每按2次产生一次中断,在显示器左边一位显示中断次数,满5次中断,显示器显示“8259GooD”。
实验操作成绩(百分制)__________实验指导教师签字:
__________
三、实验小结:
实验心得:
通过此次实验,我基本上掌握了中断控制器8259A与微机接口的原理和
方法,还熟悉了中断控制器8259A的应用编程方法,在编程的过程中,虽然我
还是有很多不足,有很多不理解的,但是在老师的耐心指导下,终于完成了实
验所需程序。
在此过程中,我也收获了信心和快乐。
实验报告成绩(百分制)__________实验指导教师签字:
__________