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 + -
显示快捷键?