2.2 基于Intel8251的串行口扩展方法
上面基于SP2538的串口扩展方法可以说是一种串行的扩展方法,这里基于Intel8251的扩展方法则是一种并行的方法。Intel8251是一种通用的同步/异步发送器(USART),它的工作方式可以通过编程设置。能够以同步或异步串行通信方式工作,能自动完成帧格式。
Intel8251具有独立的接收/发送器。在异步方式下,用于产生8251内部时序的时钟CLK输入至少应为发送或接收时钟的4.5倍。接收/发送(RXC/TXC)时钟应为波特率的1倍、16倍或64倍(由8251的工作方式字设定)。
图(2)是用Intel8251扩展一个串行通道的电路原理,图中,11.0592MHZ晶振经ALE6分频后于 、组合,产生1.8432MHZ的时钟频率,分别作为8251与8253的时钟输入,若设定8251通信波特率为9600bps,波特率因子为16,则需要 153.6KHZ的接收/发送时钟频率,该频率可由8253的OUT0产生。
下面的A51程序段说明了如何设置8253使其产生153.6KHZ的方波,以及如何用8251收/发数据:
;设置8253的程序段:
MOV A,#36H ; 计数器0输出方波控制字
MOV DPTR,#0FFFFH ; 指向控制字寄存器
MOVX @DPTR,A
MOV DPTR,#0FFFCH ; 指向0计数器地址
MOV A,#0DH
MOVX @DPTR,A
MOV A,#0
MOVX DPTR,A
SETB P1.0
;操作8251的程序段:
…
START: MOV DPTR,#7FFFH ;8251控制、命令口地址
MOV A,#5EH ;一个停止位,奇校验,8位数据,异步*16
MOVX @DPTR,A ;写入方式字
MOV A,#15H
MOVX @DPTR,A ;命令字,启动发送和接收器
…
LOOP: SJMP LOOP ;等待8251中断
8251_INT: ;现场保护
MOV DPTR,#7FFFH
MOV A,@DPTR
JB ACC.0,TX_INT
JB ACC.1,RX_INT
INT_EXIT: ;恢复现场
RETI
;发送数据
TX_INT: MOV DPTR,#7FFEH ;8251数据口地址
MOV A,20H
MOVX @DPTR,A
…
AJMP INT_EXIT
;接收数据
RX_INT: MOV DPTR,#7FFEH
MOVX A,@DPTR
MOV 30H,A
…
AJMP INI_EXIT
图(2)用8251扩展串行通道的硬件电路原理
3 结束语
以单片机为核心的多级分布式系统的应用越来越广泛,上面讨论的两种串行口的扩展方法为此类多串口应用领域提供了一个良好的解决方案。笔者在实际中采用基于SP2538的扩展方法,设计了采场瓦斯积聚模拟试验台的多级分布式采控系统,效果良好。