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; //打开总中断,允许接收新数据
}
}
}