⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mkrw.c

📁 显示及鼠标、键盘切换程序。使用STC单片机
💻 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 + -