1、 摘摘 要要 本课程设计要求完成的任务是实现两台 PC 机之间 1K 数据的并行传输。为了使程序编 写简单并便于进行调试,本设计采用 DOS 功能调用,由键盘输入字符串来模拟要传输的 1K 数据。因为传输包括发送和接收两方面内容,所以程序采用模块化思想,将整个程序分为 发送和接收两个功能模块分别来进行编写,然后通过调用来实现整体的功能。 程序设计的关键部分是 8255A 的编程控制,本设计按要求采用方式 2,在传输过程中通过 查询相关端口来判断是否发送或接收完毕,从而实现 1K 数据的接收与发送。 关键词关键词:并行通讯 发送 接收 8255A DOS 功能调用 1 1 问题的描述与分析问题的
2、描述与分析 题目要求:由甲乙两台微机之间并行传送 1K 字节数据。先甲机发送,乙机接收,后乙 机发送,甲机接收。甲乙双方的 8255A 均采用方式 2 工作。8255A 控制口地址为 303。 本题属于双机并行通讯问题,应分为发送和接收两方面分别来进行研究。由于程序需 要对地址进行直接操作,所以选择汇编语言来编写较为简单方便。在写程序的过程中,由 于要用 8255A 芯片作为并行传输芯片,所以要熟练掌握 8255A 的控制方法;此外,程序多 处还要用到 DOS 功能调用,所以还要对 DOS 的各种功能进行系统的学习。 两台 PC 各与一个 8255A 芯片相连,程序分为两部分,分别运行与两台
3、PC 机上以实 现并行传输。连接图如下: 图 1-1 双机通讯的连接图 程序分为两个部分,分别在甲机和乙机上面运行。甲机运行的程序是先发送后接收, 乙机上运行的程序时先接收后发送,实现先从甲机到乙机传输 1KB 的数据,后从乙机到甲 机传输 1KB 的数据的功能。 我们在两台微机的内存中各开辟一个 1KB 的字符区 BUF1, 象 征性的输入少许字符,来模拟要传输的 1KB 的数据。再各开辟一个 1KB 的字符区 BUF2 用来存储接收到的 1KB 数据。 2 8255A2 8255A 芯片的介绍芯片的介绍 2.1 8255A 简介及引脚功能 8255A 是一种通用的可编程并行 I/O 接口芯
4、片, 广泛用于几乎所有系列的微机系统中, 如8086、MCS51、Z80等。8255A 具有3个带锁存或缓冲的数据端口,可与外设并行进行数据 交换。每个端口都有一个数据输入寄存器和一个数据输出寄存器,输入时端口有三态缓冲 器的功能,输出时端口有数据锁存器功能。控制 A、B 和 C3个端口的工作方式,A 组控制 A 口和 C 口的上半部(PC7PC4) ,B 组控制 B 口和 C 口的下半部(PC3PC0)的工作方式和 输入输出。作用:指定3个并行端口(PA、PB、PC)是作输入还是作输出端口以及选择 8255的工作方式。利用按位置位复位控制字可以使 PC 口的8根线中的任意一根置成高电 平输出
5、或低电平输出。 8255A 的芯片引脚图见图 2-1: 图 2-1 8255A 的芯片引脚图 RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器) 均被清除,所有 I/O 口均被置成输入方式。 PA0PA7:端口 A 输入输出线,一个 8 位的数据输出锁存器/缓冲器,一个 8 位的数 据输入锁存器。 PB0PB7: 端口 B 输入输出线, 一个 8 位的 I/O 锁存器, 一个 8 位的输入输出缓冲器。 PC0PC7:端口 C 输入输出线,一个 8 位的数据输出锁存器/缓冲器,一个 8 位的数 据输入缓冲器。端口 C 可以通过工作方式设定而分成 2 个 4 位的端口
6、,每个 4 位的端口包 含一个 4 位的锁存器,分别与端口 A 和端口 B 配合使用,可作为控制信号输出或状态信号 输入端口。 CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许 8255A 与 CPU 进行通讯。 RD:读信号线,当这个输入引脚为低电平时,允许 8255A 通过数据总线向 CPU 发送 数据或状态信息,即 CPU 从 8255 读取信息或数据。 WR:写入信号,当这个输入引脚为低电平时,允许 CPU 将数据或控制字写入 8255A。 D0D7:三态双向数据总线,8255A 与 CPU 数据传送的通道,当 CPU 执行输入输 出指令时,通过它实现 8 位数据的读/写操作,控制字和状态信息也通过数据总线传送。 A1、A0:端口地址总线,8255A 中有端口 A、B、C 和一个内部控制字寄存器,共 4 个端口,由 A0、A1 输入地址信号来寻址。(A0、A1 的组合与端口关系,见表 2-1) 表 2-1 A0、A1 的组合与端口关系 A1A0 端 口 00 A 口地址 01 B 口地址 10 C 口地址 11 控制口 2.