实验三 8259中断优先级实验

994 字
5 分钟
实验三 8259中断优先级实验

实验三 8259中断优先级实验#

1. 实验内容#

基础部分

编写中断实验程序:

  • 主程序通过 8255 的 PB 口输出 0FFH,使数据灯 D0~D7 全亮;

  • IR6中断服务程序使绿灯亮(红灯灭),延时一段时间后返回主程序;

  • IR7中断服务程序使红灯亮(绿灯灭),延时一段时间后返回主程序。

要求:

  • 按单脉冲开关 KK1:响应IR6中断请求;

  • 按单脉冲开关 KK2:响应IR7中断请求。

拓展部分

使用单脉冲开关控制 LED 灯的移动方向:

  • 初始时 D7 点亮,其余灯熄灭;

  • 任意时刻按下 KK1,点亮的 LED 灯立即向右循环移动;

  • 任意时刻按下 KK2,点亮的 LED 灯立即向左循环移动。

2. 实验原理#

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

8259的内部连接及外部管脚引出
8259的内部连接及外部管脚引出

ICU寄存器列表
ICU寄存器列表

中断向量
中断向量

ICW1: 11H 上升沿触发,有 ICW4

ICW1.jpg
ICW1.jpg

ICW2: 08H

ICW2.jpg
ICW2.jpg

ICW3: 04H

ICW3.jpg
ICW3.jpg

ICW4: 07H 全嵌套非缓冲,自动结束中断,8086~Pentium CPU

ICW4.jpg
ICW4.jpg

OCW1: 允许IR7、IR6、IR4(键盘)中断

OCW1.jpg
OCW1.jpg

3. 连线#

机箱连线
机箱连线

8255 连线见实验一

4. 实验代码#

基础实验:#

P8255A EQU 0640H
P8255B EQU 0642H
P8255C EQU 0644H
P8255MODE EQU 0646H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX, P8255MODE
MOV AL, 90H
OUT DX, AL
MOV AL, 0FFH
MOV DX, P8255B
OUT DX, AL
LEA AX, MIR6 ;IR6中断向量填充
MOV SI, 0038H
MOV [ES:SI], AX
MOV AX, CS
MOV SI, 003AH
MOV [ES:SI], AX
LEA AX, MIR7 ;IR7中断向量填充
MOV SI, 003CH
MOV [ES:SI], AX
MOV AX, CS
MOV SI, 003EH
MOV [ES:SI], AX
CLI ;关中断
MOV AL, 11H ;ICW1:级联(主片),上升沿,有ICW4
OUT 20H, AL
MOV AL, 08H ;ICW2:
OUT 21H, AL
MOV AL, 04H ;ICW3:
OUT 21H, AL
MOV AL, 07H ;ICW4:全嵌套非缓冲,主片,自动结束中断,8086~Pentium CPU
OUT 21H, AL
MOV AL, 2FH ;OCW1 允许IR1中断
OUT 21H, AL
STI ;开中断
MAIN:
MOV AL, 0FFH
MOV DX, P8255B
OUT DX, AL
JMP MAIN
MIR6:
MOV AL, 0FH ;只点亮低四位
MOV DX, P8255B
OUT DX, AL
;MOV AL, 20H ;手动结束中断
;OUT 20H, AL ;自动模式下不需要
CALL DELAY ;等待一段时间
IRET
MIR7:
MOV AL, 0F0H ;只点亮高四位
MOV DX, P8255B
OUT DX, AL
;MOV AL, 20H
;OUT 20H, AL
CALL DELAY
IRET
DELAY:
PUSH CX
MOV CX,0FFFFH
LOOP $
POP CX
RET
CODE ENDS
END START

扩展实验:#

1. 中断平级#
P8255A EQU 0640H
P8255B EQU 0642H
P8255C EQU 0644H
P8255MODE EQU 0646H
DATA SEGMENT
SIGN DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, 0000H
MOV DS, AX
MOV DX, P8255MODE
MOV AL, 80H
OUT DX, AL
MOV DX, P8255B
MOV AL, 80H
OUT DX, AL
LEA AX, MIR6
MOV SI, 38H
MOV [ES:SI], AX
MOV AX, CS
MOV SI, 3AH
MOV [ES:SI], AX
LEA AX, MIR7
MOV SI, 3CH
MOV [ES:SI], AX
MOV AX, CS
MOV SI, 3EH
MOV [ES:SI], AX
CLI
MOV AL, 11H
OUT 20H, AL
MOV AL, 08H
OUT 21H, AL
MOV AL, 04H
OUT 21H, AL
MOV AL, 07H
OUT 21H, AL
MOV AL, 2FH
OUT 21H, AL
STI
MAIN:
CMP SIGN, 00H
JZ MAIN
CMP SIGN, 02H
JZ B2
B1:
MOV DX, P8255B
IN AL, DX
CMP AL, 01H
JZ BACK
ROR AL, 1
CALL DELAY
OUT DX, AL
JMP MAIN
B2:
MOV DX, P8255B
IN AL, DX
CMP AL, 80H
JZ BACK
ROL AL, 1
CALL DELAY
OUT DX,AL
JMP MAIN
BACK:
MOV SIGN, 00H
JMP MAIN
MIR6:
MOV SIGN, 01H
IRET
MIR7:
MOV SIGN, 02H
IRET
DELAY:
PUSH CX
MOV CX, 0FFFFH
LOOP $
POP CX
RET
CODE ENDS
END START
2. 中断嵌套(IR6可打断IR7)#
P8255A EQU 0640H
P8255B EQU 0642H
P8255C EQU 0646H
P8255MODE EQU 0646H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AX, 0000H
MOV DS, AX
MOV DX, P8255MODE
MOV AL, 80H
OUT DX, AL
MOV DX, P8255B
MOV AL, 80H
OUT DX, AL
LEA AX, MIR6
MOV SI, 38H
MOV [ES:SI], AX
MOV AX, CS
MOV SI, 3AH
MOV [ES:SI], AX
LEA AX, MIR7
MOV SI, 3CH
MOV [ES:SI], AX
MOV AX, CS
MOV SI, 3EH
MOV [ES:SI], AX
CLI
MOV AL, 11H ;ICW1
OUT 20H, AL
MOV AL, 08H ;ICW2
OUT 21H, AL
MOV AL, 04H ;ICW3
OUT 21H, AL
MOV AL, 07HB ;ICW4
OUT 21H, AL
MOV AL, 2FH ;OCW1
OUT 21H, AL
STI
MAIN:
JMP MAIN
MIR6:
STI
PUSH AX
AA1:
MOV DX, P8255B
IN AL, DX
CMP AL, 01H
JZ EXIT6
ROR AL, 1
CALL DELAY
OUT DX, AL
JMP AA1
EXIT6:
POP AX
IRET
MIR7:
STI
PUSH AX
AA2:
MOV DX, P8255B
IN AL, DX
CMP AL, 80H
JZ EXIT7
ROL AL, 1
CALL DELAY
OUT DX, AL
JMP AA2
EXIT7:
POP AX
IRET
DELAY:
MOV CX, 0FFFFH
LOOP $
RET
CODE ENDS
END START

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

实验三 8259中断优先级实验
https://mathison2020.github.io/posts/2022-11-12-mcexp3/
作者
Mathison2020
发布于
2022-11-12
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
实验八 数码管显示实验
微机实验 实验八 数码管显示实验1. 实验内容基础部分 用一片 8255 接口芯片的 A 口和 B 口分别连接数码管段码接口(ABCDEFG、Dp)和位码接口(X1~X6)。编写程序实现以下两种显示方式: 使六位数码管从右到左逐位显示移动的数字 0 到 9,即数字 0 从最右端移动到最左端,数字 1 从最右端移动到最左端,….,
2
实验四 A/D转换实验
微机实验 实验四 A/D转换实验1. 实验内容基础+扩展部分 编写实验程序,将 ADC 单元中提供的 0V~5V 信号源作为 ADC0809 的模拟输入量,进行 A/D 转换,转换结果通过 8 位 LED 进行显示。分别使用延时等待、查询和中断三种方式实现本实验的实验内容。 2. 实验原理 延时方式:又名等待方式、定时采样方式,
3
实验五 D/A转换实验
微机实验 实验五 D/A转换实验1. 实验内容基础部分 编写程序,产生周期的锯齿波、矩形波、三角波和阶梯波,经 D/A 转换,显示在软件模拟示波器上。要求:每种波形的周期数、阶梯波的阶梯数可通过参数设置。 扩展部分 在软件模拟示波器上显示锯齿波、矩形波、三角波和阶梯波,并使用单脉冲开关KK1在四种波形间进行切换。 2. 实验原理
4
实验一 8255并行接口实验
微机实验 实验一 8255并行接口实验1. 实验内容基础部分编写一个基本输入输出程序,使8255的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。要求:数据灯的显示随开关动态变化。拓展部分在基础实验上增加如下功能: 若开关 K7~K0 均为高电平,则程序退出。 当 K0 为高电平时,数据灯高4位亮; 当 K0 为低电平时
5
实验二 存储器扩展实验
微机实验 实验二 存储器扩展实验1. 实验内容基础部分 编写实验程序,将 0000H~000FH(16个十六位的数据)写入SRAM从 8000:0000H 起始的一段空间中,并通过系统命令查看该存储空间,检查写入数据是否正确。 要求:分别按规则字、非规则字和字节三种方式将数据写入存储器,并观察实验结果。 拓展部分 编写程序实现如
随机文章 随机推荐
Profile Image of the Author
Mathison2020
Never really desperate, only the lost of the soul.
公告
欢迎来到 Mathison's Blog,这里记录算法、实验和学习笔记。
分类
标签
站点统计
文章
12
分类
3
标签
6
总字数
12,352
运行时长
0
最后活动
0 天前

目录