• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-04
  • 语言: 其他
  • 标签:

资源简介

51单片机蓝牙串口调试测试源代码, 非常适合初学者学习使用 //**** 声明 ******************************************************************** /******************************************************************************* * 下面来自互联开源程序,由广州汇承信息科技有限公司收集 * 方便用户参考学习,本公司不提供任何技术支持 * 程序仅供测试参考,不能应用在实际工程中,不一定能通过编译 * 公司网站 http://www.wavesen.com/ * 淘宝网址 http://shop61591214.taobao.com/ *******************************************************************************/ /******************************************************************** * 文件名 : 串口接收试验.c * 描述 : 该文件实现通过单片机从电脑接收数据。 该试验使用的晶振是11.0592 ***********************************************************************/

资源截图

代码片段和文件信息


//**** 声明 ********************************************************************
/*******************************************************************************
 * 下面来自互联开源程序,由广州汇承信息科技有限公司收集
 * 方便用户参考学习,本公司不提供任何技术支持
 * 程序仅供测试参考,不能应用在实际工程中,不一定能通过编译
 * 公司网站  http://www.wavesen.com/
 * 淘宝网址  http://shop61591214.taobao.com/
*******************************************************************************/


/********************************************************************
* 文件名  : 串口接收试验.c
* 描述    :  该文件实现通过单片机从电脑接收数据。
             该试验使用的晶振是11.0592
***********************************************************************/

#include
#include

#define uchar unsigned char
#define uint  unsigned int

uchar uart_receive_buffer[30];  //从串口接收的数据
uchar uart_receive_number=0;    //指示串口接收个数


/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms
* x * 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay_1ms(uint i)//1ms延时
{
  uchar xj;
  
  for(j=0;j    for(x=0;x<=148;x++);
}

/********************************************************************
* 名称 : Com_Int()
* 功能 : 串口中断子函数
* 输入 : 无 * 输出 : 无
***********************************************************************/
void Com_Int(void) interrupt 4
{
  static uchar i = 7;  //定义为静态变量,当重新进入这个子函数时 i 的值不会发生改变
  
  EA = 0;
  if(RI == 1){  //当硬件接收到一个数据时,RI会置位
    RI = 0;
    uart_receive_buffer[uart_receive_number] = SBUF;  //这里减去48是因为从电脑中发送过来的数据是ASCII码。
    uart_receive_number++;
  }
  EA = 1;
}

/********************************************************************
* 名称 : Com_Init()
* 功能 : 串口初始化,晶振11.0592波特率9600,使能了串口中断
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Com_Init(void) {
  TMOD = 0x20;
  PCON = 0x00;
  SCON = 0x50;
  TH1 = 0xFd;  //设置波特率 9600
  TL1 = 0xFd;
  TR1 = 1;  //启动定时器1
  ES = 1;  //开串口中断
  EA = 1;  //开总中断
}

/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main()
{
  uchar uart_receive_number_old=0;
  
  Com_Init();
  
  while(1){
    
    if(uart_receive_number_old!=uart_receive_number){
      uart_receive_number_old=uart_receive_number;
    }
    
    //如果单片机接收来自HC-xx模块不少于1字节的串口数据,一定要加延时后再判断是否
    //还有串口数据在发送,这样才能完整的接收一帧串口数据
    Delay_1ms(30);
    
    //一段时间之后仍然相等,表示上位机发来的一串数据结束
    if(uart_receive_number_old==uart_receive_number){
      if(uart_receive_number)
        break;
    }
  }
  
  if(uart_receive_number){
    //串口有数据时,该做些什么就做什么吧
  }
  
  while(1);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        3213  2014-02-21 10:56  51\51_uart_receive.c
     文件        1849  2014-02-21 10:40  51\51_uart_send.c
     目录           0  2014-02-21 10:56  51\

评论

共有 条评论