LClearner 2017-05-19 10:25 采纳率: 50%
浏览 1530

HC05单片机串口通信问题

求助!为什么我用蓝牙与51单片机通信,能实现改变key的值 但是if(key==1) 里面的内容却不执行
单独除去蓝牙的程序还是可以执行的

#include

#define uchar unsigned char
#define uint unsigned int

sbit key=P2^0;/* open */

uchar HighRH = 0; //¸ßµçƽÖØÔصĸß×Ö½Ú
uchar HighRL = 0; //
uchar LowRH = 0; //µÍµçƽÖØÔصĵÍ×Ö½Ú
uchar LowRL = 0; //
uchar receiveData;

void ConfigPWM(uint fr, uchar dc);//ÉèÖÃÕ¼¿Õ±È¡£µ÷½ÚתËÙ

void UsartInit()//´®¿ÚͨÐÅ
{
SCON=0X50; //ÉèÖÃΪ¹¤×÷·½Ê½1
TMOD=0X21; //ÉèÖüÆÊýÆ÷¹¤×÷·½Ê½2
//PCON=0X80; //²¨ÌØÂʼӱ¶/
TH1=0XFD; //¼ÆÊýÆ÷³õʼֵÉèÖã¬×¢ÒⲨÌØÂÊÊÇ4800µÄ
TL1=0XFD;
ES=1; //´ò¿ª½ÓÊÕÖжÏ
// EA=1; //´ò¿ª×ÜÖжÏ
TR1=1; //´ò¿ª¼ÆÊýÆ÷
}

void main()
{
key=0;

    UsartInit();
EA = 1; 

while(1)
{

if(key==1)
{
    实现  内容
}

}

}

/*open PWM,fr-ƵÂÊ,dc-Õ¼¿Õ±È */
void ConfigPWM(unsigned int fr, unsigned char dc){
uint high, low;
unsigned long tmp;

tmp = (11059200/12) / fr; //Ò»¸öÖÜÆÚËùÐè¼ÆÊýÖµ
high = (tmp*dc) / 100; //¸ßµçƵËùÐè¼ÆÊýÖµ
low = tmp - high; //µÍµçƽËùÐè¼ÆÊýÖµ
high = 65536 - high + 12; //¼ÆËã¸ßµçƽµÄÖØÔØÖµ
low = 65536 - low + 12;//

HighRH = (unsigned char)(high>>8); //¸ßµçƽÖØÔØ
HighRL = (unsigned char)high;
LowRH = (unsigned char)(low>>8); //µÍµçƽÖØÔØ
LowRL = (unsigned char)low;

//TMOD &= 0xF0; //?? T0 ????
    TMOD=0x21; // TMOD |= 0x01; //T0ÉèÖ÷½Ê½1/
TH0 = HighRH; //¸ßµçƽ
TL0 = HighRL;
ET0 = 1; 
TR0 = 1; 

   en1 = 1; //Êä³ö¸ßµçƽ

   en2 = 1; //Êä³ö¸ßµçƽ

}

/* close PWM */
void ClosePWM()
{
TR0 = 0;
ET0 = 0;

   en1 = 1; //Êä³ö¸ßµçƽ

   en2 = 1; //Êä³ö¸ßµçƽ

}

/* T0 ÖжÏ,²úÉú PWM */
void InterruptTimer0() interrupt 1
{

 if (en1 == 1&&en2==1)
    { 
    TH0 = LowRH;
    TL0 = LowRL;
    en1 = 0;
            en2 = 0;
}
    else
    { 
    TH0 = HighRH;
    TL0 = HighRL;
    en1 = 1;
          en2 = 1;
}

}

void Usart() interrupt 4 //´®¿ÚͨÐÅÖжÏ
{

receiveData=SBUF;//³öÈ¥½ÓÊÕµ½µÄÊý¾Ý
RI = 0;//Çå³ý½ÓÊÕÖжϱê־λ

if((receiveData-48)=='1')
            key= 1;  

SBUF=receiveData;//½«½ÓÊÕµ½µÄÊý¾Ý·ÅÈëµ½·¢ËͼĴæÆ÷
while(!TI);          //µÈ´ý·¢ËÍÊý¾ÝÍê³É
TI=0;                        //Çå³ý·¢ËÍÍê³É±ê־λ

}

  • 写回答

3条回答 默认 最新

  • cheng_f 2017-05-19 12:52
    关注

    可能是你发送不成功,导致key的值不为1。稍微看了一下你的代码,也可能是死循环导致你的key接收不了值。没有写过单片机程序,只是简单的帮你分析。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题