红外遥控控制按键程序
{
TH0=0x9e;
TL0=0x58;
flag_time=1;
}
void int_ation(void) //开始初始化
{
TMOD=0x01; //开计时中断0初始化
TH0=0x3c;
TL0=0xb3;
TR0=1;
ET0=1;
EA=1;
}
////////////红外中断入口//////
void service_int0(void)
{
case 0x0C:KEY0=~KEY0;break;//按键1
case 0x18:KEY1=~KEY1;break;//按键2
case 0x5E:KEY2=~KEY2;break;//按键3
case 0x08:KEY3=~KEY3;break;//按键4
default :break;
}
}
}
/**************************TH0=0x9e;
TL0=0x58; //0.65+0.05=0.7ms; 25ms
}
}
if ((date[2]==(~date[3]))&&(date[0]==0x00)&&(date[1]==0xFF)) //地址码数据数据码验证
{
flag_ir=1;
switch(date[2])
}
}
if (IRIN==1)
date[i]=date[i]|0x80;
break;
}
}
if (IRIN==1)
{
TH0=0x9e;
TL0=0x58;//0.84+0.05=0.89ms; 25ms
while (1)
{
if (flag_time==1)
{
flag_time=0;
return;
}
if (IRIN==0)
return;
}
}
while (1)
{
if (IRIN==0)
{
if ((TH0*256+TL0)>2000) //如果时间大于4MS则进入数据接收
//if (((TH0*256+TL0)-(0xee*256+0x3a))>4000) //如果时间大于4MS则进入数据接收
{
TH0=0x9e;
TL0=0x58; //0.65+0.05=0.7ms; 25ms
void main (void)
{
unsigned int a,b;
int_ation();
while (1)
{
for(a=0;a<20000;a++)
{
LED=0;
/*你写的程序*/
}
for(b=0;b<20000;b++)
{
LED=1;
/*你写的程序*/
}
while(IRIN==1);
service_int0();
#include"reg51.h"
#include"intrins.h"
#define unint unsigned int
#define unchar unsigned char
sbit IRIN=P3^3;
sbit KEY0=P1^4;
sbit KEY1=P1^5;
sbit KEY2=P1^6;
{
while (1)
{
if (IRIN==1)
{
TH0=0xfc;
TL0=0xb8; //0.84+0.05=0.89ms;
break;
}
if (flag_time==1)
{
flag_time=0;
return;
}
}
while (1)
{
if (flag_time==1)
{
flag_time=0;
date[i]=date[i]>>1;
{
unsigned char i=0,j=0;
if (IRIN==1)
return;
flag_time=0;
TH0=0x9e;
TL0=0x58; //9+0.05=9.05ms 25ms
while (1)
{
if (IRIN==1)
{
if ((TH0*256+TL0)>4000) //如果时间大于8MS则进入4.5MS高电平检测//>8000
{
TH0=0x9e;
TL0=0x58; //4.5+0.05=4.55ms; 25ms
flag_time=0;
break;
}
else //如果时间小于8MS电平有跳变则为干扰,放弃跳出
{
return;
}
}
if (flag_time==1) //如果时间大于9.05MS放弃跳出
{
flag_time=0;
flag_time=0;
break;
}
else //如果时间小于4MS电平有跳变则为干扰,放弃跳出
{
return;
}
}
if (flag_time==1) //如果时间大于4.55MS放弃跳出
{
flag_time=0;
return;
}
}
for (i=0;i<4;i++)
{
for (j=0;j<8;j++)
sbit KEY3=P1^7;
sbit LED=P3^7;
bit flag_time=0;
bit flag_ir=0;
bit ir_date=0;
bit time0=1;
bit time1=1;
unsigned char date[4]={0,0,0,0};
/*************************/
void int_time3(void);
void int_ation(void); //开始初始化
void int_ation(void);
void service_int0(void);
//////*红外检测延时用*//////
void service_int1(void) interrupt 1