吴大哥,我问你一个问题
因为我现在用单片机控制蓝牙,智能家居方面的,
#include <reg52.h>
#define uint unsigned int
sbit led1 = P1^7; //定义LED1 引脚
sbit led2 = P1^6; //定义LED2 引脚
void delay(uint k)
{
uint i,j;
while(k--)
{
for(i=255;i>0;i--)
for(j=100;j>0;j--);
}
}
void com_ser() interrupt 4 //串口中断处理函数,收到数据后产生中断,在这里处理
{
unsigned char temp; //定义一个变量,用来存放电脑端发来的数据
if(RI) //如果数据已经接收完,即RI=1
{
RI=0; //对RI进行清零
temp = SBUF; //把收到的数据赋值给变量(注意接收的写法)
}
if(temp=='a') //判断收到的数据是不是小写的 a
{
SBUF = 'A'; //是,则把大写的 A 发送给电脑端(注意发送的写法)
led1 = 1;
delay(10);
led1=0; //并点亮白色LED
}
else //如果不是字母 a
{
SBUF = 'B'; //把 B 发给电脑端,也可以 SBUF = temp 把temp的值发回去
led2 = 1;
delay(10);
led2=0; //并点亮红色LED
}
while (!TI); //判断数据是否发送完毕,即TI=1,没发完就在这等待
TI = 0; //发送完后对TI进行清零
}
void main() //主函数
{
/******************设定定时器*********************/
TMOD = 0x20; //设定定时器的工作方式(方式2)
TH1 = 0xfd; //设定波特率为 9600 bps (在11.0592MHZ晶振时)
TL1 = 0xfd;
/*******************设定串口**********************/
SM0 = 0; //SM0 和 SM1 设定串口的工作方式(方式1)
SM1 = 1;
REN = 1; //允许串口接收外部传来的数据
/******************设定中断**********************/
ES = 1; //允许串口收到数据后产生中断通知我们
EA = 1; //因为总中断开关是控制所有中断的,所以要把它打开
TR1 = 1; //启动定时器,串口就开始工作喽!
P1=0x00;
while (1); //什么都不做,在这等串口的中断产生
}
程序如上,但在手机APP(蓝牙调试助手)连接蓝牙型号(HC-05)调试时发现手机APP发什么LED灯都亮,所以我个人认为在解码方面有问题
但因为我个人技术有限,所以麻烦吴大哥帮我修改修改,我用的板子是普中科技开发板 |