PIC18F45K80串口1和串口2异步收发通信实例

一:配置串口1初始化函数

  1. 首先打开技术手册,查看异步串口的操作流程以及配置。
  2. 需要将串口对应引脚的方向寄存器设置为输入

3.设置串口接收操作流程

4.设置通信波特率

计算公式:

源码如下:

编译环境:MPLAB X IDE +PICC18

适用于PIC18F系列单片机串口

单片机:PIC18F45K80

晶振频率:18.432MHZ 使用串口建议使用这个频率的晶振  计算波特率误差小
void Usart1Init(void)
{

ODCONbits.U1OD=0;
   UART1MD = 0;  
   TRISC6=1;   // 作为串口使用,RC6必须设置为输入
 TRISC7=1;   // 作为串口使用,RC7必须设置为输入 
 TXSTA1 = 0x24; //异步通信,8位数据 BRGH=1  开启高速波特率  计算公式 FOSC/[16 (n + 1)]
 //   TXSTA1 = 0x20; //异步通信,8位数据 BRGH=0   关闭高速波特率 计算公式 FOSC/[64(n+ 1)]
 RCSTA1 = 0x90; //使能串行通信
 BAUDCON1bits.BRG16 = 0; // 串口1
 SPBRGH1 = 0x00;
    SPBRG1 = 9; //18.432M晶振,设置波特率为9600 
    RC1IE = 1; //使能串口接收中断
    RC1IP=1;
 GIE = 1; // 打开全局中断
 PEIE =1;
}

void Usart2Init(void)
{
   ODCONbits.U2OD=0;
   UART2MD = 0;  //使能串口2  
   TRISD6=1;   // 作为串口使用,RC6必须设置为输入
 TRISD7=1;   // 作为串口使用,RC7必须设置为输入 
 TXSTA2 = 0x24;
 //   TXSTA1 = 0x20;
 RCSTA2 = 0x90;
 BAUDCON2bits.BRG16 = 0;
 SPBRGH2 = 0x00;
    SPBRG2 = 9; //18.432M晶振,设置波特率为115200 BRGH=1
    RC2IE = 1; //使能串口接收中断
    IPR3bits.RC2IP = 0; //
 INTCONbits.GIEL = 1; 
 PIE1bits.RCIE = 1; //使能串口接收中断
 RCONbits.IPEN = 1; //使能中断优先级
 INTCONbits.GIE = 1; //开总中断
}

PIC18F45K80串口1和串口2异步收发通信实例的更多相关文章

  1. C/C++ 打开串口和关闭串口

    通常使用下列函数来通过Win系统来对外围设备进行通信处理: 0. 前言 做串口方面的程序,使用CreateFile打开串口通信端口.在对串口操作之前,需要首先打开串口.使用C++进行串口编程,如果采用 ...

  2. Qt之先用了再说系列-串口通讯(单串口单线程)

    QT 串口通讯(单串口单线程) 串口通讯在我们写程序的时候或多或少会用到,借此在这记录一下QT是如何使用串口来通讯的.本次先侃侃在单线程下使用1个串口来通讯过程.好了,废话不多说,直接看步骤,我们的宗 ...

  3. RPC-client异步收发核心细节?

    通过上篇文章的介绍,知道了要实施微服务,首先要搞定RPC框架,RPC框架分为客户端部分与服务端部分. RPC-client的部分又分为: (1)序列化反序列化的部分(上图中的1.4) (2)发送字节流 ...

  4. Linux 虚拟串口及 Qt 串口通信实例

    Linux 虚拟串口及 Qt 串口通信实例 2011-06-22 17:49 佚名 互联网 字号:T | T Linux 虚拟串口及 Qt 串口通信实例是本文所要介绍的内容,在实现过程中,打开了两个伪 ...

  5. 【58沈剑架构系列】RPC-client异步收发核心细节?

    第一章聊了[“为什么要进行服务化,服务化究竟解决什么问题”] 第二章聊了[“微服务的服务粒度选型”] 第三章聊了[“为什么说要搞定微服务架构,先搞定RPC框架?”] 上一章聊了[“微服务架构之RPC- ...

  6. 【转】虚拟串口VSPM解决串口编程问题

    通过串口调试软件 UartAssist.exe 和虚拟串口软件 VSPM,可以解决串口编程时没用硬件调试的问题,通过VSPM虚拟出串口设备,让程序发送信息到 VSPM 设备后通过 UartAssist ...

  7. raspi串口、python串口模块pyserial

    一.安装 1.下载软件包pyserial-2.7.tar.gz   网址:https://pypi.python.org/pypi/pyserial 2.8uftp上传至/usr/local/src/ ...

  8. 安卓基于谷歌串口api进行串口开发

    准备材料 AndroidStudio 谷歌android-serialport-api 前情提要 网上提供很多基于c语言对安卓串口开发,有jni.cmake等等,不过都太高深,谷歌提供的api已经可以 ...

  9. JAVA基础知识之网络编程——-基于AIO的异步Socket通信

    异步IO 下面摘子李刚的<疯狂JAVA讲义> 按照POSIX标准来划分IO,分为同步IO和异步IO.对于IO操作分为两步,1)程序发出IO请求. 2)完成实际的IO操作. 阻塞IO和非阻塞 ...

随机推荐

  1. Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导

    Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导 Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导 必要的message类实现 从下面开始是在veins/src/vei ...

  2. django-个人网站之环境配置(一)

    1.建立django项目 django-admin startproject myblog 2.进入myblog目录 建立app存储自己的基本信息 python manage.py startapp ...

  3. .Net Core实现健康检查

    ASP.NET Core 提供运行状况检查中间件和库,以用于报告应用基础结构组件的运行状况. 运行状况检查由应用程序作为 HTTP 终结点公开. 可以为各种实时监视方案配置运行状况检查终结点: 运行状 ...

  4. 盘点飞思卡尔i.MX多媒体处理器前世今生 (转)

    现如今,移动处理器领域,大家关注最多的是德州仪器.高通.展讯.MTK,甚至包括Intel,但是请别忘记飞思卡尔,他的i.MX处理器已经发展到第六代. 那么我们今天就来盘点下i.MX的前世今生吧. i. ...

  5. markdown 入门教程(完整版)

    Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 1. 标题 Markdown支持6种级别的标题,对应html标签 h1 ~ h6 ...

  6. 身份证号码验证算法(php和js实现)

    原文:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=21126994&id=3938244 http://www.jb ...

  7. 前端技术之:如何在控制台将JS class实例输出为JSON格式

    有一个类: class Point { constructor(x, y) { this.x = x; this.y = y; } } 如果我们在控制台中输出其实例: console.log(new ...

  8. 爬虫之scrapy简单案例之猫眼

    在爬虫py文件下 class TopSpider(scrapy.Spider): name = 'top' allowed_domains = ['maoyan.com'] start_urls = ...

  9. 地精部落:dp

    Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi, ...

  10. CSPS模拟 45 乔迁之喜

    搬家了qwq 暑假在机房藏的吃的还没来得及吃qwq 有缘人会发现它的(其实并没有) 我居然也能和skyh并列了啊sto T1 安排打怪 不可能让左边的人越过右边人打的怪去打更靠右的怪吧? $O(n^2 ...