1.串口通讯头/定义文件 usart.h

#ifndef _SERIAL_H_
#define _SERIAL_H_#define BAUD 9600
#define FOSC 9216000L
#define NINE 0     /* Use 9bit communication? FALSE=8bit */#define DIVIDER ((int)(FOSC/(16UL * BAUD) -1))
#define HIGH_SPEED 1#if NINE == 1
#define NINE_BITS 0x40
#else
#define NINE_BITS 0
#endif#if HIGH_SPEED == 1
#define SPEED 0x4
#else
#define SPEED 0
#endif#if defined(_16F87) || defined(_16F88)#define RX_PIN TRISB2#define TX_PIN TRISB5
#else#define RX_PIN TRISC7#define TX_PIN TRISC6
#endif/* Serial initialization */
//'\'是对函数内属性的定义 不可缺少
#define init_comms()\RX_PIN = 1;   \TX_PIN = 1;         \SPBRG = DIVIDER;        \RCSTA = (NINE_BITS|0x90); \TXSTA = (SPEED|NINE_BITS|0x20)void putch(unsigned char);
unsigned char getch(void);
unsigned char getche(void);#endif

2.串口通讯源/实现文件 usart.c

/******************************************/
/*Author:Shen Chucu  All Rights Reserved!**
/*Tsinghua University
/*2016-11-15
/********************************************/
#include <pic.h>
#include <stdio.h>
#include "usart.h"
__CONFIG(0x3ffa);void delay(unsigned int x);
static int label=0; //不做事件响应
void main()
{INTCON=0x00;GIE=1;PEIE=1;RCIE=1;init_comms();CREN=1;SPEN=1;while(1){//等待中断 并进行事件响应设定if(label==1){printf("OK"); label = 0; //发送一个回馈信号即可delay(50);}if(label==2){printf("ERROR");label = 0; //发送一个回馈信号即可delay(50);}   }
}  void interrupt IsReceive()
{  if(RCIE&&RCIF==1) //接受中断使能位 + 接收中断标志位{unsigned char temp=RCREG;  //把上位机发送的数据保存下来if(temp=='S'){ label=1;   //发送数据标志 1} else if(temp=='E'){label=0; //发送数据标志 0 }else label=2;  //发送数据标志 2  }
}void delay(unsigned int x)
{unsigned int a,b;  //延时时间110xfor(a=x;a>1;a--)for(b=110;b>1;b--);
} 

PIC单片机精通_串口通信模块C实现相关推荐

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

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

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

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

  3. PIC单片机学习—USART串口

    PIC单片机学习-USART串口 最近做了几个项目都用到了PIC单片机,在这几个项目之前我只用到了51单片机和STM32来做控制类的项目,用PIC单片机的时候发现使用的时候和51单片机还是有所区别,有 ...

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

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

  5. PIC单片机入门_输入输出端口详解

    1.引言: PIC单片机引脚图: 在PIC16F87X 单片机中,28引脚型号的单片机有3 个I/O端口,分别是RA.RB和RC:40引脚型号单片机有5个 I/O端口,分别是RA.RB.RC.RD和R ...

  6. PIC单片机入门_指令系统

    1.前文回顾 前面学习了PIC单片机的系统框架,也介绍了程序存储器.数据存储器的组织形式.这里需要补充一点的就是寻址方式,之前仅仅提到了立即数寻址.直接寻址.其实还有几个比较重要的寻址方式,PC相对寻 ...

  7. PIC单片机入门_框架与存储器

    1.PIC16F877A单片机框架 1.1 为何性能如此之高? PIC单片机之所以有很高的性能是因为其具备如下特性: 内部为哈佛结构.寄存器文档.大多数单指令周期.指令流水线操作.长字型指令.指令数很 ...

  8. PIC单片机入门_中断系统详解

    1.中断的基本概念 当单片机正在执行程序时,出现了某些特殊状况,例如定时时间到.有键盘信号输入等,此时CPU须要暂时停止当前的程序,而转去执行处理这些事件的程序,待执行完这些特定的程序之后,再返回到原 ...

  9. PIC单片机入门_定时器/计数器TMR0详解与实例

    1.前言: PIC 系列单片机内部配备有数量不等的定时器/计数器模块:例如PIC17CX系列和PIC18CX系列都都配置了4个定时器/计数器模块:而PIC16F87X系列都配置了3个定时器/计数器模块 ...

最新文章

  1. 一个Java Web后台任务执行工具的设计与实现
  2. 东北大学 计算机网络试题,东北大学秦皇岛分校计算机网络考试试卷(含答案)
  3. SPCAMLEditor–灵活实用的CAML编辑工具(上)
  4. 【转】Android菜单详解——理解android中的Menu--不错
  5. BigDecimal相除异常
  6. 喜报!爱卡汽车签约神策数据
  7. 【STM32】STM32系列教程汇总(暂时暂停更新...)
  8. WebAssembly生态将完善网络安全性
  9. VM虚拟机手动配置IP地址
  10. Spring源码探究:容器
  11. java 读取资源文件最详细解读
  12. 190715每日一句
  13. NGUI中的UIGrid
  14. 手机组态软件_安卓平板组态软件​_移动端组态软件介绍
  15. 常用Windows运行命令大全
  16. 平面方程、两平面夹角、点到平面距离
  17. linux篇—Nginx反向代理负载均衡
  18. springboot中使用thymeleaf片段引入出现500错误(易错)
  19. Disallow self-closing on HTML void elements
  20. 柏西机器人_《勿忘我》孔木猴 ^第15章^ 最新更新:2020-08-03 17:37:51 晋江文学城_手机版...

热门文章

  1. C++ 流操作符重载函数
  2. css语言基础--css的选择符语法
  3. bind9 配置说明
  4. 动态规划之——最长公共子序列(nyoj36)
  5. np.random.rand()用法
  6. 洛谷——P1640 [SCOI2010]连续攻击游戏
  7. 浅谈Spark应用程序的性能调优
  8. Mybatis 总结
  9. 【小白的CFD之旅】02 江小白
  10. NPOI读取Excel模板并向其中写入数据