微机原理8255并行接口实验:编写程序,使用 8255,输入 4 路开关状态,并利用这些开关 状态,实现 8255 输出控制 4 路发光二极管,当开关闭合时,对应的发光二极管 点亮,开关断开时,对应的发光二极管熄灭。需给出详细的注释。
时间: 2023-06-18 11:04:54 浏览: 216
好的,下面是这个实验的详细步骤和注释:
1. 硬件连接
将 8255 的端口 A 接入 4 路开关,端口 B 接入 4 路发光二极管,端口 C 不连接。
2. 编写程序
首先,需要初始化 8255,设置端口 A 为输入口,端口 B 为输出口。代码如下:
```
mov al, 10000000b ; 设置 8255 控制字,配置端口 A 为输入口,端口 B 为输出口
out 61h, al ; 将控制字输出到 8255 控制寄存器
```
然后,读取端口 A 上的开关状态,并将其写入端口 B 上,控制对应的发光二极管点亮或熄灭。代码如下:
```
loop:
in al, 60h ; 从端口 A 读取开关状态
and al, 00001111b ; 只保留低 4 位
out 62h, al ; 将开关状态写入端口 B
jmp loop ; 循环检测
```
这样,当开关闭合时,对应的发光二极管就会点亮,开关断开时,对应的发光二极管就会熄灭。
3. 完整代码
下面是完整的汇编代码:
```
.model small
.stack 100h
.data
.code
main proc
mov ax, @data
mov ds, ax ; 初始化数据段寄存器
; 初始化 8255,设置端口 A 为输入口,端口 B 为输出口
mov al, 10000000b ; 设置 8255 控制字,配置端口 A 为输入口,端口 B 为输出口
out 61h, al ; 将控制字输出到 8255 控制寄存器
loop:
in al, 60h ; 从端口 A 读取开关状态
and al, 00001111b ; 只保留低 4 位
out 62h, al ; 将开关状态写入端口 B
jmp loop ; 循环检测
main endp
end main
```
注意,这个程序需要在具有 8255 并行接口的微机上运行,否则无法正常工作。
阅读全文