PIC单片机通用同步异步收发器的编程应用
0 引言
PIC18Fxx8单片机是美国微芯公司推出的16位RISC指令集的高级产品,由于芯片内含有A/D、内部E2PROM存储器、I2C和SPI接口、CAN接口、同步/异步串行通信(USART)接口等强大的功能,具有很好的应用前景。但是,目前介绍其应用和以C语言编程的中文参考资料很少。本文将探讨该型单片机异步串行通信的编程应用,程序用HI-TECH PICC-18 C语言编写,并在重庆大学-美国微芯公司PIC单片机实验室的PIC18F458实验板上通过。
1 PIC18FXX8单片机同步/异步收发器(USART)
通用同步/异步收发器(USART)模块是由PIC18FXX8内的三个串行I/O模块组成的器件之一(USART也叫串行通信接口即SCI),可以配置为全双工异步方式、半双工同步主控方式、半双工同步从动方式三种工作方式。
TXSTA是PIC18FXX8单片机串行通信发送状态和控制寄存器,RCSTA是接收状态和控制寄存器。由于在实际工程中,异步方式用得最多,这里仅介绍异步工作方式,其它方式可参阅相关资料。
1.1 USART 异步工作方式
在异步工作方式下,串行通信接口USART采用标准的不归零(NRZ)格式(1位起始位、8位或9位数据位和一位停止位),最常用的数据位是8位。片内提供的8位波特率发生器BRG可用来自振荡器时钟信号产生标准的波特率频率。通过对SYNC位(在TXSTA寄存器中)清零,可选择USART异步工作方式。
1.2 USART波特率发生器(BRG)
USART带有一个8位的波特率发生器(BRG),这个BRG支持USRAT的同步方式和异步方式。用SPBRG寄存器控制一个独立的8位定时器的周期。在异步方式下,BRGH位(控制寄存器TXSTA的)也被用来控制波特率。在同步方式下,用不到BRGH位。表1给出了在主控方式下(内部时钟)不同USART工作方式时的波特率计算式。
表1 主控方式下的波特率计算式
SYNC | BRGH=0(低速) | BRGH=1(高速) |
0 | (异步)波特率=FOSC/[64(X+1)] | 波特率 = FOSC/[16(X+1)] |
1 | (同步)波特率=FOSC/[4(X+1)] | 无 |
1.3 USART 异步工作方式配置
下面是串行通信异步工作方式配置步骤(顺序可以改变):
(1)配置发送状态和控制寄存器TXSTA;
(2)配置接收状态和控制寄存器RCSTA;
(3)配置RX(RC7引脚)、TX(RC6引脚)分别为输入和输出方式;
(4)通过设定的通信波特率配置SPBRG寄存器,计算公式参见表1;
(5)设置串行通信接收或发送中断是否使能;
(6)清串行通信接收或发送中断标志;
(7)设置串行通信接收中断或发送中断的优先级是高或低优先级中断方式,PIC18单片机默认情况下是高优先级中断,若是低优先级中断,则必须进行设置;
(8)设置串行通信接收和发送数据是否允许。
若用到了中断功能,还需设置总中断和外围中断使能,以开放未屏蔽的中断。
2 USART接口硬件电路
评论