实验一 8255并行接口实验

887 字
4 分钟
实验一 8255并行接口实验

实验一 8255并行接口实验#

1. 实验内容#

基础部分
编写一个基本输入输出程序,使8255的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。要求:数据灯的显示随开关动态变化。
拓展部分
在基础实验上增加如下功能:

  1. 若开关 K7~K0 均为高电平,则程序退出。
    • 当 K0 为高电平时,数据灯高4位亮;
    • 当 K0 为低电平时,数据灯低4位亮。
    • 当 K1K0=00 时,数据灯全部熄灭;
    • 当 K1K0=01 时,数据灯低4位亮;
    • 当 K1K0=10 时,数据灯高4位亮;
    • 当 K1K0=11 时,数据灯全亮。

2. 注意事项#

  1. 连线时注意与输入输出接口地址相对应

信号线

编址空间

主片8259

20H、21H

从片8259

A0H、A1H

扩展I/O接口

IOY0

0600H~063FH

IOY1

0640H~067FH

IOY2

0680H~06BFH

IOY3

06C0H~06FFH

  1. 8255芯片控制字:

8255控制字格式
8255控制字格式

3. 连线#

机箱连线
机箱连线

4. 实验代码#

基础实验:#

;IOY1 —— 0640H
P8255A EQU 0640H
P8255B EQU 0642H
P8255C EQU 0644H
P8255MODE EQU 0646H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX, P8255MODE
MOV AL, 90H ;初始化8255:A口输入,B口输出
OUT DX, AL
MAIN:
MOV DX, P8255A ;A口读开关状态
IN AL, DX
MOV DX, P8255B ;B口送LED状态
OUT DX, AL
JMP MAIN
CODE ENDS
END START

扩展实验:#

1.#
P8255A EQU 0640H
P8255B EQU 0642H
P8255C EQU 0644H
P8255MODE EQU 0646H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX, P8255MODE
MOV AL, 90H ;初始化8255:A口输入,B口输出
OUT DX, AL
MAIN:
MOV DX, P8255A ;A口读开关状态
IN AL, DX
CMP AL, 0FFH ;判断是否开关全部为高
JZ EXIT ;若是,退出程序
MOV DX, P8255B ;B口送LED状态
OUT DX, AL
JMP MAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
2.#
P8255A EQU 0640H
P8255B EQU 0642H
P8255C EQU 0644H
P8255MODE EQU 0646H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX, P8255MODE
MOV AL, 90H ;初始化8255:A口输入,B口输出
OUT DX, AL
MAIN:
MOV DX, P8255A ;A口读开关状态
IN AL, DX
CMP AL, 0FFH ;判断是否开关全部为高
JZ EXIT ;若是,退出程序
AND AL, 01H ;取低位
CMP AL, 01H
JNZ L1 ;若K0未打开,点亮低四位
MOV AL, 0F0H ;否则,点亮高四位
JMP OUTPUT
L1:
MOV AL, 0FH ;点亮低四位
OUTPUT:
MOV DX, P8255B ;B口送LED状态
OUT DX, AL
JMP MAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
3.#
P8255A EQU 0640H
P8255B EQU 0642H
P8255C EQU 0644H
P8255MODE EQU 0646H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX, P8255MODE
MOV AL, 90H ;初始化8255:A口输入,B口输出
OUT DX, AL
MAIN:
MOV DX, P8255A ;A口读开关状态
IN AL, DX
CMP AL, 0FFH ;判断是否开关全部为高
JZ EXIT ;若是,退出程序
AND AL, 03H ;取低2位
CMP AL, 0H
JNZ L1 ;非00
MOV AL, 00H ;00:全灭
JMP OUTPUT
L1:
CMP AL, 1H
JNZ L2 ;非01
MOV AL, 0FH ;01:点亮低四位
JMP OUTPUT
L2:
CMP AL, 2H
JNZ L3 ;非11
MOV AL, 0F0H ;01:点亮高四位
JMP OUTPUT
L2:
MOV AL, 0FFH ;11:全部点亮
OUTPUT:
MOV DX, P8255B ;B口送LED状态
OUT DX, AL
JMP MAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START

另一种实现方法:

P8255A EQU 0640H
P8255B EQU 0642H
P8255C EQU 0644H
P8255MODE EQU 0646H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX, P8255MODE
MOV AL, 90H ;初始化8255:A口输入,B口输出
OUT DX, AL
MAIN:
MOV BL, 00H
MOV DX, P8255A ;A口读开关状态
IN AL, DX
CMP AL, 0FFH ;判断是否开关全部为高
JZ EXIT ;若是,退出程序
PUSH AX ;保存状态
LOWL:
AND AL, 01H ;检测K0
JZ HIGHL ;K0=0
OR BL, 0FH ;点亮低4位
HIGHL:
AND AL, 02H ;检测K1
JZ OUTPUT ;K1=0
OR BL, 0F0H ;点亮高4位
OUTPUT:
MOV AL, BL
MOV DX, P8255B ;B口送LED状态
OUT DX, AL
JMP MAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START

文章分享

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

实验一 8255并行接口实验
https://mathison2020.github.io/posts/2022-11-11-mcexp1/
作者
Mathison2020
发布于
2022-11-11
许可协议
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
实验二 存储器扩展实验
微机实验 实验二 存储器扩展实验1. 实验内容基础部分 编写实验程序,将 0000H~000FH(16个十六位的数据)写入SRAM从 8000:0000H 起始的一段空间中,并通过系统命令查看该存储空间,检查写入数据是否正确。 要求:分别按规则字、非规则字和字节三种方式将数据写入存储器,并观察实验结果。 拓展部分 编写程序实现如
5
实验三 8259中断优先级实验
微机实验 实验三 8259中断优先级实验1. 实验内容基础部分 编写中断实验程序: 主程序通过 8255 的 PB 口输出 0FFH,使数据灯 D0~D7 全亮; IR6中断服务程序使绿灯亮(红灯灭),延时一段时间后返回主程序; IR7中断服务程序使红灯亮(绿灯灭),延时一段时间后返回主程序。 要求: 按单脉冲开关 KK1:响应
随机文章 随机推荐
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 天前

目录