8155并行I/O口扩展:微机原理实验动态扫描程序
需积分: 10 113 浏览量
更新于2024-07-29
收藏 84KB DOC 举报
"该资源是关于单片机实验的,主要涵盖了8155并行I/O口的扩展以及动态扫描程序的编制。实验目的是通过编写汇编语言程序,掌握微机原理与接口技术,尤其是8155芯片的使用。程序中包括了对8155端口的初始化、数据传输以及动态扫描显示的功能。"
实验中的关键知识点包括:
1. **8155并行I/O口**:8155是一款可编程的并行I/O芯片,常用于单片机系统中扩展输入输出功能。它包含三个8位双向I/O口(A、B、C),一个定时/计数器,以及一个内部RAM。
2. **汇编语言编程**:实验中的代码是用汇编语言编写的,这是一种低级语言,可以直接对应到机器指令。`ORG`指令用于指定程序的起始地址,`LJMP`用于无条件跳转,`MOV`用于数据移动,`MOVC`用于查表操作,`DJNZ`用于减一不零跳转,`RLA`是左移位指令等。
3. **8155初始化**:在`MAIN`部分,通过将控制字`#03H`写入地址`#6100H`来初始化8155。这通常会设置端口的工作模式和状态。
4. **动态扫描显示**:`DISPLY`子程序实现了动态扫描显示,使用`R0`作为扫描计数器,`R3`作为位选择信号,通过查表(`DTAB`)获取ASCII码,然后通过8155的B口和A口交替输出,实现数码管的显示。
5. **查表操作**:`DTAB`定义了一个数据表,存储了数字9到0对应的七段数码管编码。在显示过程中,根据`R0`的值查表得到相应的七段码,并通过8155的A口输出。
6. **延时函数**:`DELAY`子程序用于延迟,通过多层循环实现,这里的延迟时间大约为0.5秒,用于保证数码管的稳定显示。
7. **循环结构**:`DISPLY`子程序中的`DJNZ R1, LD`循环用于控制数码管的8位显示,每次循环显示一位数字,总共循环8次完成整个数字的显示。
8. **寄存器使用**:在程序中,`R0`至`R7`通用寄存器分别用于计数、存储控制字、位选择信号等不同功能,体现了汇编语言对硬件资源的直接操作。
9. **地址映射**:`DPTR`是双字节寄存器,用于存储间接寻址的地址,如`#6100H`、`#6101H`、`#6102H`是8155的I/O端口地址。
通过这个实验,学习者可以深入理解单片机的硬件接口操作,掌握汇编语言编程技巧,以及如何设计并实现简单的显示控制程序。
2011-04-07 上传
2022-05-06 上传
2024-02-07 上传
2023-12-15 上传
2023-05-23 上传
2023-05-18 上传
2023-11-04 上传
2023-09-28 上传
2023-04-28 上传
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
shangkun2009
- 粉丝: 3
- 资源: 10
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命