|
問題:單片機(jī)能接收到手機(jī)發(fā)送的字符,但沒有識別出那個字符是什么('A'為點亮,'B'為熄滅),模塊沒有問題,如何解決?
代碼:
/*******************************************************************************
* 實驗名 : 藍(lán)牙HC-05模塊驅(qū)動實驗
* 使用的IO : P3.0,P3.1,P0.0,P0.1
* 實驗效果 : 手機(jī)發(fā)送字符給單片機(jī)點亮或熄滅led燈
* 注意 :
*******************************************************************************/
#include<reg51.h>
#define uchar unsigned char
uchar receiveData;
sbit led = P0^0;
sbit led2 = P0^1;
void UsartConfiguration();
void main()
{
UsartConfiguration();
led = 0;
led2 = 0; //檢測是否接收到字符,即是否進(jìn)入串行口中斷
TI = 0;
while(1)
{
if(receiveData == 'A')
led = 1; //點亮
if(receiveData == 'B')
led = 0; //熄滅
}
}
/*******************************************************************************
* 函數(shù)名 :UsartConfiguration()
* 函數(shù)功能 :設(shè)置串口
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void UsartConfiguration()
{
SCON=0X50; //設(shè)置為工作方式1
TMOD=0X20; //設(shè)置計數(shù)器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //計數(shù)器初始值設(shè)置,注意波特率是4800的(晶振為12.0MHz)
TL1=0XF3;
ES=1; //打開接收中斷
EA=1; //打開總中斷
TR1=1; //打開計數(shù)器
}
void Usart() interrupt 4 //串行口中斷
{
receiveData=SBUF; //出去接收到的數(shù)據(jù)
led2 = 1; //手機(jī)發(fā)送字符時,此燈點亮
RI = 0; //清除接收中斷標(biāo)志位
SBUF=receiveData; //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
while(!TI); //等待發(fā)送數(shù)據(jù)完成
TI=0; //清除發(fā)送完成標(biāo)志位 */
}
|
|