串行口通信功能综合检测.
微机串口通信功能综合检测
一、设计内容
设计PC机主串口、辅串口通用的自动测试程序。
二、设计目的
学习串口的参数设置和编程。
三、设计要求
编程实现8250的初始化、监控口的工作状态并实现以下功能:
1)通过人机会话由测试者选择测试内容:主串口内环测试、主串口外环测试、辅串口内环测试及辅串口外环测试。为了简化程序,人机会话分两次进行。
第一次屏显:
⑴TEST COM 1 ⑵TEST COM 2 ⑶TEST END
第二次屏显:
⑴INTERNAL LOOP ⑵EXTERNAL LOOP
2)用查询方式编程,对端口直接操作,将测试电文“THE QUICK BROWN FOR JUMPS OVER LAZY DOG”发10遍给选中的串口,在经过内环或者外环短路线接收,
显示在屏幕上。如果串口有故障应屏幕“COM BAD!”。
四、设计思路
1.编写程序
本设计的电路与前一个设计没有太大区别,只是在前一个设计的基础上将单个串口
的内环自测扩展为多种单机串口的检测方法。
测试的内容包括两个串口内环自测,串口间的外环检测以及和终端通信的检测。
其中8250初始化参数的设置不同对程序产生较大影响。
为使程序通用,在编程时,首先进入人机会话界面,根据用户的选择决定进行何种测试。按照用户的选择,对串口初始化。
对串口初始化后,字符被送入串口,计数器开始计数。
根据计数器计数值判断一帧数据是否发送完毕,若是,则在屏幕上显示,否则继续发送数据。
2.硬件端口连接
在硬件接线方面,对不同的测试方法,串口测试环的接线方法也不一样。具体接线
方法可参照图。
3.程序参考流图
微机串口通信参考流程图
4可编程并行接口芯片8255A
4.1可编程接口的概念
8255A是常用的可编程接口芯片,可编程接口芯片即指电路的工作状态可由计算机指令编程控制的芯片。
目前所用的接口芯片大部分是多通道、多功能的。多通道即指一个接口芯片一面与CPU连接,另一面可接几个外设。多功能即指一个接口芯片能实现多种接口功能。接口芯片中的各硬件单元不是固定接死而是可以通过编程来控制。编程控制是指通过计算机指令选择通用接口中的不同通道和不同功能。
8255A是一个通用的可编程的并行接口芯片,它有三个并行I/O口,又可通过编程设置多种工作方式,价格低廉,使用方便,可以直接与Intel系列的芯片
连接使用,在中小系统中有着广泛的应用。
4.2 8255A的内部结构
4.2.1并行输入/输出端口
8255A的内部结构如图1所示。8255A芯片包括3个8位端口:A口、B口和C口,它们均可作为CPU与外设通信时的缓冲器或锁存器,用作缓冲器时是输入接口,用作锁存器时是输出接口。
4.2.2 A组和B组控制
8255A的3个端口都没有自己独立的控制部件,内部将端口分为两组,A组由A口和C口的高4位组成,B组由B口和C口的低4 位组成。
4.2.3读/写控制电路
8255A的读/写控制电路接收来自CPU的控制命令,并根据命令向片内各功能部件发出操作命令。例如CS为低电平时表示8255A芯片被选中,该片选信号由CPU的地址线通过译码产生。RD和WR控制8255A和CPU之间的数据或信息的传输方向。端口选择控制由A1和A0的组合状态提供,这两个控制信号提供4个端口地址,即A、B、C三个端口和一个控制端口地址。
4.2.4数据总线缓冲器
这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。
4.3 8255A的管脚
8255A是一个标准的40管脚芯片(见附录),可分为3个部分:与外设连接的I/O线,与CPU连接的系统总线以及电源线。
图1 8255A内部结构图
4.3.1与外设连接的管脚
8255A共有3个8位数据端口,与外设连接的管脚共有24位。其中A口为PA0至PA7,B口为PB0至PB7,C口为PC0至PC7,特别地,C口可有若干根复用线用于联络信号或状态信号,其具体定义与端口的工作方式有关。
4.3.2与CPU连接的管脚
与CPU连接的管脚包括:
D0至D7:8位,双向,三态数据线,用来与系统数据总线相连;
RESET:复位信号,高电平有效,输入,用来清除8255A的内部寄存器,并置A口,B口,C口均为输入方式;
CS:片选,输入,用来决定芯片是否被选中;
RD:读信号,输入,控制8255A将数据或状态信息送给CPU;
WR:写信号,输入,控制CPU将数据或控制信息送到8255A;
A1A0状态组合与端口操作关系如表1所示:
4.3.3电源线与地线
8255A的电源引脚为Vcc和GND,Vcc一般取+5V,与其他常用芯片相同。
表1 A1A0组合与端口操作关系
4.4 8255A的工作方式及编程
4.4.1 8255A的工作方式
8255A有3中工作方式:
[1]方式0——基本输入/输出方式
[2]方式1——选通输入/输出方式
[3]方式2——双向传输方式
方式0主要工作在无条件的输入/输出方式下,A口、B口和C口均可工作在此方式下被设置成输入/输出口,但不能既做输入口又做输出口C口的输出位可由用户直接独立设置为0或1。
方式1主要工作在异步或条件传输方式下,需要先检查状态然后才能传输数据,仅有A口和B口可工作在方式1,由于条件传输需要联络线,所以C口的某些位分别作为A口和B口提供3根联络线,以便于8255A和CPU之间传送信息和中断请求信号。
方式2的双向传输方式是指在同一端口内分时进行输入/输出操作。只有A 口可以工作在此方式下,需要由C口提供PC3至PC7共5个控制信号进行联络。这种联络信号是由8255A内部规定的,而不由使用者指定。此方式应用于并行外部设备既可以作为输入设备,又可以作为输出设备,并且输入输出动作不会同时进行的场合。
4.4.2 8255A的编程
8255A的编程就是用户在使用8255A之前,用软件来定义端口的工作方式,选择所需要的功能,工作方式是由方式控制字来决定的。
(1)方式控制字
8255A分为A口、B口和C口即A、B两组,其控制字格式如图2所示:
D7 D6 D5 D4 D3 D2 D1 D0
A组控制B组控制
图2 方式控制字
D7=1为控制字的标志,A组由D6、D5、D4和D3组成,B组由D2、D1、D0组成,各口工作方式的选择如表2所示:
表2 工作方式选择
对应的各口I/O选择如表3所示:
表3 各口输入/输出选择
(2)C口清0/置1控制字
清0称为复位操作,置1称为置位操作,其格式如图3所示:
图3 C口置位复位控制字
D7=0为该控制字的标志,D6、D5和D4没有定义,可为任意态,通常取0,D3、D2和D1共组成8种编码对应C口的PC0至PC7,D0=0将D3D2D1编码所对应的C口某位清0,D0=1则是进行对应的置1操作。
例如要对C口的PC2为进行置1操作,则D7D6D5D4=0,D3D2D1=010,
D0=1,控制字为00000101B,相应的置1程序段如下:
MOV DX,控制口地址
MOV AL,00000101B
OUT DX,AL
特别注意:该控制字是通过写入8255A的控制寄存器来达到对C口的指定位进行置位/复位操作的,对A口和B口均不适用。
4.4.3 8255A的初始化
初始化就是在完成硬件连接之后,使用8255A接口芯片时,我们要对它进行编程,即将相关的方式控制字和C口置位/复位控制字送入8255A,以设定接口芯片的工作方式和选择芯片的接口功能。这是8255A进入工作状态前,必须要做的工作。
需要特别注意的是:两种不同类型的控制字都是写入同一个端口,或者说在"out"指令中,使用的是同一个端口地址。
初始化完成后:
当数据端口作为输入接口时,执行输入IN指令从输入设备得到外设数据;当数据端口作为输出接口时,执行输出OUT指令将把CPU的数据送给输出设备。