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

📄 keyscan.cpp

📁 湖北水文黄石试点集中器代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	       	   case 0x0118:  //printf("+");
	           	    keyvalue=0x0118;
	           	    break;

	       	   case 0x0119:  //printf("-");
	           	    keyvalue=0x0119;
	           	    break;

	       	   case 0x011a:  //printf("->");
	           	    keyvalue=0x011a;
	           	    break;

	       	   case 0x011b:  //printf("<-");
	           	    keyvalue=0x011b;
	           	    break;

	           case 0x0b30:  //printf( "0" ); 
	           	    MulKeyFlg=0;
	           	    keyvalue=0x0b30;	           	
	           	    break;
	           	    	           	    	           	    
	           case 0x0231:  //printf( "1" ); 
	           	    MulKeyFlg=0;
	           	    keyvalue=0x0231;	           	
	           	    break;
	           	
	           case 0x0332: // printf( "2" );	  
	           	    if(Key2ScanTmrCnt<80)
	           	    {  
	           	    	 Key2ScanTmrCnt=0;
	           	    	 Key2TimesCnt++;
	           	    }
	           	    else
	           	    {  
	           	    	 Key2ScanTmrCnt=0;
	           	    	 Key2TimesCnt=1;
	           	    }
	           	    	
	           	    switch(Key2TimesCnt)
	           	    {
	           	    	 case 1: MulKeyFlg=0; keyvalue=0x0332; break;  //key:'2'
	           	    	 case 2: MulKeyFlg=1; keyvalue=0x0341; break; //key:'A'
	           	    	 case 3: MulKeyFlg=1; keyvalue=0x0342; break; //key:'B'
	           	    	 case 4: MulKeyFlg=1; keyvalue=0x0343; break; //key:'C'
	           	    	 default: MulKeyFlg=1; keyvalue=0x0332; Key2TimesCnt=1; break; //key:'2'
	           	    }	 		        	           	       	    	 
	           	    break;	
	           	               	         
	           case 0x0433:  //printf( "3" );
	           	    if(Key3ScanTmrCnt<80)
	           	    {  
	           	    	 Key3ScanTmrCnt=0;
	           	    	 Key3TimesCnt++;
	           	    }
	           	    else
	           	    {  
	           	    	 Key3ScanTmrCnt=0;
	           	    	 Key3TimesCnt=1;
	           	    }
	           	    	
	           	    switch(Key3TimesCnt)
	           	    {
	           	    	 case 1: MulKeyFlg=0; keyvalue=0x0433; break;  //key:'3'
	           	    	 case 2: MulKeyFlg=1; keyvalue=0x0444; break; //key:'D'
	           	    	 case 3: MulKeyFlg=1; keyvalue=0x0445; break; //key:'E'
	           	    	 case 4: MulKeyFlg=1; keyvalue=0x0446; break; //key:'F'
	           	    	 default: MulKeyFlg=1; keyvalue=0x0433; Key3TimesCnt=1; break; //key:'3'
	           	    }	 		        	           	       	    	 
	           	    break;	           	    
	           	    
	           case 0x0534:  //printf( "4" ); break;  
	           	    if(Key4ScanTmrCnt<80)
	           	    {  
	           	    	 Key4ScanTmrCnt=0;
	           	    	 Key4TimesCnt++;
	           	    }
	           	    else
	           	    {  
	           	    	 Key4ScanTmrCnt=0;
	           	    	 Key4TimesCnt=1;
	           	    }
	           	    	
	           	    switch(Key4TimesCnt)
	           	    {
	           	    	 case 1: MulKeyFlg=0; keyvalue=0x0534; break;  //key:'3'
	           	    	 case 2: MulKeyFlg=1; keyvalue=0x0547; break; //key:'G'
	           	    	 case 3: MulKeyFlg=1; keyvalue=0x0548; break; //key:'H'
	           	    	 case 4: MulKeyFlg=1; keyvalue=0x0549; break; //key:'I'
	           	    	 default: MulKeyFlg=1; keyvalue=0x0534; Key4TimesCnt=1; break; //key:'4'
	           	    }	 		        	           	       	    	 
	           	    break;	         
	           	      	         		           	
	           case 0x0635:  //printf( "5" ); break;
	           	    if(Key5ScanTmrCnt<80)
	           	    {  
	           	    	 Key5ScanTmrCnt=0;
	           	    	 Key5TimesCnt++;
	           	    }
	           	    else
	           	    {  
	           	    	 Key5ScanTmrCnt=0;
	           	    	 Key5TimesCnt=1;
	           	    }
	           	    	
	           	    switch(Key5TimesCnt)
	           	    {
	           	    	 case 1: MulKeyFlg=0; keyvalue=0x0635; break;  //key:'5'
	           	    	 case 2: MulKeyFlg=1; keyvalue=0x064A; break; //key:'J'
	           	    	 case 3: MulKeyFlg=1; keyvalue=0x064B; break; //key:'K'
	           	    	 case 4: MulKeyFlg=1; keyvalue=0x064C; break; //key:'L'
	           	    	 default: MulKeyFlg=1; keyvalue=0x0635; Key5TimesCnt=1; break; //key:'5'
	           	    }	 		        	           	       	    	 
	           	    break;	
	           	    	           	
	           case 0x0736:  //printf( "6" ); break;
	           	    if(Key6ScanTmrCnt<80)
	           	    {  
	           	    	 Key6ScanTmrCnt=0;
	           	    	 Key6TimesCnt++;
	           	    }
	           	    else
	           	    {  
	           	    	 Key6ScanTmrCnt=0;
	           	    	 Key6TimesCnt=1;
	           	    }
	           	    	
	           	    switch(Key6TimesCnt)
	           	    {
	           	    	 case 1: MulKeyFlg=0; keyvalue=0x0736; break;  //key:'6'
	           	    	 case 2: MulKeyFlg=1; keyvalue=0x074D; break; //key:'M'
	           	    	 case 3: MulKeyFlg=1; keyvalue=0x074E; break; //key:'N'
	           	    	 case 4: MulKeyFlg=1; keyvalue=0x074F; break; //key:'O'
	           	    	 default: MulKeyFlg=1; keyvalue=0x0736; Key6TimesCnt=1; break; //key:'6'
	           	    }	 		        	           	       	    	 
	           	    break;
	           	
	           case 0x0837:  //printf( "7" ); break;	   
	           	    if(Key7ScanTmrCnt<80)
	           	    {  
	           	    	 Key7ScanTmrCnt=0;
	           	    	 Key7TimesCnt++;
	           	    }
	           	    else
	           	    {  
	           	    	 Key7ScanTmrCnt=0;
	           	    	 Key7TimesCnt=1;
	           	    }
	           	    	
	           	    switch(Key7TimesCnt)
	           	    {
	           	    	 case 1: MulKeyFlg=0; keyvalue=0x0837; break;  //key:'7'
	           	    	 case 2: MulKeyFlg=1; keyvalue=0x0850; break; //key:'P'
	           	    	 case 3: MulKeyFlg=1; keyvalue=0x0851; break; //key:'Q'
	           	    	 case 4: MulKeyFlg=1; keyvalue=0x0852; break; //key:'R'
	           	    	 case 5: MulKeyFlg=1; keyvalue=0x0853; break; //key:'S'	           	    	 	
	           	    	 default: MulKeyFlg=1; keyvalue=0x0837; Key7TimesCnt=1; break; //key:'7'
	           	    }	 		        	           	       	    	 
	           	    break;
	           	    	           	        	
	           case 0x0938:  //printf( "8" ); break;
	           	    if(Key8ScanTmrCnt<80)
	           	    {  
	           	    	 Key8ScanTmrCnt=0;
	           	    	 Key8TimesCnt++;
	           	    }
	           	    else
	           	    {  
	           	    	 Key8ScanTmrCnt=0;
	           	    	 Key8TimesCnt=1;
	           	    }
	           	    	
	           	    switch(Key8TimesCnt)
	           	    {
	           	    	 case 1: MulKeyFlg=0; keyvalue=0x0938; break;  //key:'8'
	           	    	 case 2: MulKeyFlg=1; keyvalue=0x0954; break; //key:'T'
	           	    	 case 3: MulKeyFlg=1; keyvalue=0x0955; break; //key:'U'
	           	    	 case 4: MulKeyFlg=1; keyvalue=0x0956; break; //key:'V'           	    	 	
	           	    	 default: MulKeyFlg=1; keyvalue=0x0938; Key8TimesCnt=1; break; //key:'8'
	           	    }	 		        	           	       	    	 
	           	    break;	           	
	           	
	           case 0x0a39:  //printf( "9" ); break;
	           	    if(Key9ScanTmrCnt<80)
	           	    {  
	           	    	 Key9ScanTmrCnt=0;
	           	    	 Key9TimesCnt++;
	           	    }
	           	    else
	           	    {  
	           	    	 Key9ScanTmrCnt=0;
	           	    	 Key9TimesCnt=1;
	           	    }
	           	    	
	           	    switch(Key9TimesCnt)
	           	    {
	           	    	 case 1: MulKeyFlg=0; keyvalue=0x0a39; break;  //key:'9'
	           	    	 case 2: MulKeyFlg=1; keyvalue=0x0a57; break; //key:'W'
	           	    	 case 3: MulKeyFlg=1; keyvalue=0x0a58; break; //key:'X'
	           	    	 case 4: MulKeyFlg=1; keyvalue=0x0a59; break; //key:'Y'
	           	    	 case 5: MulKeyFlg=1; keyvalue=0x0a5a; break; //key:'Z'	           	    	 	
	           	    	 default: MulKeyFlg=1; keyvalue=0x0a39; Key9TimesCnt=1; break; //key:'9'
	           	    }	 		        	           	       	    	 
	           	    break;
             
             case 0x0b23:  //printf("#"); break;
	           	    if(KeyWellSymbolScanTmrCnt<80)
	           	    {  
	           	    	 KeyWellSymbolScanTmrCnt=0;
	           	    	 KeyWellSymbolTimesCnt++;
	           	    }
	           	    else
	           	    {  
	           	    	 KeyWellSymbolScanTmrCnt=0;
	           	    	 KeyWellSymbolTimesCnt=1;
	           	    }
	           	    	
	           	    switch(KeyWellSymbolTimesCnt)
	           	    {
	           	    	 case 1: MulKeyFlg=0; keyvalue=0x0b23; break;  //key:'#'
	           	    	 case 2: MulKeyFlg=1; keyvalue=0x0b20; break; //key:' '          	    	 	
	           	    	 default: MulKeyFlg=1; keyvalue=0x0b23; KeyWellSymbolTimesCnt=1; break;  //key:'#'
	           	    }	 		        	           	       	    	 
	           	    break;
             	    
             	    
	           case 0x0c2a:  //printf("*"); break;
	           	    if(KeyStarSymbolScanTmrCnt<80)
	           	    {  
	           	    	 KeyStarSymbolScanTmrCnt=0;
	           	    	 KeyStarSymbolTimesCnt++;
	           	    }
	           	    else
	           	    {  
	           	    	 KeyStarSymbolScanTmrCnt=0;
	           	    	 KeyStarSymbolTimesCnt=1;
	           	    }
	           	    	
	           	    switch(KeyStarSymbolTimesCnt)
	           	    {
	           	    	 case 1: MulKeyFlg=0; keyvalue=0x0c2a; break;  //key:'*'
	           	    	 case 2: MulKeyFlg=1; keyvalue=0x0c2e; break; //key:'.'          	    	 	
	           	    	 default: MulKeyFlg=1; keyvalue=0x0c2a; KeyStarSymbolTimesCnt=1; break;  //key:'*'
	           	    }	 		        	           	       	    	 
	           	    break;
	           	    	           	
	       }
	  }  
	  
	  //CursorBlink( );  //光标闪烁函数
	  
	  return keyvalue; 	  
   
}

//Cursor:=0,点亮;=1, 熄灭;
/*int Cursor=0;
void CursorBlink( )
{  
	 int i;
	 
	 i = Cursor;
	 if(CursorTmrCnt>50)
	 {  
	 	  switch(i)
	 	  {
	 	  	 case 0:
	 	          printf("_\b");
	 	          CursorTmrCnt=0;
	 	          Cursor=1;
	 	          break;

	 	  	 case 1:
	 	          printf(" ");
	 	          printf("\b");
	 	          CursorTmrCnt=0;
	 	          Cursor=0;
	 	          break;	 	     
	 	  }  
	 	          
	 }
}*/
	 	  
int LoadBuffer( unsigned int ScanWord )
{
   unsigned Temp;
   unsigned far* BufferItem;
   unsigned ReturnValue = 0;
   struct BIOSRAM* LowRam;

   LowRam = (struct BIOSRAM*)(0x00400000l);

   // If a serial port may also be the console input device, then
   // disable interrupts during buffer load time
   disable();

   /* increment the temporary tail pointer */
   Temp = LowRam->KbBufferTail; Temp += 2;
   /* check for wrap-around and reset to start if needed */
   if (Temp == LowRam->KbBufferEnd) Temp = LowRam->KbBufferStart;
   /* if overwrite will not happen, then store the scan word */
   if (Temp != LowRam->KbBufferHead)
     {
     *(BufferItem = (unsigned int*)MK_FP(0x40,LowRam->KbBufferTail)) = ScanWord;

     /* now update the tail */
     LowRam->KbBufferTail = Temp;
     ReturnValue = 1;
     }

   // If a serial port was also enabled for the console input device,
   // we had previously disabled interrupts during buffer load time
   enable();
   return ReturnValue;
}

⌨️ 快捷键说明

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