///////
51單片機藍牙測試代碼
////////
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
u8 r_buf; //藍牙接收到的字符存儲緩沖區
sbit led1 = P1^0; //燈1,當接收字符0時,燈1亮
sbit led2 = P1^1; //燈2,當接收字符1時,燈2亮
sbit led3 = P1^2; //燈2,當接收其它字符時,燈3亮
sbit led4 = P1^3; //藍牙連接狀態燈,當藍牙連通時,燈4亮
sbit state = P3^6; //藍牙連通的狀態標志位
void delay(u16 z) //延遲函數
{
u16 x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
void InitUART() //串口初始化9600
{
//初始化串口定時器9600
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFF;
TL1 = 0xFD;
TR1 = 1;
ES = 1;
EA = 1;
}
void SendOneByte(unsigned char c) //發送字符函數
{
SBUF = c;
while(!TI);
TI = 0;
}
void main(void)
{
InitUART();
led1 = 1;
led2 = 1;
led3 = 1;
led4 = 1;
r_buf = '2';
while(1)
{
if(state == 1)//藍牙連通狀態判斷
{
led4 = 0; //如果藍牙匹配成功,燈4亮
}
else
{
led4 = 1; //如果藍牙匹配不成功,燈4不亮
}
}
}
void UARTInterrupt(void) interrupt 4 //串口接收字符
{
if(RI)
{
RI = 0;
//add your code here!
r_buf = SBUF;
if(r_buf == '0')//如果為字符‘0’,燈1亮
{
led1 = 0;
delay(1000);
led1 = 1;
}
if(r_buf == '1')//如果為字符‘1’,燈2亮
{
led2 = 0;
delay(1000);
led2 = 1;
}
else //如果為其它字符,燈3亮
{
led3 = 0;
delay(1000);
led3 = 1;
}
SendOneByte(r_buf);//回發該字符
}
} |