在工业控制和办公自动化系统中,单片机与微型计算机串行通信的应用十分广泛。本文仅介绍一种简单易行的通信方法,其串行通信接口电路如图1所示。它是准RS-232C接口电路,因为该电路为单+5V电源支持,使得应用更为方便。

图1所示的电路为“电平转换”电路,由于PC系列微机的串行接口发送和接收电平为±12V,而单片机为0~5V,因此必需转换电平。该电路的工作原理是,当PC机开始发送信号时,其TXD端口为低电平(-12V),三极管VT2截止,单片机的RXD端口为+5V,PC机的TXD端口为高电平时(+12V),VT2导通,单片机的RXD端口为0V。同时,PC机的TXD端口正负脉冲,经二极管VD1整流,在A点形成-10V的直流电压。单片机发送信号时,单片机的TXD端口为高电平(+5V),VT1截止,PC机的RXD端口为-10V,反之,VT1导通,PC机的RXD端口为+5V。
PC系列微机内部的串行通信接口电路,是由遵循串行通信协议的UART8250(或者NS16450)芯片构成,PC机已提供了编程接口,应用时,可以根据需要控制两个串行通信口,即COM1和COM2。下表说明各编程端口的功能:
端口地址 指令 条件 说明
3F8H/2F8H OUT D7=0 写入发送保持寄存器,在线路寄存器 D5=1时,表明可以发送,只要写
入该寄存器数据,便实现数据发送。
3F8/2F8H IN D7=0 读出接收数据寄存器,在线路寄存器D0=1时,表明接收到有效数据,
读出该寄存器的数据,便实现数据的接收。
3F8H/2F8H OUT D7=1 写入波特率因子低字节(LSB)
初始化时,写入18H,实现4800的通信波特率。
3F9H/2F9H OUT D7=1 写入波特率因子高字节(MSB)
初始化时,写入00H,实现4800的通信波特率。
3F9H/2F9H OUT D7=0 写入中断允许寄存器
因为采用查询式,故写入的控制字为00H
3FAH/2FAH IN 读入中断标志寄存器
因为采用查询式,故不用
3FBH/2FBH OUT 写入线路控制寄存器,完成时对线路的各种功能控制。本系统写入的
控制字为1BH,完成的控制功能为:传送一帧为八个数据位,一个起始
位,一个停止位。采用偶校验,该寄存器的D7位用于控制其它10个寄
存器的读写操作。
3FCH/2FCH OUT 写入MODEM控制寄存器
因为是近距离传送,故编程时不用
3FDH/2FDH IN 读出线路状态寄存器,它反应此时线路的状态。主要的几位有:D5=1,
表明发送保持寄存器已经空闲,发送准备就绪。 D0=1,表明接收数据
寄存器已经收到一个完整的字符,即接收操作就绪,指示用户把收到
的数据取走。D2=1,表明接收数据时,由于线路干扰,出现校验错误。
3FCH/2FCH IN 读出MODEM控制寄存器
因为是近距离传送,故编程时不用。
单片机的内部硬件支持串行通信模式,本机采用模式3工作方式。本例串行通信的波特率为4800bit,PC机采用查询方式收发数据,单片机则是按中断方式。下面仅以PC机发送数据,单片机接收来举例说明。两机的通信联络采用问答方式,PC机收到单片机的正确回答,说明通信准确无误,并确认当前使用的端口(COM1或COM2)。通信过程中,每发送50帧数据,检测一次传送的数据是否正确,若正确继续传完为止,否则立即终止传送。
PC机发送数据的软件流程框图,如图2所示。

单片机对串行口初始化程序为:设置串行口通信模式3,设置定时器方式2,写入定时器时间常数以满足4800的波特率,设置数据传输地址指针,写入中断控制字,开中断。中断接收数据的软件流程框图,如图3所示。(漆小平 焦宏伟)
