51单片机连接蓝牙模块(发送多个数据)

代码

#include<regx52.h>
#include<intrins.h>
#include<string.h>

#define chartonumber(x) (x + '0')//装换INT到char里面

sbit Buzzer = P1^3;
unsigned int hh;
unsigned char code DateTable[]={"12345"};

//-----?? ??-----//
void Delay(unsigned int xms) //@11.0592MHz
{
unsigned char i, j;
while(xms){
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}

void Delay1us(unsigned int mms) //@11.0592MHz
{
while(mms){
_nop_();
_nop_();
_nop_();
mms--;
}
}
//----------------------//

unsigned char SenData; //发送 数据
char Flag; //标准位
unsigned char ReData; //接收数据

//函数声明

void usart_init(); //串口中断初始化

void send_data(unsigned char a); //串口数据发送

//---------------------------

//----------串口中断初始化函数-----------------

void usart_init()

{
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD = 0x20; //定时器工作方式2
PCON = 0x00;
TH1 = 0xFD; //波特率9600,数据为8,停止位1 (11.0592M)
TL1 = 0xFD;
ES = 1; //开串口中断
EA = 1; //开总中断
TR1 = 1; //启动定时器
}

//---------------------------

//---------串口数据发送-------------------

void send_data(unsigned char a){

SBUF = a; //SUBF接受/发送缓冲器
while(0 == TI); //等待发送完毕,再执行
TI=0; //手动清0
}

void send_data_cc( int a){

char bai,shi,ge,fen;
int shu;
shu=a;

// bai=shu/1000;
// shi=shu/100%10;
// ge=shu/10%10;
// fen=shu%10;

bai = chartonumber(shu/1000);
shi = chartonumber(shu/100%10);
ge = chartonumber(shu/10%10);
fen = chartonumber(shu%10);

SBUF = bai;//SUBF接受/发送缓冲器
while(!TI); //等待发送完毕,再执行
TI=0; //手动清0
SBUF = shi;
while(!TI);
TI=0;
SBUF = ge;
while(!TI);
TI=0;
SBUF = fen;
while(!TI);
TI=0;

}
//---------------------------

//---------------------------
void ser_int (void) interrupt 4 using 1

{
if(1 == RI) //RI接受中断标志
{
RI = 0; //清除RI接受中断标志
ReData = SBUF; //SUBF接受/发送缓冲器
Flag=1; //标志位置1表示有新数据进来
}
}
//---------------------------
//---------------------------
unsigned char i;

void main()
{
usart_init(); //串口中断初始化
while(1)
{
if (Flag==1)
{
EA=0; //判断是否有数据进来
send_data_cc(280);

Delay(10);
P1=0xFF;

Flag=0; //数据处理完毕将标志位置0,表示没有新数据要处理
EA=1; //打开总中断,允许接收新数据
}
}
}