yaokongc.c
来自「单片机红外解码及无线解码的应用」· C语言 代码 · 共 276 行
C
276 行
//dvd
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit IR=P1^7;
//sbit JK1=P3^7;
//sbit JK2=P3^6;
//sbit JK0=P0^2;
sbit JK1=P1^6;
sbit JK2=P1^5;
sbit JK3=P1^4;
sbit JK4=P1^3;
sbit JK5=P1^2;
sbit JK6=P1^1;
uchar datacode[5];
uchar serior[4]={0xAA,0X55,0XA5,0X00};
void delay0(void)
{
uchar i=145;
while(i--);
}
void delay1(void)
{
uchar i=70;
while(i--);
}
void delay2(void)
{
uint i=4600;
while(i--);
}
void delay3(void)
{
uchar i=30;
while(i--);
}
void delay(void)
{
uchar j,k;
//for(i=0;i<1;i++)
for (j=0;j<50;j++)
for (k=0;k<50;k++);
}
uchar yaokong (void)
{
uchar i,k;
uchar bdata j;
//uint a;
if (IR==1)
return(0);
for (i=0;i<20;i++)//882us 0
{
delay1();
if (IR==1)
return(0);
}
while(IR==0);
for (i=0;i<9;i++)//4700us 1
{
delay1();
if (IR==0)
return(0);
}
delay0();
for (i=0;i<4;i++)
{
for (k=0;k<8;k++)
{
while(IR==0);
delay0();
j>>=1;
if (IR==1)
{
j|=0x80;
while(IR==1);
}
else
{
j&=0x7f;
}
}
datacode[i]=j;
}
return(1);
}
uchar lianfa (void)
{
uchar i;
if (IR==1)
return(0);
else
while(IR==0);
for (i=0;i<10;i++)//369us 1
{
delay3();
if (IR==0)
return(0);
}
delay1();
if (IR==1)
return(0);
delay3();
if (IR==1)
return(0);
if (IR==0)
while(IR==0);
for (i=0;i<107;i++)//15969us 1
{
delay0();
if (IR==0)
return(0);
}
delay0();
delay0();
if (IR==1)
return(0);
return(1);
}
void receive (void) interrupt 4
{
if (TI==1)
{
TI=0;
}
if (RI==1)
RI=0;
}
initial ()
{
SCON=0X50;
TMOD=0x20;
TH1=0xF3;//0xF3;2400
TL1=0xF3;
TR1=1;
EA=1;
ES=1;
}
void sendstring (uchar *p ,uchar len)
{
uchar i;//,temp;
for (i=0;i<len;i++)
{
//temp= 0;
SBUF=*(p++);
delay();
}
}
void main(void)
{
uchar i;
initial();
for (i=0;i<20;i++)
datacode[i]=i;
while(1)
{
if (yaokong()==1)
{
switch (datacode[2])
{
case 0x18://12
JK1=!JK1;
delay2();
while(lianfa()==1);
break;
case 0x1F://1B
JK2=!JK2;
delay2();
while(lianfa()==1);
break;
case 0x1E:
JK3=!JK3;
delay2();
while(lianfa()==1);
break;
case 0x1B:
JK4=!JK4;
delay2();
while(lianfa()==1);
break;
case 0x14:
JK5=0;
delay2();
while(lianfa()==1);
JK5=1;
break;
case 0x15:
JK6=0;
delay2();
while(lianfa()==1);
JK6=1;
break;
case 0x1D:
P1=0x80;
delay2();
while(lianfa()==1);
break;
case 0x1C:
P1=0xff;
delay2();
while(lianfa()==1);
break;
case 0x0F:
serior[3]=0x0F;//上
sendstring(serior,4);
break;
case 0x05:
serior[3]=0x05;//下
sendstring(serior,4);
break;
case 0x0A:
serior[3]=0x0A;//左
sendstring(serior,4);
break;
case 0x09:
serior[3]=0x09;//右
sendstring(serior,4);
break;
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?