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接收不了值。没有写过单片机程序,只是简单的帮你分析。

    评论

报告相同问题?

悬赏问题

  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站