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

📄 main.c

📁 嵌入式键盘
💻 C
📖 第 1 页 / 共 2 页
字号:
                      {
                        makecode=_4_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xfd://9
		             if(pointer<BUFFNUM)
		              {
                        makecode=_9_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
                   break;
                   case 0xfb://du
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_d_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xf7://ad----f1
		             if(pointer<BUFFNUM)
		              {
                        makecode=_f1_PS2;
                        MS[pointer]=makecode;
                        pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xef://fd-----f6
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_f6_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xdf://iu
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_i_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xbf://f3-----backspace
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_bsp_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0x7f://f8----:-
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_jian_PS2;
                        MS[pointer]=makecode;
                        pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
	             }
	         }
			else if(DatTemp2==0xfb)//d 
			 {
			    SomeKeyKeepFlag=1;
			 }
   	      break;
          case 0x2f://P1.4=0
		     if(!SomeKeyEnableFlag)
		      {
                SomeKeyEnableFlag=1;
                switch(DatTemp2)
                 {
                   case 0xfe://5
		             if(pointer<BUFFNUM)
                      {
                        makecode=_5_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xfd://0
		             if(pointer<BUFFNUM)
		              {
                        makecode=_0_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
                   break;
                   case 0xfb://eu
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_e_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xf7://bd-----f2
		             if(pointer<BUFFNUM)
		              {
                        makecode=_f2_PS2;
                        MS[pointer]=makecode;
                        pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xef://gd-------f7
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_f7_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xdf://id------f9
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_f9_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xbf://f4-----o
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_o_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0x7f://#1------y
	                 if(pointer<BUFFNUM)
		              {
					    LED2=!LED2;
                        makecode=_y_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }

	               break;
	             }
	         }
			else if(DatTemp2==0xfb)//e
			 {
			    SomeKeyKeepFlag=1;
			 }
	      break;
         case 0x1f://P1.5=0
		     if(!SomeKeyEnableFlag)
		      {
                SomeKeyEnableFlag=1;
                switch(DatTemp2)
                 {
                   case 0xfe://tab
		             if(pointer<BUFFNUM)
                      {
                        makecode=_tab_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xfd://a/b
		             if(pointer<BUFFNUM)
		              {
                        makecode=_ab_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
                   break;
                   case 0xfb://main
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_esc_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xf7://down
		             if(pointer<BUFFNUM)
		              {
                        MS[pointer]=0xe0;
                        pointer++;
                        makecode=_down_PS2;
                        MS[pointer]=makecode;
                        pointer++;
						TwoMcodeFlag=1;
		              }
	               break;
                   case 0xef://up
	                 if(pointer<BUFFNUM)
		              {
                        MS[pointer]=0xe0;
                        pointer++;
                        makecode=_up_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=1;
		              }
	               break;
                   case 0xdf://hand
	                 if(pointer<BUFFNUM)
		              {
 					    LED4=!LED4;
                        makecode=_hand_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xbf://fappy
	                 if(pointer<BUFFNUM)
		              {
					    LED1=!LED1;
                        makecode=_fap_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0x7f://#2-----n
	                 if(pointer<BUFFNUM)
		              {
					    LED3=!LED3;
                        makecode=_n_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
	             }
	         }
	      break;
          case 0x3f://键盘松开
            SomeKeyEnableFlag=0;
			if(makecode!=0)
			 {
	 	       if(TwoMcodeFlag)
		         {//双键码
                    MS[pointer++]=0xe0;
                    MS[pointer++]=0xf0;
                    MS[pointer++]=makecode;
		         }
		       else
		         {//单键码
                    MS[pointer++]=0xf0;
                    MS[pointer++]=makecode;
		         }
			 }
	      break;
          default://多个键盘按下
            if(SomeKeyEnableFlag)//
             {
               SomeKeyKeepFlag=0;
			   SomeKeyKeepTime=0;
               SomeKeyEnableFlag=0;
             }
          break;
        }
       ReadKeyOnceFlag=0;
     }

//===============长时间按键处理
/*
   if(SomeKeyKeepTime>=KEYKEEPTIME)
	{
	  if(pointer<BUFFNUM)
	   {
         SomeKeyKeepTime=0;
         MS[pointer]=makecode;
	     pointer++;
	   }

	}
*/
//===============键盘值发送,缓冲区重整理

   if(MS[0]!=0)
     {
      if(!SendByte(MS[0]))
	    {
           for(i=0;i<BUFFNUM;i++)
			   MS[i]=MS[i+1];
           MS[BUFFNUM]=0;
		}
	 }
//==============指针指向第一个空缓冲区
  pointer=0;   
  while((MS[pointer]!=0)&&(pointer<BUFFNUM))
        pointer++;
//===============
 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();      
    }//for end
}//main end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -