1.引子

团队之所以称之为团队,就意味着多个人在一起共事。需要的是谦虚,谦逊,切勿言之偏偏。也要学会尊重,任何一门编程语言都有自己的优势与不足,否则早就有一门语言一统天下啦!!!我由VB入门,利用C、C++、Java、TCL进行过开发,至今不敢妄言哪种语言最好,只知道把事情做好,才是最成功的。
耐心与细心,至关重要。最忌浮于事,遇到问题要仔细分析,千万不可抱怨。作为软件出身的傻大个,竟然“沦落”到进行电子线路测试、故障排除、阻抗匹配,不得不说是配合的环节出现了问题,再此感谢一下我的母校——华中大,还好本科管得严,任务重,电子电力的知识还没有忘记。
今天记载的是独立开发的串口通信程序,没有利用PIC自带的Example,很适合新手,共同进步。

2.串口通信实例与详解

/********************************************************/
/*Author: Chunxu Shen; All Rights Reserved!
/*Tsinghua University
/*2016-11-14
********************************************************/
#include <pic.h>
__CONFIG(0x3ffa);#define BAUD ???UL
#define FOSC ???UL //根据实际情况,自己设定
#define DIVIDER ((int)(FOSC/(16UL * BAUD) -1))unsigned int  send1[2] = {0x4f,0x4b}; //'O'=ASCII 0x4f;'K'=ASCII 0x4b; “OK”
unsigned int  send2[5] = {0x45,0x52,0x52,0x4f,0x52}; //'E'=ASCII 0x45;'R'=ASCII 0x52 “ERROR”
unsigned char rece;  //全局变量
unsigned int cnt;    //计数器void main(void)
{//初始化端口程序TRISC7 = 1; //RX端口设为输入有效TRISC6 = 0; //TX端口设为输出有效//初始化串口设置SPBRG = DIVIDER;  //波特率设置TXSTA = 0x04;  //异步通讯-禁止发送数据-高速模式RCSTA = 0xA0;  //串口使能-接收单字符-禁止连续接受//中断设计RCIE = 1;  //允许接收信号触发中断GIE = 1;   //打开中断总开关PEIE = 1;  //允许外围设备触发中断//无限循环,等待PC机触发中断while(1){......}
}//接收上位机送发的信号
void interrupt usart(void)
{if( RCIE )//RCIE:开放串行中断请求  RCIF:接收中断允许(接收区满or单字符){    ......}
}

3.心得感悟

1.“查询”和“中断”哪种方式好?

这个问题就很奇怪了;其实没有绝对的好与不好。就个人而言,我更偏向于中断,思路比较清晰。无论哪种方式,记住核心就好。中断:采用的是通信外围设备触发(也就是PC机发送信号);而查询方式:采用的是接收移位寄存器溢出标志位以及发送移位寄存器清空的标志位。

2.为什么在main函数中设置字符数组mplab一直报错?

这个问题同学问我之后我一直没有答上来,因为我感觉这本身是没有错的。可能是配置的问题。为什么我没有碰到?因为我习惯把字符数组放到程序的预定义处。我也很推崇这种方式,这会大大增强程序的可读性。

3.通信流程该如何设定?

单片机通信模块都很相似:端口方向配置(那个是发送数据?哪个是接收数据?);串口状态配置(打开串口?连续发送?同步/异步?);中断配置(打开接收中断触发事件、开启总中断、开启外围中断触发);最后一个是进行数据处理。

4.TXSTA=0x24;会怎么样?

TXSTA=0010 0100B;异步-高速-允许发送模式
就个人而言,不建议这样写。因为接收信号触发中断,如果此时发送还是允许的,容易陷入一直都发送的死区。所以,我们可以试着这样做:“激发信号”触发中断->允许数据发送->发送数据->关闭数据发送。

PIC单片机精通_串口通讯与串口调试实例相关推荐

  1. PIC单片机精通_异步串口通讯实例与细节

    1.前言 PIC16F876a异步串口通信的定义以及寄存器控制,这里不再多谈,前面已经进行过详细的分析.这里注意集中在几个关键点上. 串口中断服务程序应该注意什么? 利用串口助手进行调试应该注意什么? ...

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

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

  3. PIC单片机精通_A/D转换异步串口通讯实例与详解

    1.前言 串口通信这个话题对于很多做机电一体化.机器人控制等系统协调的同学,根本不陌生.计算机软件(编程技术),近些年飞速发展.尤其是以机器学习.仿生控制.大数据为代表的AI行业.但是,软件及算法永远 ...

  4. PIC单片机入门_异步通讯模式详解

    1.USART用于异步通讯详解 1.1 USART的异步工作模式 在异步工作模式下, USART 采用的是标准非归零 ( NRZ编码格式 :一位起始位.8 位或 9 位数据位和一位停止位 ).最常用的 ...

  5. PIC单片机入门_定时器TMR2详解与实例

    1.前言 这里将介绍另一款定时器TMR2模块,TMR2与前面介绍的TMR0和TMR1相比,最大的差别是只能工作于定时模式,因此称它为"定时器TMR2".  2.TMR2的特性 TM ...

  6. s7300plc串口通信_什么是串口通讯?plc串口通讯的使用

    什么是串口通讯?plc串口通讯的使用 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆).大多数计算机包含两个基于RS232的串口.串 ...

  7. YDOOK: USB 转 TTL 模块 与 ESP8266 WiFi 串口通讯实验 连线实例教程

    YDOOK: USB 转 TTL 模块 与 ESP8266 WiFi 串口通讯实验 连线实例教程 © YDOOK JY Lin 文章目录 YDOOK: USB 转 TTL 模块 与 ESP8266 W ...

  8. c#串口通讯 c#串口连接电子秤电子天平

    1.串口连接 串口通讯可以直接用RS232串口线连接电脑和电子秤,也可以用虚拟串口模拟数据. 注:RS232个人电脑不识别端口的话,需要安装对应的驱动,如下图 代码中需要配置正确的端口号,查看物理端口 ...

  9. c语言uart串口通讯,uart串口通信c语言实现

    通信,按照传统的理解就是信息的传输与交换.对于单片机来说,通信则与传感器.存储芯片.外围控制芯片等技术紧密结合,成为整个单片机系统的"神经中枢".没有通信,单片机所实现的功能仅仅局 ...

最新文章

  1. 我自己可以挖矿了!使用Ethereum C++客户端Aleth建一个私有网络,并使用Remix部署一个智能合约
  2. (八)OpenStack---M版---双节点搭建---Cinder安装和配置
  3. 线框图(demo草图)制作的总结
  4. 设计模式之_工厂系列_01
  5. 一套完整的java程序_编写一个完整的Java Application 程序
  6. Alpine 操作系统是一个面向安全的轻型 Linux 发行版
  7. [分布式训练] 单机多卡的正确打开方式:理论基础
  8. Mac OS下使用VS Code对C++程序进行debug的配置
  9. FPGA常用FIFO简介
  10. python + Eclipse + Pydev 安装
  11. 拓扑排序:编译依赖问题
  12. 倾角传感器和陀螺仪传感器的区别
  13. 一份Slide两张表格带你快速了解目标检测
  14. Laplance算子(二阶导数)
  15. 系统盘清理,便携小助手一键清理系统垃圾
  16. 网站所在服务器查询方法
  17. Excel只删除开头和末尾空格,中间不管的2种操作
  18. python提取数列数字_从pandas datafram中的列中提取字符串中的数字
  19. Android 跳转到第三方应用(应用间的跳转)
  20. bpftrace 段错误 bpf_prog_load_deprecated

热门文章

  1. DispatcherServlet作用
  2. Bind view的master与slave部署与测试
  3. hdu 1078(记忆化搜索)
  4. document.getElementById(billNo)的作用
  5. Golang之pprof使用
  6. RecSys 2016总结
  7. 小程序开发总结一:mpvue框架及与小程序原生的混搭开发
  8. 浅谈Spark应用程序的性能调优
  9. 一、核心C#(第二部分)
  10. Overload 和Override 的区别