求助!为什么我用蓝牙与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; //Çå³ý·¢ËÍÍê³É±ê־λ
}