Pixiv - KiraraShss
实验三 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 供系统串口使用。



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

ICW2: 08H

ICW3: 04H

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

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

3. 连线

8255 连线见实验一
4. 实验代码
基础实验:
P8255A EQU 0640HP8255B EQU 0642HP8255C EQU 0644HP8255MODE EQU 0646H
CODE SEGMENT ASSUME CS:CODESTART: 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 MAINMIR6: MOV AL, 0FH ;只点亮低四位 MOV DX, P8255B OUT DX, AL ;MOV AL, 20H ;手动结束中断 ;OUT 20H, AL ;自动模式下不需要 CALL DELAY ;等待一段时间 IRETMIR7: 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 RETCODE ENDS END START扩展实验:
1. 中断平级
P8255A EQU 0640HP8255B EQU 0642HP8255C EQU 0644HP8255MODE EQU 0646H
DATA SEGMENT SIGN DB 00HDATA ENDS
CODE SEGMENT ASSUME CS:CODE, DS:DATASTART: 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 B2B1: MOV DX, P8255B IN AL, DX CMP AL, 01H JZ BACK ROR AL, 1 CALL DELAY OUT DX, AL JMP MAINB2: MOV DX, P8255B IN AL, DX CMP AL, 80H JZ BACK ROL AL, 1 CALL DELAY OUT DX,AL JMP MAINBACK: MOV SIGN, 00H JMP MAIN
MIR6: MOV SIGN, 01H IRETMIR7: MOV SIGN, 02H IRET
DELAY: PUSH CX MOV CX, 0FFFFH LOOP $ POP CX RET
CODE ENDS END START2. 中断嵌套(IR6可打断IR7)
P8255A EQU 0640HP8255B EQU 0642HP8255C EQU 0646HP8255MODE EQU 0646H
CODE SEGMENT ASSUME CS:CODESTART: 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 STIMAIN: JMP MAIN
MIR6: STI PUSH AXAA1: MOV DX, P8255B IN AL, DX CMP AL, 01H JZ EXIT6 ROR AL, 1 CALL DELAY OUT DX, AL JMP AA1EXIT6: POP AX IRET
MIR7: STI PUSH AXAA2: MOV DX, P8255B IN AL, DX CMP AL, 80H JZ EXIT7
ROL AL, 1 CALL DELAY OUT DX, AL JMP AA2EXIT7: POP AX IRET
DELAY: MOV CX, 0FFFFH LOOP $ RETCODE ENDS END START文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
实验三 8259中断优先级实验
https://mathison2020.github.io/posts/2022-11-12-mcexp3/ 相关文章 智能推荐
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 起始的一段空间中,并通过系统命令查看该存储空间,检查写入数据是否正确。 要求:分别按规则字、非规则字和字节三种方式将数据写入存储器,并观察实验结果。 拓展部分 编写程序实现如
随机文章 随机推荐