📄 back.c
字号:
cKeyCodeReceiveState=0;
continue; //处理并且清除接收标志
}
x=3;
pKeyCode=sKeyCode;
*pKeyCode=0xa0; //起始同步码
++pKeyCode; //跳过发送地址
++pKeyCode;
*pKeyCode=id; //ID码
cKeyCodeReceiveState=0;//已取走第3个码
do
{
// x=x+*pKeyCode ; //从第二个开始累加校验
while(!cKeyCodeReceiveState) //读码等待
{
_nop_();
}
++pKeyCode;
*pKeyCode=cKeyCodeReceive;
cKeyCodeReceiveState=0; //取走键盘码
++x;
}while(x!=9); //读码结束标志
/*__________________________________________switch end________________
以上是接收的串口数据程序员
__________________________________________________________*/
/*-----------------------------------------------------
下面是发送解码后处理程序
________________________________________________________*/
/*-----------------------------------------------------
上面是发送解码后处理程序
________________________________________________________*/
} //end case while rotate
break; //finish case
/*____________________999999999999999999______________________________
三星协议结束
_______________________9999999999999999_______________________________*/
case PELCOP:
while(1)
{
WDT_cls();
if(PELCOP!=cProtocol) // 利用协议出错处理
goto ERRor;
if(!cKeyCodeReceiveState) continue;
/*__________________________________________switch begin________________
以下是接收的串口数据程序员
__________________________________________________________*/
if(0xa0!=cKeyCodeReceive)
{
cKeyCodeReceiveState=0;
continue; //首码错则结束 进 入 循 环
}
cKeyCodeReceiveState=0;
while(!cKeyCodeReceiveState)
{
WDT_cls();
}
if( cKeyCodeReceive!=id) //说明是正确的键盘码转入处理程序
{ //不是本球机的接收码ID不正确或者是一误码都必须会结束
cKeyCodeReceiveState=0;
continue; //处理并且清除接收标志
}
x=2;
pKeyCode=sKeyCode;
*pKeyCode=0xa0; //起始同步码
++pKeyCode;
*pKeyCode=id; //ID码
cKeyCodeReceiveState=0;//已取走第2个码
do
{
// x=x+*pKeyCode ; //从第二个开始累加校验
while(!cKeyCodeReceiveState) //读码等待
{
_nop_();
}
++pKeyCode;
*pKeyCode=cKeyCodeReceive;
cKeyCodeReceiveState=0; //取走键盘码
++x;
}while(x!=8); //读码结束标志
/*__________________________________________switch end________________
以上是接收的串口数据程序员
__________________________________________________________*/
/*-----------------------------------------------------
下面是发送解码后处理程序
________________________________________________________*/
/*-----------------------------------------------------
上面是发送解码后处理程序
________________________________________________________*/
} //end case while rotate
break; //finish case
/*____________________999999999999999999______________________________
PELCOP协议结束
_______________________9999999999999999_______________________________*/
case B01:
while(1)
{
WDT_cls();
if(B01!=cProtocol) // 利用协议出错处理
goto ERRor;
if(!cKeyCodeReceiveState) continue;
/*__________________________________________switch begin________________
以下是接收的串口数据程序员
__________________________________________________________*/
if(0xa0!=cKeyCodeReceive)
{
cKeyCodeReceiveState=0;
continue; //首码错则结束 进 入 循 环
}
cKeyCodeReceiveState=0;
while(!cKeyCodeReceiveState)
{
WDT_cls();
}
if( cKeyCodeReceive!=id) //说明是正确的键盘码转入处理程序
{ //不是本球机的接收码ID不正确或者是一误码都必须会结束
cKeyCodeReceiveState=0;
continue; //处理并且清除接收标志
}
x=2;
pKeyCode=sKeyCode;
*pKeyCode=0xa0; //起始同步码
++pKeyCode;
*pKeyCode=id; //ID码
cKeyCodeReceiveState=0;//已取走第2个码
do
{
// x=x+*pKeyCode ; //从第二个开始累加校验
while(!cKeyCodeReceiveState) //读码等待
{
_nop_();
}
++pKeyCode;
*pKeyCode=cKeyCodeReceive;
cKeyCodeReceiveState=0; //取走键盘码
++x;
}while(x!=11); //读码结束标志
/*__________________________________________switch end________________
以上是接收的串口数据程序员
__________________________________________________________*/
/*-----------------------------------------------------
下面是发送解码后处理程序
________________________________________________________*/
/*-----------------------------------------------------
上面是发送解码后处理程序
________________________________________________________*/
} //end case while rotate
break; //finish case
/*____________________999999999999999999______________________________
B01协议结束
_______________________9999999999999999_______________________________*/
case YAAN:
while(1)
{
WDT_cls();
if(YAAN!=cProtocol) // 利用协议出错处理
goto ERRor;
if(!cKeyCodeReceiveState) continue;
/*__________________________________________switch begin________________
以下是接收的串口数据程序员
__________________________________________________________*/
if(0x02!=cKeyCodeReceive)
{
cKeyCodeReceiveState=0;
continue; //首码错则结束 进 入 循 环
}
cKeyCodeReceiveState=0;
while(!cKeyCodeReceiveState)
{
WDT_cls();
}
if( cKeyCodeReceive!=id) //说明是正确的键盘码转入处理程序
{ //不是本球机的接收码ID不正确或者是一误码都必须会结束
cKeyCodeReceiveState=0;
continue; //处理并且清除接收标志
}
pKeyCode=sKeyCode;
*pKeyCode=0x02; //起始同步码
++pKeyCode;
*pKeyCode=id; //ID码
cKeyCodeReceiveState=0;//已取走第2个码
while(!cKeyCodeReceiveState) //读码等待
{
_nop_();
}
++pKeyCode;
*pKeyCode=cKeyCodeReceive;
cKeyCodeReceiveState=0; //取走键盘码
if((sKeyCode[2]>1)&&(sKeyCode[2]<12))
{
while(!cKeyCodeReceiveState) //读码等待
{
_nop_();
}
++pKeyCode;
*pKeyCode=cKeyCodeReceive;
cKeyCodeReceiveState=0; //取走键盘码
while(!cKeyCodeReceiveState) //读码等待
{
_nop_();
}
++pKeyCode;
*pKeyCode=cKeyCodeReceive;
cKeyCodeReceiveState=0; //取走键盘码
}
else
{
while(!cKeyCodeReceiveState) //读码等待
{
_nop_();
}
++pKeyCode;
*pKeyCode=cKeyCodeReceive;
cKeyCodeReceiveState=0; //取走键盘码
while(!cKeyCodeReceiveState) //读码等待
{
_nop_();
}
++pKeyCode;
*pKeyCode=cKeyCodeReceive;
cKeyCodeReceiveState=0; //取走键盘码
while(!cKeyCodeReceiveState) //读码等待
{
_nop_();
}
++pKeyCode;
*pKeyCode=cKeyCodeReceive;
cKeyCodeReceiveState=0; //取走键盘码
}
/*__________________________________________switch end________________
以上是接收的串口数据程序员
__________________________________________________________*/
/*-----------------------------------------------------
下面是发送解码后处理程序
________________________________________________________*/
/*-----------------------------------------------------
上面是发送解码后处理程序
________________________________________________________*/
} //end case while rotate
break; //finish case
/*____________________999999999999999999______________________________
YAAN协议结束
_______________________9999999999999999_______________________________*/
} //switch cProtocol end
} //end main
/*-----------------
目前只有键盘发码,如果相机发码则加相应处理程序
如果需要只需用if-else语句就可以实现了
-----------------------------------------------*/
/* ---------------------------------------------------------------------------
--------------------以下是中断程序区 ----------------------------------------
-----------------------------------------------------------------------------*/
void receive_send(void) interrupt SIO_VECTOR
{
switch((char)RI)
{
case 1:
RI=0;
cKeyCodeReceiveState=1; //有接收时就置位 然后在主程序中清除
cKeyCodeReceive=SBUF;
/*------------------------------------------------------------------------------------------------*/
// SBUF=cKeyCodeReceive;
/*------------------------------------------------------------------------------------------------*/
break;
case 0:
TI=0;
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -