| 吴大哥,我问你一个问题 因为我现在用单片机控制蓝牙,智能家居方面的,
 #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灯都亮,所以我个人认为在解码方面有问题
 但因为我个人技术有限,所以麻烦吴大哥帮我修改修改,我用的板子是普中科技开发板
 |