PIC单片机学习—USART串口

最近做了几个项目都用到了PIC单片机,在这几个项目之前我只用到了51单片机和STM32来做控制类的项目,用PIC单片机的时候发现使用的时候和51单片机还是有所区别,有许多小坑需要注意,所以决定写几篇针对新手使用PIC单片机时可以参考学习的文章。

PIC单片机串口

    • **PIC单片机学习—USART串口**
  • 前言
  • 一、USART串口是什么?
  • 二、PIC单片机USART串口配置要点
    • 1.与串口相关寄存器
    • 2.异步模式配置步骤
  • 三、容易“踩坑”点
    • 1、IO口配置必须正确
    • 2、电压与晶振频率相匹配

前言

串口是使用频率非常高的通信接口,掌握串口是单片机项目必须技能


一、USART串口是什么?

USART:(Universal Synchronous/Asynchronous Receiver/Transmitter),通用同步/异步串行接收/发送器。
通用同步 / 异步收发器 (USART) 模块是两个串行 I/O 模块之一 , USART也称为串行通信接口或 SCI。
USART 可以配置为全双工异步系统,可与计算机等外设进行通信;也可配置为半双工同步系统,可与 A/D 或 D/A 集成电路,以及串行 EEPROM等外设器件进行通信。


二、PIC单片机USART串口配置要点

1.与串口相关寄存器

TXSTA:发送状态和控制寄存器

RCSTA:接收状态和控制寄存器

2.异步模式配置步骤

我们使用串口一般都使用异步模式,下面简单介绍异步配置步骤:
1.初始化SPBRGH和SPBRGL寄存器对以及BRGH和BRG16位,获得所需的波特率。
2.清零RX引脚的ANSEL位(如适用)。
3.将SPEN位置1使能串口。SYNC位必须清零才能进行异步操作。
4.如果需要中断,将PIE1寄存器的RCIE位以及INTCON寄存器的GIE和PEIE位置1。
5.如果需要接收9位数据,将RX9位置1。
6.将CREN位置1使能接收。
7.当字符从RSR被移入接收缓冲区时,RCIF中断标志位将被置1。如果RCIE中断允许位也置1,则产生中断。
8.读取RCSTA寄存器取得错误标志和第9个数据位(9位数据接收使能时)。
9.读取RCREG寄存器从接收缓冲区取得接收数据的低8位。
10.发生溢出时,通过清零CREN接收器使能位清零OERR标志位。


三、容易“踩坑”点

以下是我在实际使用中碰到的一些小问题,这几次都是调试了半天,最后猛的发现原来是这个问题,大家只要注意了就可以避免,望大家参考。

1、IO口配置必须正确

PIC单片机的串口一般都是与通用IO口复用,当启用串口功能时,一部分PIC单片机只要使能了串口收发功能,就会自动配置好TX及RX相关端口,不论TRIS三态寄存器相关为配置是输入或输出,TX及RX都可正常使用。但是PIC16LF1823的RX端口必须配置TRIS相关位为输入。
另外PIC的串口经常会和模拟口复用,这里必须要配置为数字口,否则会一直读为0.
总结,使用串口时,相关IO口必须配置为数字模式,同时TX配置为输出模式,RX配置为输入模式,这样的话,不论在哪种型号的单片机上都可以正常使用,就不会出现预期外的问题。

2、电压与晶振频率相匹配

使用PIC单片机时必须要注意单片机工作在不同的电压时,所能使用的晶振频率是有区别的,大家一定要注意查看相对应芯片数据手册,一般是在电气规范章节中。不过电压和频率配置不对,单片机无法正常工作。比如,下面PIC1LF886的电压与频率关系图。
从上面的电压-频率关系图,我们可以看出,当PIC16F886使用3.3V电压时,如果配上12MHz晶振,单片机是无法正常工作的。

PIC单片机学习—USART串口相关推荐

  1. pic常用子程序c语言,手把手教你使用PIC单片机做RS232串口通信实验(C语言版)

    这一期,我们将一起来学习一下PIC单片机如何与PC机进行通信,一起来完成一个简单的RS232通信实例,我们不做太多的理论,从实例出发,相信能够给大家一个比较通俗.透彻地认识,掌握了它的原理,那你就可以 ...

  2. PIC单片机精通_串口通讯与串口调试实例

    1.引子 团队之所以称之为团队,就意味着多个人在一起共事.需要的是谦虚,谦逊,切勿言之偏偏.也要学会尊重,任何一门编程语言都有自己的优势与不足,否则早就有一门语言一统天下啦!!!我由VB入门,利用C. ...

  3. PIC单片机精通_串口通信模块C实现

    1.串口通讯头/定义文件 usart.h #ifndef _SERIAL_H_ #define _SERIAL_H_#define BAUD 9600 #define FOSC 9216000L #d ...

  4. PIC单片机学习笔记——PIC16F(L)1526/7

    一.产品技术参数 系列名称 PIC16F 封装类型 TQFP 安装类型 表面贴装 引脚数目 64 装置核芯 PIC 数据总线宽度 8Bit 程序存储器大小 28 kB 最大频率 20MHz 内存大小 ...

  5. 基于stm32F103ZE单片机的USART串口使用

    文章目录 寄存器及自定义变量 状态寄存器 USART_SR USART_RX_BUF[USART_REC_LEN] u16 USART_RX_STA 串口初始化 uart_init(u32 bound ...

  6. PIC单片机学习之独立按键

    硬件电路:独立按键接RA5 效果:让RD0口的LED,当独立按键为0时,点亮. 注意:PORTA口的默认状态不是数字IO口,我们要将他配置成数字IO口.这涉及到了ADCON1寄存器. 代码 //201 ...

  7. 7、TM4单片机学习之串口功能

    文章目录 一.初始化过程 1.使能相应外设端口 2.配置引脚的复用功能 3.配置引脚类型 4.时钟源设置 5.串口帧格式配置 二.使用方法 1.简单使用 2.使用中断 3.printf 函数 四.测试 ...

  8. 单片机学习笔记 —— 串口通信原理

    一.串口通信电路 电路图: 说明:当RXD TXD为低电平时,对应的led灯会亮起 二.串口通信控制寄存器 下图为80C51串行口的结构: SCON(serial Control Register): ...

  9. 51单片机学习之-串口中断

    串口中断 SM2:多机通信控制位, (0:数据直接进入SBUF,并同时使R1致1) T1:发送中断标志位,(发送数据自动由硬件置1,并且同时执行中断程序,也必须在中断程序中写0) RI:接收中断标志位 ...

最新文章

  1. Secure CRT 自动记录日志和时间戳功能配置
  2. php foreach 符号,关于php:php-foreach循环中变量之前的符号
  3. asp.net 六大对象之Request、Response
  4. linux 文件夹换所属用户,linux普通用户su root切换提示没有文件或目录的解决方法...
  5. javascript 盒子模型
  6. k歌的录音伴奏合成技术如何实现_K歌神器,用唱吧麦克风攀登天籁高峰
  7. java相关求助---Java泛型的理解与等价实现---------没有完全明白啊...请大神指导...
  8. iproute2 对决 net-tools
  9. node获取windows pc 机器的标示
  10. [Python Study Notes]pandas.DataFrame.plot()函数绘图
  11. AWG#线规及其载流能力和电阻值
  12. 二元函数matlab画图_matlab心形图大全,几个经典的函数图像,有趣的函数图像,matlab画图...
  13. 【leetcode】1175. Prime Arrangements
  14. 服务器系统装显卡驱动,windows2019服务器系统安装显卡驱动(A卡篇)
  15. 第22节 NAT——实现公私有IP地址转换
  16. python基础训练—数字
  17. java公社博客_Java面向对象开发学习笔记(二)
  18. WebLogic之eclipse安装WebLogic插件
  19. 互动媒体技术作业——十二个“一”扩展版
  20. C语言大专补考题目,C语言补考,求助4到大题目.

热门文章

  1. Linux下查看DNS服务器IP地址
  2. SVG之Animation
  3. python 依据某几列累加求和_如何用Python找出PSY超卖的股票?
  4. pdf文档补丁,pdf编辑,去除pdf文件限制
  5. 7个秘诀,带你由数据分析师成长为数据科学家
  6. 原语科技宣布完成千万级天使+轮融资,致力于打造隐私计算标准化产品
  7. 用pdfmake生成pdf中文文档
  8. 网络协议-前端重点——DNS和CDN
  9. 谷歌中国发布年度热榜 iPhone成全球最流行词
  10. 【js】js获取数组最后一位元素的五种方法