资源描述
学 号:
0120810340802
课 程 设 计
题 目
基于手动按钮建立8259A中断控制器硬件中断的应用
学 院
计算机科学与技术
专 业
计算机科学与技术
班 级
计科0808班
姓 名
朱林
指导教师
周银良
2011
年
7
月
5
日
接口课程设计任务书
学生姓名 朱林 专业班级 计科0808班
指导老师 周银良 工作单位
题目:基于手动按钮建立8259A中断控制器硬件中断的应用
(采用汇编语言设计)
一、 内容:
根据附录中由8259中断控制器建立的硬件中断图,建立硬件中断应用。在MIFID微机实验台上的IDE使用汇编程序设计语言编程实现。
二、 要求:
1、 使用MIFID微机实验台上的SW3按钮产生脉冲,让并行接口8255A的PC2接收,然后并行接口8255A的PC4产生一个方波,作为中断请求信号给IRQ10。发出一次中断请求信号由按下SW3按钮决定。
2、 在中断服务子程序中,设计按一定的规律点亮LED发光二极管。
3、 按一定的规律点亮LED发光二极管的数据存入文件中,同时数据在CRT上的指定位置显示出来。
4、 设计程序运行时的界面友好。
三、 进度安排:
序号
内容
所用时间
1
接口电路设计
2天
2
编写程序
1天
3
调试程序
1天
4
撰写课程设计报告
1天
合计
5天
指导教师签名: 年 月 日
系主任(责任教师)签名: 年 月 日
1 设计题目及要求
1.1 设计内容
根据附录中由8259中断控制器建立的硬件中断图,建立硬件中断应用。在MIFID微机实验台上的IDE使用汇编程序设计语言编程实现。
1.2 设计要求
1、 使用MIFID微机实验台上的SW3按钮产生脉冲,让并行接口8255A的PC2接收,然后并行接口8255A的PC4产生一个方波,作为中断请求信号给IRQ10。发出一次中断请求信号由按下SW3按钮决定。
2、 在中断服务子程序中,设计按一定的规律点亮LED发光二极管。
3、 按一定的规律点亮LED发光二极管的数据存入文件中,同时数据在CRT上的指定位置显示出来。
4、 设计程序运行时的界面友好。
2 设计思路
2.1 8255A工作说明
8255A是控制系统中应用非常广泛的可编程并行接口芯片,它有PA、PB和PC3个并行端口,可实现查询、中断等数据传输。
(1)基本特征
①8255具有两个8位(PA和PB)和两个4位(PC高/低4位)并行输入/输出端口,PC端口具有按位复位/置位功能。
②有0方式、1方式和2方式等,可适应CPU和I/O接口多种数据传送方式,分别对应无条件传送、应答传送和中断传送等。
③PC端口除用作数据端口外,当工作在1方式和2方式时,它的部分引线被分配为专用联络信号,PC端口可单独指定按位控制,当状态信号使用等。
④8255A内部主要由控制寄存器、状态寄存器和数据寄存器组成,PA、PB和PC均具有输出锁存、输出缓冲功能。
(2)8255A内部结构
①数据总线缓冲器
这是一个三态双向8位缓冲器,是8255A与CPU系统数据总线的接口,所有的数据发送和接收,以及CPU发出的控制字和从8255A输出的状态信息均通过该缓冲器传送。
②读写控制逻辑
读写控制逻辑由读信号RD ̄、写信号WR ̄、片选信号及端口选择地址信号A1A0来实现。读写控制逻辑控制总线的开放和关闭,以及信息的传送路径(通道)和传送方向。它可把CPU的控制命令或数据传送到相应的端口,也可控制外设信息或输入数据从相应端口传送到CPU。
③数据端口PA、PB、PC
8255A包括3个8位的输入输出端口,每个端口都有一个数据输入寄存
器和一个数据输出寄存器,根据处理器对接口的要求,作为输入端口都有三态输入缓冲和输出锁存功能。在实际应用中,PC的8位可分为两个4位端口(仅在0方式下),也可以分为一个5位端口和一个3位端口(1方式下)来使用。
④A组和B组控制电路
PA、PB和PC3个端口的工作方式是CPU通过向A、B两组控制寄存器写方式控制字来设定的。A组控制PA和PC的高4位,B组控制PB和PC的低4位,A组和B组的控制寄存器还接收PC的按位控制命令,以实现PC的按位置位/复位功能。
(3)8255A控制字
控制字用于控制8255A各个端口的工作方式和端口的输入/输出,它通过CS ̄+11端口输入到8255A。
本次实验中使用到两个主要芯片: Intel 8255(并行输入/输出接口芯片),Intel 8259(中断控制芯片)。
2.2 8259A工作原理
中断控制器8259A用于管理PC的硬件中断,在接口技术中的中断编程是指通过中断方式实现控制、数据采集等功能。在实际应用中,控制板通常使用PC主机板上的8259A实现中断,因此在进行中断编程时必须遵守PC对8259A的设置,也就是说在应用程序中无须对8259A进行编程设置,但必须了解8259A在PC中的设置。
(1)8259A功能
Intel8259A是与8080/8085系列及8088/8086系列兼容的可编程中断控制器,它的主要功能如下。
①具有8级优先权控制,通过级联可拓展至64级优先权控制。
②每一级中断都可以独立被屏蔽或允许。
③在中断相应周期,8259A可提供中断向量,从而快速地转入中断服务程序。
④8259A有多种工作方式,均可通过程序来选择。
Intel 8259A用于管理和控制80x86的可屏蔽中断请求,实现优先级判决,提供中断类型码,屏蔽中断请求等功能。使用单片8259A可以管理8级中断;采用级联方式,可扩充到64级(用9片8259A)。这次实验用到级联方式。在第1个中断响应周期,主从片均接受到中断响应信号;随后,主片在CAS2 - CAS0上发出被响应的从片ID码,通知从片在第2个中断响应周期将中断类型号传送至数据总线。
(2)8259A结构
8259A的内部由8个功能模块组成,如上图所示。其中与中断处理有关的有:中断请求寄存器(IRR)、中断服务寄存器(ISR)、中断屏蔽寄存器(IMR)、优先权电路及控制逻辑。
①中断请求寄存器(IRR):用于保存外设在IR7~IR0线上提出的中断请求,由链接在IR7~IR0线上的外设产生的触发信号来置位,其内容可用OCW2命令读出。
②中断服务寄存器(ISR):在中断相应之后的第一个INTA ̄周期,将ISR中与IRR对应的中断源置位,表明该中断源正处在被服务中,ISR的复位需要用
中断结束命令OCW2来执行。
③中断屏蔽寄存器(IMR):IMR对IRR中相应的中断请求起屏蔽的作用,用户可根据需要允许某些中断发生(相应位置0)或禁止某些中断(相应位置1)。
④优先权电路(PR):用于判断当前的中断请求是否输入到CPU,当中断优先权高于CPU在服务中断的优先权,则当前中断终止在服务中断,并响应当前中断请求;若当前中断优先权低于CPU在服务中断,则等待CPU完成当前中断后再响应该中断。8259A的中断优先权电路是一个采用优先权编码的数字比较电路,所谓优先权高低也就是中断类型编号的大小。
⑤读写控制逻辑:CPU对8259A的读写操作除INTA ̄信号作特殊操作外,一般的读写操作由CS ̄、WR ̄、RD ̄和A0等几个输入线控制,使8259A可以接收CPU写入的初始化命令字(ICW)和操作命令字(OCW),向CPU送出状态信息。
(3)操作命令字
8259A工作之前,需要用两类控制字对8259A进行工作方式的设定,并启动8259A进行规定的操作。初始化命令字ICW1—ICW4:计算机系统启动时由系统软件(初始化程序)设置,在计算机系统工作过程中一般不会改变。操作命令字OCW1—OCW3:由应用程序设定,用来对中断处理过程进行动态控制。
初始化过程结束,8259A进入工作状态后,才能写入操作命令字(OCW)。操作命令字OCW1~OCW3 的设置没有规定先后顺序。
①OCW1
OCW1 为中断屏蔽操作命令字,用来实现中断屏蔽功能,要求写入8259A的奇地址端口(A0=1)。OCW1 的内容被直接置入中断屏蔽寄存器IMR中。其中M0~M7 分别对应8259A的IR0~IR7。当OCW1 中的Mi 位为1时,则相应的IRi 的中断请求就被屏蔽。
M7
M6
M5
M4
M3
M2
M1
M0
1
OCW1
A0 D7 D6 D5 D4 D3 D2 D1 D0
② OCW2
a:设置中断优先级是否采用循环方式。 R=1,采用循环方式;R=0,采用非循环方式。
b:中断结束操作。 EOI=1,采用非自动中断结束方式,需要发送中断结束命令;EOI=0,采用自动中断结束方式,不需要发送中断结束命令。
③ OCW3
主要作用是读出IRR、ISR的状态。
ESMM
SMM
0
1
P
PR
RIS
0
OCW3
A0 D7 D6 D5 D4 D3 D2 D1 D0
本次实验用操作命令字ocw1来开放以及屏蔽IRQ10和IRQ2,ocw2发中断结束命令。
3 设计方案说明
3.1 硬件连接图
3.2 程序流程图
初始化变量
设置8259A
设置8255A
退出
开始
检测是否按Q或q?
4 源程序
STACK1 SEGMENT STACK
DW 200 DUP(?)
STACK1 ENDS
DATA SEGMENT
MESG1 DB 'Press SW3 one time to invoke interrupt one time,and to light one of LEDs',0ah,0dh
DB 'Exit with q/Q',0ah,0dh,'$'
LEDDATA DB 01H,02H,04H,08H,10H,20H,40H,80H
NUM DW(0)
INT0A_OFF DW(?)
INT0A_SEG DW(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AH,09H
MOV DX,OFFSET MESG1
INT 21h ;显示提示信息
MOV DX,303H ;初始化8255
MOV AL,83H
OUT DX,AL
MOV DX,300H ;LED灯熄灭
MOV AL,00H
OUT DX,AL
MOV AX,3572H ;获取原中断向量
INT 21H
MOV INT0A_OFF,BX ;保存原中断向量
MOV BX,ES
MOV INT0A_SEG,BX
CLI ;关中断
MOV AX,2572H
MOV DX,SEG LEDLIGHT ;设置新的中断向量
PUSH DS
MOV DS,DX
MOV DX,OFFSET LEDLIGHT
INT 21H
POP DS
STI ;开中断
IN AL,0A1H ;打开IRQ10
AND AL,0FBH
OUT 0A1H,AL
IN AL,21H ;打开IRQ2
AND AL,0FBH
OUT 21H,AL
L1:
MOV AH,0BH ;检查是否有’Q’或’q’键按下
INT 21H
INC AL
JNZ NEXT0 ; 若无键按下,则程序往下执行
MOV AH,08H ;如有’Q’或’q’键按下,则程序退出
INT 21H
CMP AL,'q'
JZ EXIT
CMP AL,'Q'
JZ EXIT
NEXT0:
MOV DX,302H ;查PC2是否为0
IN AL,DX
AND AL,04H
JNZ L1
PUSH CX
MOV CX,0FFH
LOOP1:LOOP LOOP1
POP CX
IN AL,DX
AND AL,04H
JZ L1
MOV DX,303H ;按下SW3,则PC4=1申请中断
MOV AL,09H
OUT DX,AL
PUSH CX
MOV CX,100
WT: LOOP WT
POP CX
MOV DX,303H ;置PC4=0
MOV AL,08H
OUT DX,AL
JMP L1
EXIT:
MOV AX,2572H ;恢复中断向量
MOV DX,INT0A_SEG
PUSH DS
MOV DS,DX
MOV DX,INT0A_OFF
INT 21H
POP DS
IN AL,0A1H ;屏蔽IRQ10
OR AL,04H
OUT 0A1H,AL
IN AL,21H ;屏蔽IRQ2
OR AL,04H
OUT 21H,AL
MOV AX,4C00H ;程序退出
INT 21H
LEDLIGHT PROC FAR ;中断服务程序
PUSH SI
PUSH AX
PUSH DX
CLI ;关中断
MOV SI,OFFSET LEDDATA
ADD SI,NUM
MOV AL,[SI]
MOV DX,300H
OUT DX,AL ;点亮LED
INC NUM
CMP NUM,07H
JNE NEXT
MOV NUM,00H
NEXT :
MOV AL,62H ;发中断结束命令
MOV DX,0A0H
OUT DX,AL ;向从片8259发EOI命令
OUT 020H,AL ;向主片8259发EOI命令
STI ;开中断
POP DX
POP AX
POP SI
IRET
LEDLIGHT ENDP
CODE ENDS
END START
5 实验心得及体会
通过这次课程设计,我学到很多东西。首先,在做这次实验之前,我将书本上关于中断控制器和并行接口的相关内容温习了一遍,熟悉了8259A和8255A的相关控制字的设置以及每个控制字的含义,这样,在做这个实验的时候,能够很清楚的知道怎样接线,怎样实现达到要求,虽然程序已经给出,但要明白程序中每个语句的含义,还是花费了不少时间。其次,这次实验增强了我的动手能力,接好线后,才能运行程序,得到预期效果,我的实验题目是基于手动按钮建立8259A中断控制器硬件中断的应用,并且要在中断服务子程序中,设计按一定的规律点亮LED发光二极管。最后,我希望通过这次课程设计,在以后的学习和工作中,找出自己的不足,并努力克服和改善这些缺点。
本科生课程设计成绩评定表
班级:计算机0808班 姓名:朱林 学号:0120810340802
序号
评分项目
满分
实得分
1
学习态度认真、遵守纪律
10
2
设计分析合理性
10
3
设计方案正确性、可行性、创造性
20
4
设计结果正确性
40
5
设计报告的规范性
10
6
设计验收
10
总得分/等级
评语:
注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、
及格(60-69分)、60分以下为不及格
指导教师签名:
2011 年 月 日
展开阅读全文