8155并行I/O口扩展:微机原理实验动态扫描程序

需积分: 10 1 下载量 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端口地址。 通过这个实验,学习者可以深入理解单片机的硬件接口操作,掌握汇编语言编程技巧,以及如何设计并实现简单的显示控制程序。