以51单片机为例,一个简单的串口通信协议C程序

发布者:黑白之间最新更新时间:2016-09-12 来源: eefocus关键字:51单片机  串口通信协议 手机看文章 扫描二维码
随时随地手机看文章
/**************************************************
 文件说明:以51单片机为例,一个简单的串口通信协议C程序,
 协议以0XAA开头,以0XCC,0X33,0XC3,0X3C结尾,数据长度不一定 
 
  *************************************************/
 #define uchar unsigned char
 #define uint  unsigned int 
 bit  RXAAOK;        //接收到0XAA开头标志
 bit  RXFRMOK;       //接收一帧完整数据标
                     //接收中断中如果是完整一条数据置位,主函数中
      //处理完毕清零
 uchar RXBUF[32];    //接收缓存
 uchar RX_P;         //数据个数
 
 void UARTO_ISR() interrupt 4  //接收中断,不同处理器可能是不同的函数声明
 {
    uchar i;         //用处提取接收缓冲器的字符  
   if(RI)  
   { i=SBUF;      //提取字符
     RI=0;
  if(RXFRMOK==0)   //判断是否接收到起始字符0XAA
  {  if(RXAAOK)    //如果接收到0XAA,继续接收后面的字符
      { RXBUF[RX_P]=i; //字符存入数组
    if((RX_P>3)&&(RXBUF[RX_P-3]==0xcc) 
          &&(RXBUF[RX_P-2]==0x33)&&(RXBUF[RX_P-1]==0xc3)
                &&(RXBUF[RX_P]==0x3c) )  //判断是是否接收完毕一帧数据
    { RXFRMOK=1;             //如果接收完成,置位RXFRMOK;
      RXAAOK=0;              //清零开始标志位RXAAOK
    }
                  RX_P++;                //接收计数器加一
      }
    if(!RXAAOK&&(i==0xaa))  
      {RXAAOK=1;
       RX_P=0;
    }
     }
    } 
 }
 void main() //主程序
 {
    while(1)
    {
  if(RXFRMOK)
  { 
   if(RXBUF[0]==0X78)
   {//加入自己的处理函数即可
   }
   if(RXBUF[0]==0X7C)
   {//加入自己的处理函数即可
   }   
   RXBUFMOK=0; //处理完毕,清除消息
   }  
 }  
 }
关键字:51单片机  串口通信协议 引用地址:以51单片机为例,一个简单的串口通信协议C程序

上一篇:单片机学习之一:单片机概述
下一篇:51单片机PWM占空比调整

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

8051单片机特殊功能存储器SFR基础详解
8051单片机共有21个专用寄存器,现把其中部分寄存器简单介绍如下: 程序计数器(PC—Program Counter)。在实训中,我们已经知道PC是一个16位的计数器,它的作用是控制程序的执行顺序。其内容为将要执行指令的地址,寻址范围达64 KB。PC有自动加1功能,从而实现程序的顺序执行。PC没有地址,是不可寻址的,因此用户无法对它进行读写,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。因地址不在SFR(专用寄存器)之内,一般不计作专用寄存器。 累加器(ACC—Accumulator)。累加器为8位寄存器,是最常用的专用寄存器,功能较多,地位重要。它既可用于存放操作数,也可用来存放运算的中间结果。MCS-5
[单片机]
80<font color='red'>51单片机</font>特殊功能存储器SFR基础详解
详解51单片机学习过程中的四大误区
51单片机的辉煌过去 51单片机指MCS-51系列单片机,CICS指令集。由Intel公司开发,其结构增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(CMP)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源,内有128个RAM单元及4K的ROM。其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前国内的51单片机市场主要为国产宏晶的产品STC系列其号称低功耗,稳定与廉价的特点。 学习51单片机的误区 误区1:51单片机是学习的基础 “51单片机是学习的基础”这句话本身并没有错。在我读本科的时候,当时它无疑是学习的基础——毕竟那时没有更高级的单片机可以供使用,国内更
[单片机]
51单片机学习———2--LED闪烁+流水
LED闪烁实现 原理+代码 #include reg52.h sbit L1=P2^0; typedef unsigned char u8; typedef unsigned int u16; void delay(u16 i)//延时函数 { while(i--); } void main() { while(1) { L1=0; delay(30000);//max=65535 L1=1; delay(30000);//闪烁间隔约为270ms } } LED流水实现 原理+代码 #include reg52.h #include intrins.h #define A P2
[单片机]
51单片机 模块化编程
了解模块化编程 1.首先了解一下传统方式编程和模块化编程 传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路 模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include XXX.h 文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等 2. 模块化编程注意事项 .c文件:函数、变量的定义 .h文件:可被外部调用的函数、变量的声明 任何自定义的变量、函数在调用前必须有定义或声明(同一个.c) 使用到的自定义函数的.
[单片机]
<font color='red'>51单片机</font> 模块化编程
51单片机中的定时器和计数器
从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1 构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器 TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。TMOD主要是用于选定定时器的工作方式; TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚T0 (P3.4)和T1(P3.5)输入。 定时计数器的原理: 一、定
[单片机]
<font color='red'>51单片机</font>中的定时器和计数器
51单片机C语言教程(九) 语句应用
曾经在BBS上有朋友问过我{}是什么意思?什么作用?在C中是有不少的括号,如{}, ,()等,确实会让一些初入门的朋友不解。在VB等一些语言中同一个()号会有不同的作用,它可以用于组合若干条语句形成功能块,可以用做数组的下标等,而在C中括号的分工较为明显,{}号是用于将若干条语句组合在一起形成一种功能块,这种由若干条语句组合而成的语句就叫复合语句。复合语句之间用{}分隔,而它内部的各条语句还是需要以分号 ; 结束。复合语句是允许嵌套的,也是就是在{}中的{}也是复合语句。复合语句在程序运行时,{}中的各行单语句是依次顺序执行的。以C语言中可以将复合语句视为一条单语句,也就是说在语法上等同于一条单语句。对于一个函数而言,函数体就是一
[单片机]
51单片机温度控制报警和时间显示程序+Proteus仿真
本系统由AT89C51单片机、DS18B20温度检测部分、DS1302日期时间记录部分、数码管显示部分、按键输入部分和蜂鸣器报警部分组成。该系统通过按键一来调整模式,共五个模式。模式一是DS18B20采集环境温度并保存在存储器中通过单片机将温度显示在数码管上,当温度低于下限或高于上限时蜂鸣器报警;模式二是利用按键二和按键三调整报警的最高温度加减;模式三是利用按键二和按键三调整报警的最低温度加减;模式四是DS1302记录的日期通过单片机显示在数码管上;模式五是DS1302记录的时间通过单片机显示在数码管上。 仿真原理图如下 单片机源程序如下: #include reg52.h #include intrins.h #def
[单片机]
<font color='red'>51单片机</font>温度控制报警和时间显示程序+Proteus仿真
一文详解80C51单片机的指令系统
指令是指示计算机执行某种操作的命令,计算机能识别执行的只能是二进制代码,以二进制代码来描述指令功能的语言,称为机器语言。 由于机器语言不便于人们识别,记忆,理解和使用,因此便对每条机器语言指令用助记符号来形象表示,这就便形成了汇编语言。 一条指令是机器语言的一个语句,包括操作码字段和操作数字段。一台计算机所具有的全部指令的集合,称为这台计算机的指令系统。 不同的微处理器,其指令系统一般是不同的。 80C51单片机指令系统共有111条指令,具体特点如下: 1)执行时间短,单机器周期指令(64条),双机器周期指令(45条),而四机器周期指令只有2条; 2)指令编码字节少,单字节指令(49条),双字节指令(45条)和最长的三字节
[单片机]
一文详解80C<font color='red'>51单片机</font>的指令系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

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