📄 ir.h
字号:
/******************************************************************************
模块名称:红外接收
创建人:
创建日期:
模块说明:
*******************************************************************************/
sbit IR=P3^2; //P3.2为红外一体化接收
//sbit P3_4=P3^4;
unsigned char dm,i,j,k;
unsigned char aa[5]; //定义2个数组,用来存储代码,8位的数据码和8位的数据反码
unsigned long bb; //定义bb用来存放用户识别码,这里采用的是26位的用户识别
//0.9ms
void delay0_9ms(void)
{
unsigned char j,k;
for(j=18;j>0;j--)
for(k=20;k>0;k--) ;
}
//1ms
void delay1ms(void)
{
unsigned char i,j;
for(i=2;i>0;i--)
for(j=230;j>0;j--) ;
}
//4.5ms
void delay4_5ms(void)
{
unsigned char i,j;
for(i=10;i>0;i--)
for(j=225;j>0;j--) ;
}
/*void sound()
{
int h;
for(h=0;h<500;h++)
{
char n;
P3_4=0;
for(n=0;n<40;n++);
P3_4=~P3_4;
for(n=0;n<40;n++);
}
}*/
void t0(void) interrupt 0 using 2//外部中断0的函数
{
EA=0; //暂时关闭CPU的所有中断请求
for(k=0;k<10;k++) //重复10次,目的是检测在9毫秒内如果出现高电平就退出解码程序
{ //aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
delay0_9ms(); //延时0.9毫秒
if (IR==1) {k=10;break;} //延时0.9毫秒后判断P3.2脚是否出现高电平如果有就退出解码程序
else if(k==9) //重复10次?
{ //bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
while(IR==0); //等待高电平避开9毫秒低电平引导脉冲
delay4_5ms(); //延时4.5毫秒避开4.5毫秒的结果码
/********************************************
//26位的用户码,前13位数据码,后13位数据反码
*********************************************
for(j=1;j<=26;j++)//每组数据为26位
{
while(IR==0); //
delay0_9ms();
if(IR==1)
{
delay1ms();
dm=dm|0x2000000; //因为是26位,一个"1",后面25个"0",转化二进制即为"1000000"
if(j<26) dm=dm>>1; //数据"1",右移一个"1",一共25次
}
else if(j<26) dm=dm>>1; //数据"0",一共25次
}
bb=dm;
dm=0;
/***************************************************
//16位的用户码,前8位数据码,后8位数据反码
****************************************************/
for(i=0;i<4;i++)
{
for(j=1;j<=8;j++)//每组数据为8位
{
while(IR==0); //
delay0_9ms();
if(IR==1)
{
delay1ms();
dm=dm|0x80;
if(j<8) dm=dm>>1; //数据"1",右移一个"1",一共7次
}
else if(j<8) dm=dm>>1; //数据"0",一共7次
}
aa[i]=dm;
dm=0;
}
} //bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
} //aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
//if(aa[2]=~aa[3]) sound();
EA=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -