C51的串口中断处理子程序

发布者:数字梦想最新更新时间:2016-11-24 来源: eefocus关键字:C51  串口中断  子程序 手机看文章 扫描二维码
随时随地手机看文章

此串口处理程序是基于以下的协议写成的:

帧内容FRAME=帧头FA+帧长度len(不包括帧头帧尾)+数据流data+帧尾FB。

串口中断子程序里对整个数据流进行处理,而不是一个字节一个字节地处理,在中断中等待处理完所有的字节。

void Uart_Int(void) interrupt 4   //串口要加帧头与FA帧尾FB      
{
    unsigned char  len, i;
   unsigned int  j=0;
 unsigned char    serialStart;
   if(RI)                  //收到数据  
 { 
  serialStart=SBUF;
  RI=0;
  if(serialStart==0xFA)
  {
   while(RI==0);
   len=SBUF;           //第一个字节是数据包的长度   
   RI=0;             //清零RI以便接收下一个  
   for(i=0;i   {
    while(!RI)
    {
     j++;
     if(j>1000)
     {

      break;       //break跳出循环语句 
     }
    }
    if(j<1000)
    {
     serialBuffer[i]=SBUF;    
     RI=0;
     j=0;
    }
    else
    {
        break;
    }
   }
   if((i==len+1)&&(serialBuffer[i-1]==0xFB))    //最后一位是0xFB。 
   {
    REN=0;                    // 清零接收位

    serialCmd=TRUE;           //接收完毕,收到命令有效,置位1 又说明pc发送的数据单片机接收成功
   }
   else

    return;
  }
  else 
    return;  
 }
 else if(!RI && TI)            //发送-RI=0,TI=1
 {
  TI=0;          //TI是为了进入中断而故意软件设置的,所以先清0
  SBUF=0xFA;
  while(!TI);
  TI=0;
  len=serialBuffer[0];           //发送的第一个字节是包的长度   
  for(i=0;i  {
   SBUF=serialBuffer[i];
   while(!TI);          //等待发送完毕  
   TI=0;   
  }
  SBUF =0xFB;
  while(!TI);
  TI  =0;
  REN  =1;
          //ren=receive enable
 }
}


关键字:C51  串口中断  子程序 引用地址:C51的串口中断处理子程序

上一篇:C51结构、联合和枚举的使用
下一篇:C51定时器计算工具

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

Keil C51对C语言的关键词扩展之十八:using
在8051系列单片机中,内部ram的前32个字节被分为4组,每组8个寄存器。每组的8个寄存器名字都为R0-R7。通过设置PSW寄存器的两个位,可以选择使用4组寄存器中的哪一组。 寄存器组在处理中断或者使用实时操作系统时非常有用,可以在进入中断或者切换任务时使用不同寄存器组,而不用把8个寄存器的内容保存到堆栈。在退出中断或返回原任务时,只需切换回原来的寄存器组即可。 指定一个函数使用的寄存器组: void rb_function (void) using 3 { . . . } using后跟数字0-3,不允许使用符号表达式指定代替该数字常量。只有定义函数时才可使用using关键词,在做函数原型声明时不允许使用usin
[单片机]
c51单片机中断号及中断向量
1、外部中断 0、 1;分别由引脚/INT0、/INT1的电平信号引起。 2、定时/计数器 0、1;分别由T0、 T1的溢出引起。 3、串行口发送、接收;发送完一个字节或接收到一个字节引起。 上述共5个中断源。 一、中断号 外部中断0 0 定时器T0 1 外部中断1 2 定时器T1 3 串口中断 4 二、 interrupt 和 using 在C51中断中的使用 8051 系列 MCU 的基本结构包括:32 个 I/O 口(4 组8 bit 端口);两个16 位定时计数器;全双工串行通信;6 个中断源(2 个外部中断、2 个定时/计数器中断、1 个
[单片机]
<font color='red'>c51</font>单片机<font color='red'>中断</font>号及<font color='red'>中断</font>向量
C51:LCD1602 显示测量值
#include reg51.h #include intrins.h #include stdlib.h #define uchar unsigned char //延时1 毫秒 程序 void delayms(); //延时 s 毫秒 程序 void delay(uchar s); //初始化 LCD void InitLCD(); //写LCD 指令 void WriteInstruction(uchar); //写LCD 数据 void WriteData(uchar); //写地址 void WriteAdd(uchar); //读LCD 状态 uchar BusyTest(); //LCD
[单片机]
c51单片机中断函数
以串口中断为例: 如: void serial() interrupt 4 { } 和 void serial_uart() interrupt 4 { } 两个函数的功能都是定义串口中断函数。函数名字不一样不重要,重要的是函数名字后面的interrupt 4(中断向量表地址)要正确。
[单片机]
C51自学笔记】概述与准备
使用atmel公司:AT89S52 使用烧录工具:progisp 使用编写工具:Keil uVision 使用开发板:天狼星TLX-1C开发板 后续出现的代码已打包:https://download.csdn.net/download/f_zmmfs/10560847(侵删) 结构: 内部集成8位CPU,4K字节的ROM,128字节RAM,4个8位并行I/O口,一个全双工串行口,2个16位定时器/计数器,5个中断源。 CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器 RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;(非记忆性)
[单片机]
【<font color='red'>C51</font>自学笔记】概述与准备
C51-基础知识必备
基础知识必备 概念 在一片硅片上集成了微处理器,存储器及各种输入/输出接口的芯片。(单片微型计算机) 主要知识 中央处理器 程序处理器 数据存储器 定时器/计数器 并行I/O口 全双工串行口 中断系统 时钟震荡电路 主要内容 总图
[单片机]
C51-基础知识必备
51单片机串口通讯之中断
程序讲解: /*---------------------------------------------------------------*/ //串口通讯 //按下按钮,单片机发送数据 Come On!\r\n 给主机 //单片机晶振:11.0592MHz //波特率: 9600bps /*-------------------------------------------------------------*/ //包含头文件 #include at89x52.h unsigned char co de tab ={ Come On!\r\n }; #define k1 P3_2 //对应开发板
[单片机]
采用C51与插拔式FLASH闪存设计无纸记录仪
ATMEL公司推出的带有看门狗功能的单片机AT89C55WD带有20K的程序存储器,是8051系列中一款较为先进的产品,其看门狗功能可以大大提高产品的稳定性,大容量的内部程序存储器可以容纳功能丰富的软件。   以往的许多无纸记录仪均采用3.5英寸软盘作为数据存贮介质,但软盘存贮的可靠性差、存储容量有限、成本较高等诸多缺点实在难以克服。   作为一种高科技的非易失性存储设备,FLASH闪存首先在数码相机、PDA、移动电话等数字产品当中得到了应用,随着工艺的进步和价格的下降,逐步向其他应用领域扩展,其容量大、功耗低、速度快、不易受损等优点正受到人们越来越多的青睐,而且最大的好处是,随着技术水平的进步,FLASH闪存的容量也在不断
[测试测量]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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