📄 mkrw.c
字号:
#include <STC12C5410AD.H>
#include <DATA.H>
#include <CODE.H>
extern state_cutab( INT8U a_b );
/*************************************
向鼠标发送数据程序
*************************************/
unsigned char zcrmtime,zcrktime;
unsigned char zyc_te_num;
void cmwrite_data( void )
{
BOOL lbit;
/*if( cutime > 220 )
{
if( cmwoption != 100 )
{
cutime = 0;
cmclk = 1;
cmdata = 1;
cmwcodenum --;
cmwoption = 0;
}
}*/
switch( cmwoption )
{
case 0:
{
cmclk = 0;
cutime = 0;
cmwoption = 1;
break;
}
case 1:
{
if( cutime >= Han_us )
{
cutime = 0;
cmdata = 0;
cmwoption = 2;
}
break;
}
case 2:
{
if( cutime >= Fin_us )
{
cutime = 0;
cmclk = 1;
cmwoption = 3;
}
break;
}
case 3:
{
cutime = 0;
cmclk = 1;
cmwoption = 4;
cmwnum = 8;
cmwcheckbit = 1;
cmwcode = cmwcodedata[ 0 ];
break;
}
case 4:
{
if( cmclk == 0 )
{
lbit = cmwcode & 0x01;
cmdata = lbit;
cmwcheckbit ^= lbit;
cmwcode /= 2;
cmwoption = 5;
cutime = 0;
}
break;
}
case 5:
{
if( cmclk == 1 )
{
cmwnum--;
if(cmwnum == 0)
{
cmwoption = 6;
}
else
{
cmwoption = 4;
}
cutime = 0;
}
break;
}
case 6:
{
if( cmclk == 0 )
{
cmdata = cmwcheckbit;
cmwoption = 12;
cutime = 0;
}
break;
}
case 12:
{
if( cmclk == 1 )
{
cmwoption = 7;
cutime = 0;
}
break;
}
case 7:
{
if( cmclk == 0 )
{
cmdata = 1;
cmwoption = 8;
cutime = 0;
}
break;
}
case 8:
{
if( cmclk == 0 && cmdata == 0 )
{
cmwoption = 9;
cutime = 0;
}
break;
}
case 9:
{
if( cmclk == 1 && cmdata == 1 )
{
cmwoption = 10;
cutime = 0;
}
break;
}
case 10:
{
if( cutime >= Fie_us )
{
cmwoption = 11;
cutime = 0;
}
break;
}
case 11:
{
cmroption = 0;
cmwcodenum --;
if(cmwcodenum == 0 || cmwcodenum == 255)
{
cmwoption = 0;
cmwcodenum = 0;
cutime = 0;
}
else
{
cmclk = 0;
cutime = 13;
cmwoption = 1;
}
break;
}
}
}
/*************************************
从鼠标读取数据程序
*************************************/
void cmread_data( void )
{
/*if( zcrmtime > 250 )
{
cmroption = 0;
zcrmtime = 0;
cmdata = 1;
cmclk = 0;
cmroption = 8;
}*/
switch( cmroption )
{
case 8:
{
if( zcrmtime >= 12 )
{
cmclk = 1;
cmroption = 0;
zcrmtime = 0;
}
break;
}
case 9:
{
if( zcrmtime >= 210 )
{
cmroption = 11;
zcrmtime = 0;
cmclk = 0;
}
break;
}
case 11:
{
if( zcrmtime >= 210 )
{
cmroption = 12;
zcrmtime = 0;
cmclk = 0;
}
break;
}
case 12:
{
if( zcrmtime >= 210 )
{
cmroption = 10;
zcrmtime = 0;
cmclk = 0;
}
break;
}
case 10:
{
if( zcrmtime >= 210 )
{
cmclk = 1;
cmroption = 0;
zcrmtime = 0;
}
break;
}
case 0:
{
if(cmclk == 0 && cmdata == 0)
{
cmroption = 1;
zcrmtime = 0;
}
else if( ms_pluse == 1 )
{
if( zcrmtime > 30 )
{
if( ms_pluse == 1 && zcrmtime > 6 )
{
if( state == STATE_A )
{
switch( cmrcodenum )
{
case 1:
{
mcodenum = 1;
break;
}
case 2:
{
mcodenum = mcode[1];
mcode[1] = mcode[0];
mcode[0] = mcodenum;
mcodenum = 2;
break;
}
case 3:
{
mcodenum = mcode[0];
mcode[0] = mcode[2];
mcode[2] = mcodenum;
mcodenum = 3;
break;
}
case 4:
{
mcodenum = mcode[0];
mcode[0] = mcode[3];
mcode[3] = mcodenum;
mcodenum = mcode[1];
mcode[1] = mcode[2];
mcode[2] = mcodenum;
mcodenum = 4;
break;
}
default:
{
mcodenum = 0;
break;
}
}
}
else
{
switch( cmrcodenum )
{
case 1:
{
mcodenum1 = 1;
break;
}
case 2:
{
mcodenum1 = mcode1[1];
mcode1[1] = mcode1[0];
mcode1[0] = mcodenum1;
mcodenum1 = 2;
break;
}
case 3:
{
mcodenum1 = mcode1[0];
mcode1[0] = mcode1[2];
mcode1[2] = mcodenum1;
mcodenum1 = 3;
break;
}
case 4:
{
mcodenum1 = mcode1[0];
mcode1[0] = mcode1[3];
mcode1[3] = mcodenum1;
mcodenum1 = mcode1[1];
mcode1[1] = mcode1[2];
mcode1[2] = mcodenum1;
mcodenum1 = 4;
break;
}
default:
{
mcodenum1 = 0;
break;
}
}
}
cmrcodenum = 0;
zcrmtime = 0;
cmclk = 0;
cmroption = 9;
ms_pluse = 0;
}
}
}
break;
}
case 1:
{
if( cmclk == 1 )
{
cmroption = 2;
cmrcv = 0x01;
cmrcode = 0;
cmrcheckbit = 1;
zcrmtime = 0;
}
break;
}
case 2:
{
if( cmclk == 0 )
{
cmroption = 3;
if( cmdata == 1 )
{
cmrcode |= cmrcv;
cmrcheckbit = !cmrcheckbit;
}
cmrcv *= 2;
zcrmtime = 0;
}
break;
}
case 3:
{
if( cmclk == 1 )
{
if( cmrcv == 0 )
{
cmroption = 4;
}
else
{
cmroption = 2;
}
zcrmtime = 0;
}
break;
}
case 4:
{
if( cmclk == 0 )
{
zcrmtime = 0;
if( cmrcheckbit == cmdata )
{
/*if( mcodenum == 0 && state == STATE_A)
{
mcode[0] = cmrcode;
mcodenum = 1;
}
else if( mcodenum1 == 0 && state == STATE_B )
{
mcode1[0] = cmrcode;
mcodenum1 = 1;
}
else
{
cmrcodenum = 1;
cmrcodedata[0] = cmrcode;
}*/
if( state == STATE_A)
{
mcode[cmrcodenum] = cmrcode;
if( cmrcodenum <= 3 )
{
cmrcodenum ++;
}
else
{
cmrcodenum = 0;
}
}
else if( state == STATE_B )
{
mcode1[cmrcodenum] = cmrcode;
if( cmrcodenum <= 3 )
{
cmrcodenum ++;
}
else
{
cmrcodenum = 0;
}
}
}
ms_pluse = 1;
cmroption = 5;
}
break;
}
case 5:
{
if( cmclk == 1 )
{
cmroption = 6;
zcrmtime = 0;
}
break;
}
case 6:
{
if( cmclk == 0 && cmdata == 1 )
{
cmroption = 7;
zcrmtime = 0;
}
break;
}
case 7:
{
if( cmclk == 1 && cmdata == 1 )
{
cmroption = 0;
zcrmtime = 0;
cmclk = 1;
}
break;
}
}
}
/*************************************
向键盘发送数据程序
*************************************/
void ckwrite_data( void )
{
BOOL lbit;
/*if( cuktime > 220 )
{
if( ckwoption != 100 )
{
cuktime = 0;
ckclk = 1;
ckdata = 1;
ckwcodenum --;
ckwoption = 0;
}
}*/
switch( ckwoption )
{
case 0:
{
ckclk = 0;
cuktime = 0;
ckwoption = 1;
break;
}
case 1:
{
if( cuktime >= Han_us )
{
cuktime = 0;
ckdata = 0;
ckwoption = 2;
}
break;
}
case 2:
{
if( cuktime >= Fin_us )
{
cuktime = 0;
ckclk = 1;
ckwoption = 3;
}
break;
}
case 3:
{
cuktime = 0;
ckclk = 1;
ckwoption = 4;
ckwnum = 8;
ckwcheckbit = 1;
ckwcode = ckwcodedata[ 0 ];
break;
}
case 4:
{
if( ckclk == 0 )
{
lbit = ckwcode & 0x01;
ckdata = lbit;
ckwcheckbit ^= lbit;
ckwcode /= 2;
ckwoption = 5;
cuktime = 0;
}
break;
}
case 5:
{
if( ckclk == 1 )
{
ckwnum--;
if(ckwnum == 0)
{
ckwoption = 6;
}
else
{
ckwoption = 4;
}
cuktime = 0;
}
break;
}
case 6:
{
if( ckclk == 0 )
{
ckdata = ckwcheckbit;
ckwoption = 12;
cuktime = 0;
}
break;
}
case 12:
{
if( ckclk == 1 )
{
ckwoption = 7;
cuktime = 0;
}
break;
}
case 7:
{
if( ckclk == 0 )
{
ckdata = 1;
ckwoption = 8;
cuktime = 0;
}
break;
}
case 8:
{
if( ckclk == 0 && ckdata == 0 )
{
ckwoption = 9;
cuktime = 0;
}
break;
}
case 9:
{
if( ckclk == 1 && ckdata == 1 )
{
ckwoption = 10;
cuktime = 0;
}
break;
}
case 10:
{
if( cuktime >= Fie_us )
{
ckwoption = 11;
cuktime = 0;
}
break;
}
case 11:
{
ckroption = 0;
ckwcodenum --;
if(ckwcodenum == 0 || ckwcodenum == 255)
{
ckwoption = 0;
ckwcodenum = 0;
cuktime = 0;
}
else
{
ckclk = 0;
cuktime = 13;
ckwoption = 1;
}
break;
}
}
}
/*************************************
从键盘读取数据程序
*************************************/
void ckread_data( void )
{
/*
if( zcrktime > 250 )
{
ckroption = 0;
zcrktime = 0;
ckdata = 1;
ckclk = 0;
ckroption = 8;
}*/
switch( ckroption )
{
case 8:
{
if( zcrktime > 12 )
{
ckclk = 1;
ckroption = 0;
zcrktime = 0;
}
break;
}
case 0:
{
if(ckclk == 0 && ckdata == 0)
{
ckroption = 1;
zcrktime = 0;
}
break;
}
case 1:
{
if( ckclk == 1 )
{
ckroption = 2;
ckrcv = 0x01;
ckrcode = 0;
ckrcheckbit = 1;
zcrktime = 0;
}
break;
}
case 2:
{
if( ckclk == 0 )
{
ckroption = 3;
if( ckdata == 1 )
{
ckrcode |= ckrcv;
ckrcheckbit = !ckrcheckbit;
}
ckrcv *= 2;
zcrktime = 0;
}
break;
}
case 3:
{
if( ckclk == 1 )
{
if( ckrcv == 0 )
{
ckroption = 4;
}
else
{
ckroption = 2;
}
zcrktime = 0;
}
break;
}
case 4:
{
if( ckclk == 0 )
{
zcrktime = 0;
if( ckrcheckbit == ckdata )
{
if( kcodenum == 0 && state == STATE_A)
{
kcode[0] = ckrcode;
kcodenum = 1;
}
else if( kcodenum1 == 0 && state == STATE_B)
{
kcode1[0] = ckrcode;
kcodenum1 = 1;
}
else
{
ckrcodenum = 1;
ckrcodedata[0] = ckrcode;
}
ks_pluse = 1;
if( ckrcode == 0x14)
{
if( kcutcode != 1 && kcutcode != 4 )
{
kcutcode ++;
}
else
{
kcutcode = 0;
}
if( kcutcode == 1 )
{
send_aa00_time = 0;
}
}
else if( ckrcode == 0xf0 )
{
kcutcode ++;
}
else
{
kcutcode = 0;
}
if( kcutcode >= 6 )
{
if( ctl_cs == 1 )
{
state_cutab( !state );
send_aa00_time = 0;
kcutcode = 0;
vi = 1;
}
else
{
ctl_ou = 0;
cut_p_time = 0;
}
}
}
ckroption = 5;
}
break;
}
case 5:
{
if( ckclk == 1 )
{
ckroption = 6;
zcrktime = 0;
}
break;
}
case 6:
{
if( ckclk == 0 && ckdata == 1 )
{
ckroption = 7;
zcrktime = 0;
}
break;
}
case 7:
{
if( ckclk == 1 && ckdata == 1 )
{
ckroption = 0;
zcrktime = 0;
ckclk = 1;
}
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -