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

发布者:GoldenDream最新更新时间:2018-07-30 来源: eefocus关键字:PIC单片机  串口通信模块  C实现 手机看文章 扫描二维码
随时随地手机看文章

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

#include

#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;  //延时时间110x

    for(a=x;a>1;a--)

       for(b=110;b>1;b--)

          ;


关键字:PIC单片机  串口通信模块  C实现 引用地址:PIC单片机精通_串口通信模块C实现

上一篇:PIC单片机精通_ADC左对齐与右对齐的数据读取问题
下一篇:PIC单片机精通_串口通讯与串口调试实例

推荐阅读最新更新时间:2024-03-16 16:10

PIC单片机 定时器初值计算
定时器 初值计算 晶振8M 需定时25us 分频比1:2 初值(EE)=256 - 25/ (4/8*2) + 14/2 = 256- 25 + 7 = 238
[单片机]
<font color='red'>PIC单片机</font> 定时器初值计算
基于C语言在FPGA上实现DSP的解决方案
硬件设计者已经开始在高性能DSP的设计中采用FPGA技术,因为它可以提供比基于PC或者单片机的解决方法快上10-100倍的运算量。以前,对硬件设计不熟悉的软件开发者们很难发挥出FPGA的优势,而如今基于C语言的方法可以让软件开发者毫不费力的将FPGA的优势发挥得淋漓尽致。这些基于C语言的开发工具可以比基于HDL语言的硬件设计更节省设计时间,同时不需要太多的硬件知识。由于具有这些优势,FPGA技术不仅可使这些器件作为I/O器件的前端,FPGA还可实现大量的高带宽和运算密集型应用的实时处理。此外,FPGA还可很紧密地与板上存储器结合,并在一块电路板上集成多个器件。更好的是,FPGA电路板可通过新兴的串口通讯标准进行通讯,如RapidI
[单片机]
基于<font color='red'>C</font>语言在FPGA上<font color='red'>实现</font>DSP的解决方案
PIC单片机关于PAGE和BANK
让我们来从PIC的指令结构上来分析一下为什么PIC中要有BANK和PAGE的设置吧。先来看一下为什么PIC中要把RAM区划分多个BANK。 仔细观察PIC汇编语言指令的格式,一条完整的汇编语言指令语句通常是这样的:标号 操作码助记符 操作数1,操作数2;注释。其中,主体部分是‘操作码助记符 操作数1,操作数2’。 例如: 指令:MOVF 33,1 操作码助记符:MOVF ; 操作数1:33 ; 操作数2:1 ; 而在程序被编译时指令语句的主体部分会被转换为代码的形式,通常是:指令代码 操作数2 操作数1。 例如在指令位数为14位的中档PIC单片机中: 指令:MOVF 33,1 转换后代码:00 1000 1 011 0011 其中
[单片机]
PIC单片机(PIC16F873)小项目二(工艺文件)
1.零部件安装顺序表 此称重板对零件安装顺序无特别要求,可遵循先小后大原则,先焊接小元器件,后焊接大元器件。结合自己焊接习惯安排零部件焊接顺序。 2.产品出厂老化试验 (1)输入110%的额定输入电压连续通电24小时。 (2)高温测试 (3)输入突变电压。 3.产品合格判定标准 (1)系统上电蜂鸣器响声一次,LED灯交互闪动四次。 (2)自学习过程中,LED灯闪动,学习完成后蜂鸣器响声两次。 (3)系统自学习完成后,随着输入变化,输出0V-10V或者0.5V-3.5V电压。 若产品满足以上两个要求,并无出现其它异样。则产品是合格产品。 4.程序下载步骤 1.连接好PIC程序下载工具m
[单片机]
#C51串口通讯2-#一串数据#定时中断实现超时接收
一.场景 实现一串非固定长度的数据接收,并返回对应数据(数据解析的基础框架) 二.编程实现 1.设计思想 借助T0定时器,不断的计数+1 接收到一帧数据(1Byte)后,串口中断服务函数将定时器T0计数清0(类似喂狗),并创建一个计数标志 一帧数据(1Byte)长度约为1.04ms 。当串口中断数据接收完毕后,短时间无有效数据接收并进入中断服务函数,此时T0计数器不被清0,不断累加 持续检测到大于固定时间时,认为此刻一串数据已传输完毕。 固定时间间隔一般设置3-5倍的一帧数据长度(1.04ms) 2.代码设计 主函数暂时处理为返回接收到的字符串 UART中断服务函数处理: 接收到一个字节,打开T0计数软件标志,清一次计数器
[单片机]
#<font color='red'>C</font>51<font color='red'>串口</font>通讯2-#一串数据#定时中断<font color='red'>实现</font>超时接收
通过长距离I2C总线可实现模拟信号的数字传输
  内部集成电路总线(I2C)是一种同步串行数据通信总线,其中由主器件发起通信,从器件通过寻址机制加以控制。I2C总线上的节点很容易连接,因为只需连接两条开漏形式的信号线(SDA用于数据,SCL用于时钟)。这些线上的电容是限制传输速率和节点间距离的主要因素。要想扩展速率和距离,有必要使用能够识别数据方向的缓冲器。本文所述的设计案例充分展示了PCA9605缓冲器的优势。   PCA9605是一种单片CMOS集成电路,可在包括I2C总线的应用中实现总线缓冲功能。该缓冲器可以通过缓冲驱动SCL和SDA线来扩展总线负载,缓冲器两侧可达到最大允许的总线电容。在其最基本的实现中,该缓冲器允许扩展数量的从器件连接到一个主器件。在本例设计中,主器件
[嵌入式]
基于C51单片机的MP3播放器设计与实现
0 引言     便携式MP3播放器作为一种集音频播放、数据存储为一身的数码产品,其功能结构为电子设计人员所津津乐道。MP3是MPEG一1音频III(1ayerIII)的简称。MPEG一1音频(ISO/IECll 172—3)是目前普遍应用的音频压缩标准,其中层III的算法最为复杂,但压缩比最大,效果也最好,在低码率的条件下基本能达到CD的音质效果。MP3标准用尽可能低的码流实现CD音质的声音而不会产生数据损失。如果对于一段声音不进行压缩的话,那么每存储一秒钟的立体声CD音质音乐必须用1.4Mbit,这是个十分大的开销。通过运用MPEG音频标准的压缩技术,我们可以把存储空间压缩到原来的1/12而不会降低声音的音质。即使使用1/
[嵌入式]
采用二维模糊控制器和C8051单片机实现室内自然采光系统的设计
1、 引言 从远古的篝火、油灯到蜡烛、白炽灯,再到今天千家万户的荧光灯,人类已经基本适应了人工光源的室内照明环境。但是由于千万年来的环境影响,自然光仍然是人类最习惯、感觉最舒适的光源,自然采光一直受到建筑师和照明设计师的高度重视。当今社会建筑的节能环保需求更对自然采光照明提出了进一步的要求。《建筑采光设计标准》 中的国家技术经济政策指出: 建筑设计要充分利用天然光,创造良好的光环境。 对室内照明自然采光的研究具有重要的意义: (1) 资料表明,照明用电占整个商业建筑能耗的25 - 40% ,而自然采光在特定的情况下可以节省52% 的照明用电,大大节约了能源。 (2) 相关研究表明,人在自然光条件下工作,可以增加满意度和提高工作
[单片机]
采用二维模糊控制器和<font color='red'>C</font>8051单片机<font color='red'>实现</font>室内自然采光系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved