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单片机