红外正常 串口工具能接收到发送的数据 但不能控制 帮忙看下程序有啥不对的 多谢
#include<reg51.h>
sbit IRIN = P3^2;
unsigned char IRCOM[7];
unsignedcharkeys=0xff;
sbitqian=P1^0 ;
sbithou=P1^7;
voidgo()
{
qian=1;
hou=0;
keys=0;
}
voidback()
{
qian=0;
hou=1;
keys=0;
}
void IRdelay(unsigned char x)
{
unsigned char i;
while(x--)
{
for (i = 0; i<13; i++) {}
}
}
voidint0(void) interrupt 0
{
unsigned char j,k,N=0;
IRdelay(15);
if (IRIN==1)
{
return;
}
while (!IRIN)
{IRdelay(1);}
for (j=0;j<4;j++)
{
for (k=0;k<8;k++)
{
while (IRIN)
{IRdelay(1);} while (!IRIN)
{IRdelay(1);}
while (IRIN)
{
IRdelay(1);
N++;
if (N>=30)
{ return;}
}
IRCOM[j]=IRCOM[j] >> 1;
if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}
N=0;
}
}
keys=IRCOM[2];
}
void UART_SER (void) interrupt 4
{
if(RI)
{
RI=0;
keys=SBUF;
SBUF=keys;
}
}
void main()
{
SCON = 0x50;
IE=0X91;
TCON=0X41;
TMOD |= 0x20;
TH1 = 0xFD;
P1=0X0;
while(1)
{
switch(keys)
{
case~0XF3:go();break;
case~0XA1:back();break;
default:break;
}
}
}
我自己看的是串口的 keys 的数据不能同步到 switch 判断语句中 求解。。。
#include<reg51.h>
sbit IRIN = P3^2;
unsigned char IRCOM[7];
unsignedcharkeys=0xff;
sbitqian=P1^0 ;
sbithou=P1^7;
voidgo()
{
qian=1;
hou=0;
keys=0;
}
voidback()
{
qian=0;
hou=1;
keys=0;
}
void IRdelay(unsigned char x)
{
unsigned char i;
while(x--)
{
for (i = 0; i<13; i++) {}
}
}
voidint0(void) interrupt 0
{
unsigned char j,k,N=0;
IRdelay(15);
if (IRIN==1)
{
return;
}
while (!IRIN)
{IRdelay(1);}
for (j=0;j<4;j++)
{
for (k=0;k<8;k++)
{
while (IRIN)
{IRdelay(1);} while (!IRIN)
{IRdelay(1);}
while (IRIN)
{
IRdelay(1);
N++;
if (N>=30)
{ return;}
}
IRCOM[j]=IRCOM[j] >> 1;
if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}
N=0;
}
}
keys=IRCOM[2];
}
void UART_SER (void) interrupt 4
{
if(RI)
{
RI=0;
keys=SBUF;
SBUF=keys;
}
}
void main()
{
SCON = 0x50;
IE=0X91;
TCON=0X41;
TMOD |= 0x20;
TH1 = 0xFD;
P1=0X0;
while(1)
{
switch(keys)
{
case~0XF3:go();break;
case~0XA1:back();break;
default:break;
}
}
}
我自己看的是串口的 keys 的数据不能同步到 switch 判断语句中 求解。。。