DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 358|回复: 0
打印 上一主题 下一主题

PIC单片机通用同步异步收发器的编程应用

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 18:23:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    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接口硬件电路



                                
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-6-9 02:40 , 耗时 0.090325 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表