本实验旨在通过西安唐都实验室提供的平台,探索与实践可编程并行接口的应用及原理,加深对硬件控制和数据传输机制的理解。参与者将学习如何编写代码以实现高效的数据交换和设备管理,适用于计算机科学、电子工程及相关领域的学生和技术爱好者。
基本输入输出实验要求编写程序使用8255的PA口作为LED灯的输出端,并用PB口连接开关进行数据传输。
跑马灯显示实验则需要让8255的PA、PB两个接口均设置为输出模式,控制两组LED从左至右和从右至左依次点亮,形成循环效果。其中一组由D7~D0组成,另一组则是D15~D8。
交通信号模拟实验中初始状态东西方向与南北方向均为红灯;随后变为东西绿、南北红的状态,并在此基础上使东西的绿灯闪烁3秒保持不变;接下来变化为东西红、南北绿,最后再让东西继续保持红色的同时令南北的绿色开始以同样方式闪烁3秒钟。
### 实验概述
本次实验基于TD-PITE微机接口实验平台使用8255可编程并行口实现基本输入输出功能及跑马灯显示和交通信号模拟等任务。实验有助于理解8255的工作原理及其配置方法,学习微处理器与外设之间的数据交互过程。
### 实验目的
1. 掌握8255的基本工作模式及其设置方式。
2. 通过编程实现基本的输入输出功能。
3. 设计跑马灯显示程序以控制LED循环点亮。
4. 模拟交通信号灯系统,展示不同状态变化。
### 实验设备
- 计算机及TD-PITE微机接口实验平台
- Wmd86集成开发环境
### 实验原理概述
#### 8255可编程并行口简介
此芯片具有三个独立的IO端口(A、B和C),每个都可以配置为输入或输出模式。根据具体需求,可以采用三种工作方式之一:基本I/O操作、选通I/O控制及双工数据传输。
### 实验内容详解
#### 1. 基本输入输出实验
该部分要求PA口作为LED的输出端而PB口用于读取开关状态并将其发送至LED显示。
**代码解析**
```assembly
IOY0EQU0600H; 片选地址定义为IOY0开始处
MY8255_AEQUIOY0+0*2; 8255的A口地址定义
MY8255_BEQUIOY0+1*2; 8255的B口地址定义
MY8255_CEQUIOY0+2*2; 8255的C口地址定义
MY8255_MODEEQUIOY0+3*2; 控制寄存器地址
MOVDX, MY8255_MODE ; 设置工作模式为PA输出PB输入
MOVAL, 82H
OUTDX, AL
AA1:
INAL, DX ; 读取开关状态
CALLDELAY
OUTDX, AL ; 将此值发送给LED显示
JMP AA1
; 延时函数定义如下:
```
#### 跑马灯显示实验
本部分需要PA和PB口均设置为输出,控制LED从左至右或从右向左逐个点亮。
**代码解析**
```assembly
IOY0EQU0600H ; 片选地址定义相同
MY8255_AEQUIOY0+0*2; 8255的A口地址定义不变
MY8255_BEQUIOY0+1*2; 8255的B口地址定义不变
MOVDX, MY8255_MODE ; 设置工作模式为PA输出PB输出
MOVAL, 00H
OUTDX, AL
ABC:
CALLDELAY
MOVAL, CL ; 输出当前值至LED显示端
OUTDX, AL
ROLCL,1 ; 循环位移以改变下一个灯的状态
JMP ABC
; 延时函数定义如下:
```
#### 交通信号模拟实验
此部分通过编程实现初始状态及后续变化,包括东西绿、南北红;东西灭、南北红;以及两种闪烁模式。
**代码解析**
```assembly
IOY0EQU0600H ; 片选地址不变
MY8255_AEQUIO800+0*2; 重新定义端口以适应新实验需求
MOVDX, MY8255_MODE ; 设置工作模式为PA输出PB输出
MOVAL, 00H
OUTDX, AL
ABC:
MOVCX, DXHNBH ; 初始状态设置所有灯均为红光
CALLDELAY
CALLD ; 调用其他函数以改变信号灯的状态
```
### 总结
通过实验,