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

📄 kbv10work.c

📁 用单片机的i/o口模拟ps/2键盘的通信协议
💻 C
📖 第 1 页 / 共 5 页
字号:
																	   {
																	          for(i=0;i<48;i++)
																	            {
																			          if(trk_bit==tableChar[i])
																			              {
							                                                                   SendMakeToHostCount(0x12);
															                                   Delay_ms(TRK1DELAY_MS);
															                                   SendMakeToHostCount(tableScan[i]);
															                                   Delay_ms(TRK1DELAY_MS);
															                                   SendMakeToHostCount(0xf0);
															                                   Delay_ms(2);
															                                   SendMakeToHostCount(tableScan[i]);
															                                   Delay_ms(TRK1DELAY_MS);
															                                   SendMakeToHostCount(0xf0);
															                                   Delay_ms(2);
															                                   SendMakeToHostCount(0x12);
															                                   break;
																						  }
																					else if(trk_bit==tableChar1[i])
																					  	 {
																			  	               SendMakeToHostCount(tableScan[i]);
															                                   Delay_ms(TRK1DELAY_MS);
															                                   SendMakeToHostCount(0xf0);
															                                   Delay_ms(2);
															                                   SendMakeToHostCount(tableScan[i]);  
															                                   break;
																						  }
																		      }
																	  }
															}																								
												    if( (XBYTE[CONFIG_BASE+0x04]&0x03))     //send enter
											              {
														    SendMakeToHostCount(0x5A);
															Delay_ms(TRK1DELAY_MS);
														    SendMakeToHostCount(0xf0);
															Delay_ms(TRK1DELAY_MS);
														    SendMakeToHostCount(0x5A);
															Delay_ms(TRK1DELAY_MS);
											             }
											   }
									}   

					            }  
					    }
			
                                   
                           if((((SendTrkFlag==2)||(SendTrkFlag==3))&&(ii==0))||(((SendTrkFlag==0)||(SendTrkFlag==5))&&(ii==1))||(((SendTrkFlag==1)||(SendTrkFlag==4))&&(ii==2)))
                              {
 
							 if(trk2_send)
							{
								if(XBYTE[CONFIG_BASE+0x07])        //trk2 enable
					                       {
								       if(mag_trk2[0]==0x0b)       //0x0b//SEND TRK2 DATA
										{

										       if(XBYTE[CONFIG_BASE+0x07]&0X0C)
											    {
													if((XBYTE[CONFIG_BASE+0x08]==0x3b)||(XBYTE[CONFIG_BASE+0x08]==0xff))    //   asic   ;
												            {
															SendMakeToHostCount(0x4c);    //  scancode  ;
															Delay_ms(TRK1DELAY_MS);
															SendMakeToHostCount(0xf0);
															Delay_ms(3);
															SendMakeToHostCount(0x4c);											    
												             }
												         else  if(XBYTE[CONFIG_BASE+0x08]==0x00) 
												            {
												            }
												         else
												            {
												                 for(i=0;i<48;i++)
												                  {
												                      if(XBYTE[CONFIG_BASE+0X08]==tableChar[i])
												                           {
												                                   SendMakeToHostCount(0x12);
												                                   Delay_ms(TRK1DELAY_MS);
												                                   SendMakeToHostCount(tableScan[i]);
												                                   Delay_ms(TRK1DELAY_MS);
												                                    SendMakeToHostCount(0xf0);
												                                    Delay_ms(2);
												                                    SendMakeToHostCount(tableScan[i]);
												                                    Delay_ms(TRK1DELAY_MS);
												                                    SendMakeToHostCount(0xf0);
												                                    Delay_ms(2);
												                                    SendMakeToHostCount(0x12);
												                                    break ;  //break for
												                           }
												                       else if (XBYTE[CONFIG_BASE+0X08]==tableChar1[i])
												                          {
												                                   SendMakeToHostCount(tableScan[i]);
												                                   Delay_ms(TRK1DELAY_MS);
												                                   SendMakeToHostCount(0xf0);
												                                   Delay_ms(2);
												                                   SendMakeToHostCount(tableScan[i]);
												                                   break ; //break for
												                          }
												                  }
												            }
											    }
											for(j=1;j<40;j++)
								                     {
											    trk_bit=(mag_trk2[j]&0X0F)+0x30;   //ascii
											     if(trk_bit==0x3f)
											        {
												          if(XBYTE[CONFIG_BASE+0x07]&0x0c )    //send tail format_code
													     {
														     if ((XBYTE[CONFIG_BASE+0x09]==0x3f)||(XBYTE[CONFIG_BASE+0x09]==0xff))    //   asic ?
														            {
				           											      SendMakeToHostCount(0x12);
				           											      Delay_ms(TRK1DELAY_MS);
																	SendMakeToHostCount(0x4a);    //  scancode ?
																	Delay_ms(TRK1DELAY_MS);
																	SendMakeToHostCount(0xf0);
																	Delay_ms(3);
																	SendMakeToHostCount(0x4a);
																	Delay_ms(TRK1DELAY_MS);
																	SendMakeToHostCount(0xf0);
																	Delay_ms(3);
																	SendMakeToHostCount(0X12);
																	Delay_ms(TRK1DELAY_MS);	 
														             }
														         else  if(XBYTE[CONFIG_BASE+0x09]==0x00) 
														            {
														            }
														         else
														            {
														                       for(i=0;i<48;i++)
															                  {
															                      if(XBYTE[CONFIG_BASE+0X09]==tableChar[i])
															                           {
															                                   SendMakeToHostCount(0x12);
															                                   Delay_ms(TRK1DELAY_MS);
															                                   SendMakeToHostCount(tableScan[i]);
															                                   Delay_ms(TRK1DELAY_MS);
															                                    SendMakeToHostCount(0xf0);
															                                    Delay_ms(2);
															                                    SendMakeToHostCount(tableScan[i]);
															                                    Delay_ms(TRK1DELAY_MS);
															                                    SendMakeToHostCount(0xf0);
															                                    Delay_ms(2);
															                                    SendMakeToHostCount(0x12);
															                                    break ;  //break for
															                           }
															                       else if (XBYTE[CONFIG_BASE+0X09]==tableChar1[i])
															                          {
															                                   SendMakeToHostCount(tableScan[i]);
															                                   Delay_ms(TRK1DELAY_MS);
															                                   SendMakeToHostCount(0xf0);
															                                   Delay_ms(2);
															                                   SendMakeToHostCount(tableScan[i]);
															                                   break ; //break for
															                          }
															                  }
														            }
													     }
													     if(!error)
											                         break;  //break for()  
											        }
											     else  //trk_bit!=0x3f
											        {
											               for(i=0;i<48;i++)
											                  {
											                     if(trk_bit==tableChar[i])
											                         {
												                            SendMakeToHostCount(0x12);
											                                   Delay_ms(TRK1DELAY_MS);
											                                   SendMakeToHostCount(tableScan[i]);
											                                   Delay_ms(TRK1DELAY_MS);
											                                   SendMakeToHostCount(0xf0);
											                                   Delay_ms(2);
											                                   SendMakeToHostCount(tableScan[i]);
											                                   Delay_ms(TRK1DELAY_MS);
											                                   SendMakeToHostCount(0xf0);
											                                   Delay_ms(2);
											                                   SendMakeToHostCount(0x12);
											                                   break;
											                         }
											                     else if(trk_bit==tableChar1[i])
											                         {
												                           SendMakeToHostCount(tableScan[i]);
											                                   Delay_ms(TRK1DELAY_MS);
											                                   SendMakeToHostCount(0xf0);
											                                   Delay_ms(2);
											                                   SendMakeToHostCount(tableScan[i]);
											                                   break;
											                                   
											                         }
											                  }
											        } 
										
							        }
							         if( (XBYTE[CONFIG_BASE+0x07]&0x03))
								   {
									    SendMakeToHostCount(0x5A);
										Delay_ms(TRK1DELAY_MS);
									    SendMakeToHostCount(0xf0);
										Delay_ms(TRK1DELAY_MS);
									    SendMakeToHostCount(0x5A);
								   }
				              }
                                    }
                                 }
                              }
                     
                           if((((SendTrkFlag==4)||(SendTrkFlag==5))&&(ii==0))||(((SendTrkFlag==1)||(SendTrkFlag==3))&&(ii==1))||(((SendTrkFlag==0)||(SendTrkFlag==2))&&(ii==2)))
                              {
                                   if(trk3_send)
					   {
						    if(XBYTE[CONFIG_BASE+0x0A])        //TRK3 enable
							 {
								  if(mag_trk3[0]==0x0b)
									 {
                                                                        if(XBYTE[CONFIG_BASE+0x0A]&0X0C)
											 {
											       if ((XBYTE[CONFIG_BASE+0x0b]==0x3b)||(XBYTE[CONFIG_BASE+0x0b]==0xff))    //   asic ;
											            {
														SendMakeToHostCount(0x4c);    //  scancode ;
														Delay_ms(TRK1DELAY_MS);
														SendMakeToHostCount(0xf0);
														Delay_ms(3);
														SendMakeToHostCount(0x4c);											    
											             }
											         else  if(XBYTE[CONFIG_BASE+0x0b]==0x00) 
											            {
											            }
											         else
											            {
											                 for(i=0;i<48;i++)
											                  {
											                      if(XBYTE[CONFIG_BASE+0X0b]==tableChar[i])
											                           {
											                                   SendMakeToHostCount(0x12);
											                                   Delay_ms(TRK1DELAY_MS);
											                                   SendMakeToHostCount(tableScan[i]);
											                                   Delay_ms(TRK1DELAY_MS);
											                                    SendMakeToHostCount(0xf0);
											                                    Delay_ms(2);
											                                    SendMakeToHostCount(tableScan[i]);
											                                    Delay_ms(TRK1DELAY_MS);
											                                    SendMakeToHostCount(0xf0);
											                                    Delay_ms(2);
											                                    SendMakeToHostCount(0x12);
											                                            break ;  //break for
											                           }
											                       else if (XBYTE[CONFIG_BASE+0X0b]==tableChar1[i])
											                          {
											                                   SendMakeToHostCount(tableScan[i]);
											                                   Delay_ms(TRK1DELAY_MS);
											                                   SendMakeToHostCount(0xf0);
											                                   Delay_ms(2);
											                                   SendMakeToHostCount(tableScan[i]);
											                                         break ; //break for
											                          }
											                  }
											            }
											 }

									       for(j=1;j<107;j++)
							                       {

										    trk_bit=(mag_trk3[j]&0X0F)+0x30;
										  
										    if(trk_bit==0x3f)
										    {
											     if(XBYTE[CONFIG_BASE+0x0A]&0X0C)
											     {
												       if ((XBYTE[CONFIG_BASE+0x0c]==0x3f)||(XBYTE[CONFIG_BASE+0x0c]==0xff))    //   asic ?
												            {
		           											      SendMakeToHostCount(0x12);
		           											      Delay_ms(TRK1DELAY_MS);
															SendMakeToHostCount(0x4a);    //  scancode ?
															Delay_ms(TRK1DELAY_MS);
															SendMakeToHostCount(0xf0);
															Delay_ms(3);
															SendMakeToHostCount(0x4a);
															Delay_ms(TRK1DELAY_MS);
															SendMakeToHostCount(0xf0);
															Delay_ms(3);
															SendMakeToHostCount(0X12);
															Delay_ms(TRK1DELAY_MS);	   											    
												             }
												         else  if(XBYTE[CONFIG_BASE+0x0c]==0x00) 
												            {
												            }
												         else
												            {
												                 for(i=0;i<48;i++)
												                  {
												                      if(XBYTE[CONFIG_BASE+0X0c]==tableChar[i])
												                           {
												                                   SendMakeToHostCount(0x12);
												                                   Delay_ms(TRK1DELAY_MS);
												                                   SendMakeToHostCount(tableScan[i]);
												                                   Delay_ms(TRK1DELAY_MS);
												                                    SendMakeToHostCount(0xf0);
												                                    Delay_ms(2);
												                                    SendMakeToHostCount(tableScan[i]);
												                                    Delay_ms(TRK1DELAY_MS);
												                                    SendMakeToHostCount(0xf0);
												                                    Delay_ms(2);
												                                    SendMakeToHostCount(0x12);
												                                    break ;  //break for
												                           }
												                       else if (XBYTE[CONFIG_BASE+0X0c]==tableChar1[i])
												                          {
												                                   SendMakeToHostCount(tableScan[i]);
												                                   Delay_ms(TRK1DELAY_MS);
												                                   SendMakeToHostCount(0xf0);
												                                   Delay_ms(2);
												                                   SendMakeToHostCount(tableScan[i]);
												                                   break ; //break for
												                          }
												                  }
												            }

											     }
											      if(!error)
										                    break;      //break for()
										     }
										    else
										    {
                                                                                             for(i=0;i<48;i++)
											                  {
												                     if(trk_bit==tableChar[i])
												                         {
													                            SendMakeToHostCount(0x12);
												                                   Delay_ms(TRK1DELAY_MS);
												                                   SendMakeToHostCount(tableScan[i]);
												                                   Delay_ms(TRK1DELAY_MS);
												                                   SendMakeToHostCount(0xf0);
												                                   Delay_ms(2);
												                                   SendMakeToHostCount(tableScan[i]);
												                                   Delay_ms(TRK1DELAY_MS);
												                                   SendMakeToHostCount(0xf0);
												                                   Delay_ms(2);
												                                   SendMakeToHostCount(0x12);
												                                   break;
												                         }
												                     else if(trk_bit==tableChar1[i])
												                         {
													                           SendMakeToHostCount(tableScan[i]);
												                                   Delay_ms(TRK1DELAY_MS);
												                                   SendMakeToHostCount(0xf0);
												                                   Delay_ms(2);
												                                   SendMakeToHostCount(tableScan[i]);
												                                   break;
												                                   
												                         }
											                  }									     	           
										     }
									 }// end for(j=0;j<108..)

								  if( (XBYTE[CONFIG_BASE+0x0A]&0x03))
								   {
									    SendMakeToHostCount(0x5A);
										Delay_ms(TRK1DELAY_MS);
									    SendMakeToHostCount(0xf0);
										Delay_ms(TRK1DELAY_MS);
									    SendMakeToHostCount(0x5A);
								   }
								
						            } //end if(mag_trk3[0]==0X0B)
				                   } //end if(!XBYTE[CONFIG_BASE+0x0A]
				          }
                              }
                                 if(ii<2)
                                   {
	                                 	 ddd=0;
				               while ( XBYTE[0X7000+13+20+ddd]!=0xff)     //send enter
					              {
								    SendMakeToHostCount(XBYTE[0X7000+13+20+ddd]);
									Delay_ms(TRK1DELAY_MS);
								    SendMakeToHostCount(0xf0);
									Delay_ms(TRK1DELAY_MS);
								   SendMakeToHostCount(XBYTE[0X7000+13+20+ddd]);
									Delay_ms(TRK1DELAY_MS);
									ddd++;
					             }
				          }
                     }
              
			ddd=0;
			while(XBYTE[0x7000+13+40+ddd]!=0xff)
			   {
			       SendMakeToHostCount(XBYTE[0x7000+13+40+ddd]);
			       ddd++;
			   }
			 
 		 if(CheckCard_Flag)
                 {
                   if(!error)
                      {
	                    SendMakeToHostCount(CHECKACK);
			      SendMakeToHostCount(CHECKACK1);
			      SendMakeToHostCount(CARDMARK);
			      IE0=0;
			      EX0=1;
			      IT0=1;
	                   BJP_CLK=1;
                      }
                    else
                      {
                           SendMakeToHostCount(CHECKACK);
			      Send

⌨️ 快捷键说明

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