您当前的位置:五五电子网电子知识单片机-工控设备51单片机Philips 87LPC768红外解码程序 正文
Philips 87LPC768红外解码程序

Philips 87LPC768红外解码程序

点击数:7414 次   录入时间:03-04 11:41:52   整理:http://www.55dianzi.com   51单片机
ET1=1;                     /*启动T01 定时*/
RedDataL=0;                 /*复位红外数据*/
RedDataH=0;                 /*复位红外数据*/
RSend=0;                 /*复位重新发送标志*/
}
}
}

void Count1(void) interrupt 3 using 3    /*定时器T01中断,最大定时9.1s*/
{
if(nTimer!=0)                 /*检测定时器T01 的扩展高位*/
{
nTimer--;
return;
}
ET1=0;                         /*关闭T01 定时*/
if(RedRead)                     /*红外接收状态*/
{
if((RedDataL&0xF)==12)         /*第一阶段接收已经结束*/
{
RSend=1;                 /*置位重新发送标志以便校验*/
RedDataL&=0xF0;             /*复位位指针以便校验*/
}
if(RedCon>27-REDINT&&RedCon<27+REDINT) 
RedBit=1;
else                        /*低电平计数9 表示0 27 表示1*/
RedBit=0;
if(RSend)                     /*检验重复发送的数据是否与第一次符合*/
{
switch(RedDataL&0xF)
{
case 0:                 /*检验重复发送的第1 位数据*/
if(RedBit!=RedData0)  goto RClear;
break;
case 1:                 /*检验重复发送的第2 位数据*/
if(RedBit!=RedData1)  goto RClear;
break;
case 2:                 /*检验重复发送的第3 位数据*/
if(RedBit!=RedData2)  goto RClear;
break;
case 3:                 /*检验重复发送的第4 位数据*/
if(RedBit!=RedData3)  goto RClear;
break;
case 4:                 /*检验重复发送的第5 位数据*/
if(RedBit!=RedData4)  goto RClear;
break;
case 5:                 /*检验重复发送的第6 位数据*/
if(RedBit!=RedData5) goto RClear;
break;
case 6:                 /*检验重复发送的第7 位数据*/
if(RedBit!=RedData6) goto RClear;
break;
case 7:                 /*检验重复发送的第8 位数据*/
if(RedBit!=RedData7)  goto RClear;
break;
case 8:                 /*检验重复发送的第9 位数据*/
if(RedBit!=RedData8)  goto RClear;
break;
case 9:                 /*检验重复发送的第10 位数据*/
if(RedBit!=RedData9)  goto RClear;
break;
case 10:                 /*检验重复发送的第11 位数据*/
if(RedBit!=RedData10) goto RClear;
break;
case 11:                 /*检验重复发送的第12 位数据*/
if(RedBit!=RedData11)  goto RClear;
RedMsg=1;                 /*接受到经过检验正确的编码后置位遥控消息*/
RedBit=0;                 /*复位接收位*/
RSend=0;                 /*复位重新发送标志*/
RedRead=0;             /*复位接收过程标志*/
RedCon=0;                 /*复位载波计数*/
return;
default:                 /*重复发送的数据多于12 位时判断为错误*/
goto RClear;
}
}
else
{
switch(RedDataL&0xF)
{
case 0:                 /*保存首次发送的第1 位数据*/
RedData0=RedBit;
break;
case 1:                 /*保存首次发送的第2 位数据*/
RedData1=RedBit;
break;
case 2:                 /*保存首次发送的第3 位数据*/
RedData2=RedBit;
break;
case 3:                 /*保存首次发送的第4 位数据*/
RedData3=RedBit;
break;
case 4:                 /*保存首次发送的第5 位数据*/
RedData4=RedBit;
break;
case 5:                 /*保存首次发送的第6 位数据*/
RedData5=RedBit;
break;
case 6:                 /*保存首次发送的第7 位数据*/
RedData6=RedBit;
break;
case 7:                 /*保存首次发送的第8 位数据*/
RedData7=RedBit;
break;
case 8:                 /*保存首次发送的第9 位数据*/
RedData8=RedBit;
break;
case 9:                 /*保存首次发送的第10 位数据*/
RedData9=RedBit;
break;
case 10:                 /*保存首次发送的第11 位数据*/
RedData10=RedBit;
break;
case 11:                 /*保存首次发送的第12 位数据*/

上一页  [1] [2] [3]  下一页


本文关键字:程序  51单片机单片机-工控设备 - 51单片机