基于80C196KC微处理器的高速串行通讯

技术分类: 微处理器与DSP  | 2007-06-07
来源:电子技术应用 | 作者:张卫杰 魏震生 路平

  Intel公司的MCS-96系列微处理器是目前性能最强、应用最广泛的16位微处理器。近年来,在国内各个领域中,特别是航天、航空等工业领域应用相当广泛。80C196KC是lntel公司九十年代初期推出的性能较强的第三代CMOS芯片,其数据/地址线均为16位,使用MCS-96家族共享的指令系统,除了8X96已包括的一些外设(如时钟发生器、1/O端口、A/D转换、PWM输出、串行口、定时/计数器、监视定时器WATCHDOG、高速输入/输出器等)外,还集成了先进的外设事务服务器(PTS)和事件处理器阵列(EPA)。80C196KC在串行口功能上除了支持异步串行口之外,还增加了同步串行口,可以支持多种标准同步串行传输协议。

  图1 是80C196KC串行通讯接口的具体结构。该电路使用了符合RS232通信标准的驱动电路MAX232芯片,进行串行通讯。MAX232功耗低,集成度高,只用单-5V电源,芯片内部有电泵,不需外接正负12V电源,具有两个接收和发送的通道。整个接口电路简单,可靠性高。

80C196KC串行通讯接口的具体结构

  1 80C196KC串行通信口工作原理

  1.1 串行口的通信模式

  80C19

6KC具有4种通信模式:三种异步模式,一种同步模式。

  模式0:称为同步模式,常用于I/O扩展,实现并-串输入或者串-并输出,它不能直接同时发送或接收数据,需要外接双向缓冲器。

  模式1:称为标准异步通信模式,是最常用的模式。在这种模式下,串行通信的每帧数据是由10位组成的,即1位起始位,8位数据位,1位停止位。该模式下TXD用来发送数据,RXD用来接收数据,可用中断和查询两种方式进行控制:当一个数据帧最后一个数据位发送完毕后,发送中断的标志TI置位;而一个数据帧的最后一个数据位被接收后,接收中断的标志RI置位。

  模式2:称为异步第9位辩识通信模式。在这种模式下,每帧数据由11位构成:1位起始位,8位数据位,1位可编程数据位,1位停止位。

  模式3:称为带校验位的通信模式。该模式的帧格式与模式2相同,只是在串行口控制寄存器(SP_CON)的PEN位被置位时,可编程数据位作为奇偶校验位。模式2和模式3通常互相配合,用于多机通信。

  1.2 串行口控制

  80C196KC串行口的控制由串行口控制/状态寄存器(SP-CON/SP-STAT)实现,其定义见图2。数据的发送或接收都通过访问串行口数据缓冲器SBUF,这里需要指出的是80C196KC发送寄存器SBUF(TR)和接收寄存器SBUF(PX)在物理上是分开的两个寄存器,因此串行口在异步模式下是全双工工作的。由图2可见,读或写串行口控制/状态寄存器时,都是访问其中的某些位:低5位只写,属于SP_CON;高3位只读,属于SP_STAT。当发送或接收操作完成后,相应的中断标志TI或者RI将置位,以通知CPU继续发送或者准备接收下一帧数据,或做其它处理;读SP_STAT后,TI和RI也被清除。

串行口控制

  在所有异步模式下(模式1~3)下,向SBUF写入数据就会自动启动一次发送过程。在发送停止位之前,保持在SBUF中的新数据应保持不变。若接收允许位(REN)已经被置1,则RXD脚上出现的下降沿就会启动一次接收过程。

  在80C196KC中,TXD和P2.0是共用一个引脚的,对I/O控制器1的位5置1才能选通TXD功能。RXD和P2.1也是共用引脚,但不受IOC影响,而是受SP_CON的REN位控制。

  1.3 串行通信波特率的计算

  在80C196KC中波特率寄存器的内容决定了串行口通信的波特率,向该寄存器写入数据时必须用连续写入两个字节的方式,低位字节在前。寄存器的最高位用于选择波特率发生器的输入频率源。当选用晶振XTAL1为时钟源时,80C196KC内部时钟信号是由振荡器二分频后得到的,因此可以用以下公式计算波特率寄存器(BAUD_REG)的写入值:

  同步模式0:BAUD_REG=XTAL1/(BAUD_RATE*2)-1 或者T2CLK/BAUD_RATE

  异步模式1、2和3:BAUD_REG=XTAL1/(BAUD_RATE*16)-1

  或者T2CLK/(BAUD_RATE*8)

  表1列出的是XTAL作为时钟源时异步模式常用波特率对应的波特率寄存器的值。

XTAL作为时钟源时异步模式常用波特率对应的波特率寄存器的值

  当采用12MHz频率时,异步模式的最大波特率为750kbps,同步模式为3Mbps。

  2 串行通讯的软件设计

  80C196KC串行通讯的软件设计可以采用查询和中断两种不同的方式。查询方式通过访问串行口控制/状态寄存器的标志位TI和RI,检查发送寄存器SBUF(TR)是否空或者接收寄存器SBUF(RX)已经接收了一帧数据。

  下面的程序采用查询方式接收和发送N个字节数据,其中串行口设置为工作模式1,波特率57600,不设奇偶校验,12MHz晶振。

0
0
(请您对文章做出评价)
1】【2】【3】【4
加载中

对文章的评论

更多评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会