📄 uulac.c
字号:
#include "extern.h"
uchar bdata flag;
sbit pary0=flag^0;
sbit pary1=flag^1;
sbit pary2=flag^2;
sbit pary3=flag^3;
sbit pary4=flag^4;
sbit pary5=flag^5;
sbit pary6=flag^6;
sbit pary7=flag^7;
/*
8888888888888888888888888888888888888888888888888888888888888
*
*
**
*****************************************************************
*/
void video_swiitcher()
{
p=p-1;return;
}
void smartscan_receiver()
{
uchar xdata i;
if(t[0]!=0xb0)
{
p=p-1;
for(i=0;i<6;i++)
t[i]=t[i+1];
return;
}
// f_display_adot_data(t[0],t[1]);
// f_display_adot_data1(t[2],t[3]);
switch(t[2])
{
case 'C':pe[4]=0;f_reset_default_off();break;
case 'D':pe[4]=0;f_reset_default_on();break;
case 'O':pe[4]=37;pe[5]=t[3];break;
case 0x50:pe[4]=0x39;pe[5]=t[3]; break; os_anlay_data_all();return;sendtwo=0x97;sendthree=t[3]-1;break;
case 0x5b:pe[4]=0x37;pe[5]=t[3]; break; os_anlay_data_all();return;sendtwo=0xa0;sendthree=t[3]-1;;break;
default:
pe[4]=0;p=p-1;
for(i=0;i<6;i++)
t[i]=t[i+1];
return;
}
os_anlay_data_all();
p=t;
f_sendbytes();
}
/*8888888888888888888888888888888888888888888888888888888888888
8
8
8
8
8
8
88888888888888888888888888888888888888888888888888888888888888888888888
*/
void ultrak()
{
bit temp0=0,temp1=0,temp2=0;
bit pp0=0,pp1=0,pp2=0;
uchar data i=0;
sub_sendbyte=0;
ultrac_tell=0;
//goto test;
ACC=S0BUF;
temp2=P;
RI=0;
if(P!=RB8)//pary
return;
*p=ACC;
p++;
if(p>=t+6)
{
goto l1;
}
else
{
return;
}
/*
test:
for(i=0;i<6;i++)
t[i]=t[i+1];
t[5]=SBUF;
RI=0;
if(t[0]!=0)
return;
*/
l1: flag=t[0];
temp0=pary0^pary3^pary6;
flag=t[1];
temp0=temp0^pary1^pary4^pary7;
flag=t[2];
temp0=temp0^pary2^pary5;
flag=t[3];
temp0=temp0^pary0^pary3^pary6;
flag=t[4];
temp0=temp0^pary1^pary4^pary7;
flag=t[5];
temp0=temp0^pary2;
pp0=pary5;
pp1=pary6;
pp2=pary7;
if(temp0!=pp0)
{
goto l2;
}
flag=t[0];
temp0=pary1^pary4^pary7;
flag=t[1];
temp0=temp0^pary2^pary5;
flag=t[2];
temp0=temp0^pary0^pary3^pary6;
flag=t[3];
temp0=temp0^pary1^pary4^pary7;
flag=t[4];
temp0=temp0^pary2^pary5;
flag=t[5];
temp0=temp0^pary0^pary3;
if(temp0!=pp1)
{
goto l2;
}
flag=t[0];
temp0=pary2^pary5;
flag=t[1];
temp0=temp0^pary0^pary3^pary6;
flag=t[2];
temp0=temp0^pary1^pary4^pary7;
flag=t[3];
temp0=temp0^pary2^pary5;
flag=t[4];
temp0=temp0^pary0^pary3^pary6;
flag=t[5];
temp0=temp0^pary1^pary4;
if(temp0!=pp2)
{
goto l2;
}
if(hard_address!=1023)
if(hard_address!=0xff)
if((t[1]+1)!=hard_address)
{
goto l2;
return;
}
i=t[0];
i=i&0xf0;
switch(i)
{
case 0: //new;
case 0x10: //old
case 0x50: f_ultrakKKK();break;
case 0x80:
case 0xc0: video_swiitcher();break;
case 0xb0: smartscan_receiver();break;
default: goto l2; break;
}
return;
l2:
p=p-1;
// p=t;
for(i=0;i<6;i++)
t[i]=t[i+1];
return;
}
/*
8888888888888888888888888888888888888888888888888888888888
时间:2004-5-7 11:03
创建人:colorwolf
功能:实现对ultrak协议的功能分析,其间有新老协议,
修改时间:
888888888888888888888888888888888888888888888888888888888888*/
void f_ultrakKKK()
{
uchar xdata temp=0,i=0;
if(t[2]==0x80)
{
if(t[3]>0x80) //down
{
pe[4]=0x03;
pe[5]=t[2]%0X81;
goto retu;
}
if(t[3]<0x80) //up
{
pe[4]=0x04;
pe[5]=t[2]%0X81;
goto retu;
}
}
if(t[3]==0x80)
{
if(t[2]>0x80) //right
{
pe[4]=0x02;
pe[5]=t[2]-0x80;
goto retu;
}
if(t[2]<0x80) //left
{
pe[4]=0x01;
pe[5]=t[2];
goto retu;
}
}
if((t[2]!=0x80)&&(t[3]!=0x80))
{
if((t[2]<0x80)&&(t[3]<0x80))//left_up;
{
pe[4]=0x05;
pe[5]=t[2]%0X80;
pe[6]=t[3]%0X80;
goto retu;
}
if((t[2]<0x80)&&(t[3]>0x80))//left_down;
{
pe[4]=0x06;
pe[5]=t[2]%0X80;
pe[6]=t[3]%0X80;
goto retu;
}
if((t[2]>0x80)&&(t[3]<0x80))//righ_up;
{
pe[4]=0x07;
pe[5]=t[2]%0X80;
pe[6]=t[3]%0X80;
goto retu;
}
if((t[2]>0x80)&&(t[3]>0x80))//right_down;
{
pe[4]=0x08;
pe[5]=t[2]%0X80;
pe[6]=t[3]%0X80;
goto retu;
}
}
if(t[4]!=0x80)
{
if(t[4]>0x80) //tele
{
pe[4]=0x0e;
goto retu;
}
if(t[4]<0x80) //wide
{
pe[4]=0x0d;
goto retu;
}
}
temp=t[5];
temp=temp&0x06;
switch(temp)
{
case 0x02: pe[4]=0x0c; goto retu; //open;
case 0x04: pe[4]=0x0b; goto retu;//close;
default: break;
}
temp=t[5];
temp=temp&0x18;
switch(temp)
{
case 0x08: pe[4]=0x0a; goto retu; break; //near;
case 0x10: pe[4]=0x09; goto retu;break;//far;
default: break;
}
if((t[2]==0x80)&&(t[3]==0x80))
if((t[4]==0x80))
{
pe[4]=0; goto retu;
}
else
{
p=p-1;
for(i=0;i<6;i++)
t[i]=t[i+1];
return;
}
retu:
pe[5]=pe[5]+30;
pe[6]=pe[6]+25;
os_anlay_data_all();
p=t;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -