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

📄 duxiexitongrc500.c

📁 #include <stc12c2052AD.H>// 标准库的头文件 #include <intrins.h> #include <absacc.h> #d
💻 C
📖 第 1 页 / 共 4 页
字号:
     //PCON = 0x80;
     //REN = 1;
     //TI = 0; //发送中断标志位置零
     ///RI = 0; //接收中断标志位置零
     //TR1 = 1;
  	 //TR0=1;
     NCS = FALSE;
     P14=1; 
	 ET0=1;
     ES=0;
     EA = 1;
while(1)
	     {
           RI=0;
//Commu_test();
 start:     
           for (i=0;i<30;i++)  //循环次数超过最大数据长度
		        {
  	      //RI=0;
	  		      while(!RI);  //当没有串口信息时等待
	              shuju[i]=SBUF;  //启动速度初值
				  if (shuju[i]==0x81) i--;   //高手标志
			      RI=0;
   
				  //判断接收的数据,根据不同情况进行不同处理
				  //如果开头不是0x3c就返回重新接收数据
                  if (shuju[0]!=0x3c)goto start;
				              
                    // sen(i);
				  //如果第二个字节不是合法字符就返回重新接收数据
 				  if ( (i==1) && ( shuju[1]!=0x04  && shuju[1]!=0x08 && shuju[1]!=0x0a && shuju[1]!=0x13 && shuju[1]!=0x03 ))  {goto start;};
				  //根据第三个字节进行不同的处理
                  if( (i>=1) && (shuju[1]==0x04 ))
				     {
					   //如果第3位不是0x01  就返回重新接收数据
                        if ( (i==2) && (shuju[2]!=0x00 && shuju[2]!=0x01 )) goto start;
					   //如果第3位是0x00  就进行通讯测试,问RC500工作正常吗?
                         if ( (i>=2) &&(shuju[2]==0x00) )
						   {
						    //如果数据指令正确则进行通讯测试,否则重新接收数据
						    if ( (i==7) && ((shuju[3]==0x60) && (shuju[4]==0x00) &&  (shuju[5]==0x00) &&  (shuju[7]==0x0d)))
						         {
								  //通讯测试返回信息
                                   Commu_test();//1
                                   for (j=0;j<5;j++)
                                   sen(tongxunceshixinxi[j]);
                                   goto start;
								   //goto tongxunceshi;
								 }
                               else if (i==7) 
							     {sen(0x22); goto start;};

								 
                           };
					   //如果第3位是0x01  就寻卡、关闭卡片或者读卡操作
                        if ( (i>=2) &&(shuju[2]==0x01) )
						   {
						   if ( (i==3) && ((shuju[3]!=0x70) &&  (shuju[3]!=0x66) && (shuju[3]!=0x68))) goto start;
						   //寻卡
                           if ( (i>=3) &&(shuju[3]==0x70))
						      {
							    //如果数据指令正确则进行寻卡操作,否则重新接收数据
							    if ( (i==7) && (   (shuju[5]==0x00) &&  (shuju[7]==0x0d)))
							         {              Commu_test();
									                xunka();//2
                                              if (CardStatus) 
											  { // for (j=0;j<9;j++)
	                                                  //sen(xunkaxinxi[j]);
											        sendata[0]=0x3C;
													sendata[1]=0x05;
                                                    sendata[2]=UID[0];
													sendata[3]=UID[1];
												    sendata[4]=UID[2];
                                                    sendata[5]=UID[3];
                                                    sendata[6]=0x00;
                                                    sendata[7]=0;
													for(j=0;j<6;j++) sendata[7]^=sendata[j];
													sendata[8]=0x0d;
													for(j=0;j<9;j++)
												  	sen(sendata[j]);
                                                   //DelayMS(10);
                                                   //P14=0;
                                                   //DelayMS(1000);        //控制小喇叭
                                                   //P14=1;
                                                   //DelayMS(10);
                                                   //P14=0;
                                                   //DelayMS(1000);        //控制小喇叭
                                                   //P14=1;
								                    goto start;      
															   
															}
													   else
															for(j=0;j<5;j++)
															sen(cuowufanhui[j]);
															
                                                     goto start;
	   								                      //for (j=0;j<9;j++)
	                                                      //sen(xunkaxinxi[j]);
                                                          //goto xunka;
                                                           // goto start;
											    }
	                               else if (i==7) 
								     { goto start;};
							  };
						   //读卡
                           if ( (i>=3) &&(shuju[3]==0x66))
						     {   //if ( (i==4) && (shuju[4]!=0x01 && shuju[4]!=0x04 )) goto start;
							    //如果数据指令正确则进行寻卡操作,否则重新接收数据
							      // if ( (i>=4) &&(shuju[4]==0x01) ){//
                                   if ( (i==7) && (    (shuju[5]==0x00) &&  (shuju[7]==0x0d)))
							         {        //Commu_test();
								            HL_Read(buffer,shuju[4],KEYA);
									         
                                              //MIF_READ(buffer,shuju[4]);
									          if (CardStatus) 
 	                                           {    sendata[0]=0x3C;
													sendata[1]=0x12;
                                                    sendata[2]=0x00;
													sendata[3]=buffer[0];
													sendata[4]=buffer[1];
                                                    sendata[5]=buffer[2];
                                                    sendata[6]=buffer[3];
													sendata[7]=buffer[4];
                                                    sendata[8]=buffer[5];
                                                    sendata[9]=buffer[6];
													sendata[10]=buffer[7];
                                                    sendata[11]=buffer[8];
													sendata[12]=buffer[9];
													sendata[13]=buffer[10];
                                                    sendata[14]=buffer[11];
													sendata[15]=buffer[12];
                                                    sendata[16]=buffer[13];
													sendata[17]=buffer[14];
                                                    sendata[18]=buffer[15];
                                                    sendata[19]=0;
													for(j=0;j<18;j++) sendata[19]^=sendata[j];
													sendata[20]=0x0d;
													for(j=0;j<21;j++)
													sen(sendata[j]);
                                                
                                               //Powerdown();
                                               //playone();
											   goto start;      
	                                           }
                                          else
	                                          for(j=0;j<6;j++)
                                              sen(cuowufanhui[j]);
                                              //playtwo();
                                              goto start;
                                             
	   								                        //for (j=0;j<21;j++)
	                                    
														    //sen(dukaxinxi[j]);
                                                          //goto start;
									                        //goto duka;
											}else if (i==7) 
								                     { goto start;};
                                   //};
                                //if ( (i>=4) &&(shuju[4]==0x04) )
                                  // { if ( (i==7) && (    (shuju[5]==0x00) &&  (shuju[7]==0x0d)))
							      //   {
	   								                               // for (j=0;j<21;j++)
	                              //       sen(dukaxinxi2[j]);
									                                //goto duka;
								    //}
	                               //else if (i==7) 
								    //{ goto start;};
                                  // };

							  };
						   //关闭卡片
                           if ( (i>=3) &&(shuju[3]==0x68))
						      {
							    //如果数据指令正确则进行关卡操作,否则重新接收数据
							    if ( (i==7) && ( (shuju[4]==0x00) &&  (shuju[5]==0x00) && (shuju[6]==0x51) &&  (shuju[7]==0x0d)))
							         {
                                        TurnOff_Card();
                                     if (CardStatus) 

								       {sendata[0]=0x3C;
										sendata[1]=0x02;
										sendata[2]=0x00;
										sendata[3]=0x00;
										sendata[4]=0;
										for(j=0;j<3;j++) sendata[4]^=sendata[j];
										sendata[5]=0x0D;
										for(j=0;j<6;j++)
										sen(sendata[j]);
									     goto start;                           
										   
										}
								   else
							        	for(j=0;j<5;j++)
										sen(cuowufanhui[j]);
                                      goto start;
								      //for (j=0;j<6;j++)
                                      //sen(gonggongxinxi[j]);
                                      //    goto start;
									  //goto guanbikapian;
									 }
	                               else if (i==7) 
								     {sen(0x22); goto start;};
							    
							  };


                           };

					 };
                  if( (i>=1) && (shuju[1]==0x08 ))
				  //密码验证程序
				     {
					    //如果数据指令正确则进行密码验证操作,否则重新接收数据
					    if ( (i==11) && ( (shuju[2]==0x01) && (shuju[3]==0x6a) && (shuju[4]==0x00) &&  (shuju[11]==0x0d)))
					         {
							  //for (j=6;j<10;j++)
							  //UID[j]=shuju[j];
                                                 Commu_test();
									             xunka();//2
                                                 xiamima(shuju[5],shuju[4]);
												 if(shuju[5]>=0x10)
												 {shuju[5]=shuju[5]%16;}
                                                mimarenzheng(UID, shuju[5],shuju[4]);
												if (CardStatus) 
												
												       {sendata[0]=0x3C;
														sendata[1]=0x02;
														sendata[2]=0x00;
														sendata[3]=0x00;
														sendata[4]=0;
														for(j=0;j<3;j++) sendata[4]^=sendata[j];
														sendata[5]=0x0D;
														for(j=0;j<6;j++)
														sen(sendata[j]);
                                                        goto start;
													    }
												   else
														for(j=0;j<5;j++)
														sen(cuowufanhui[j]);

	                                                 goto start;
							//for (j=0;j<6;j++)
                           //sen(gonggongxinxi[j]);
						 //goto start;;
							      }
	                       else if (i==11 && shuju[i+1] != 0x81) //高手标志
						     {sen(0x22); goto start;};

					 };
                  if( (i>=1) && (shuju[1]==0x0a ))
				  //下载密码
				     {
					    //如果数据指令正确则进行下载密码操作,否则重新接收数据
					    if ( (i==13) && ( (shuju[2]==0x01) && (shuju[3]==0x69) && (shuju[4]==0x00) &&  (shuju[13]==0x0d)))
					         {
							 Commu_test(); 
                            //xunka();//2
                            //Select_Card();
                                       // buffer[0]=shuju[6]^0xf0;									buffer[1]=shuju[7]^0xf0;
                                       // buffer[2]=shuju[8]^0xf0;
                                       // buffer[3]=shuju[9]^0xf0;
									   // buffer[4]=shuju[10]^0xf0;
                                       // buffer[5]=shuju[11]^0xf0;
                                       // for(j=0;j<6;j++)
									   //sen(buffer[j]);
									   //for(j=0;j<12;j++)
                                      // buffer[j]=0x0f;
							  xiamima(shuju[5],shuju[4]);
                                  if (CardStatus) 

								       {sendata[0]=0x3C;
										sendata[1]=0x02;
										sendata[2]=0x00;
										sendata[3]=0x00;
										sendata[4]=0;
										for(j=0;j<3;j++) sendata[4]^=sendata[j];
										sendata[5]=0x0D;
										for(j=0;j<6;j++)
										sen(sendata[j]);
									    goto start;                          
										   
										}
								   else
										for(j=0;j<5;j++)
										sen(cuowufanhui[j]);
							     
	                           
							// for (j=0;j<6;j++)
                            // sen(gonggongxinxi[j]);
                             //goto xiazaimima;
                                          goto start;
							 }
	                       else if (i==13 && shuju[i+1] != 0x81) //高手标志
						     { goto start;};

   					 
					 };
                  if( (i>=1) && (shuju[1]==0x13 ))
				  //写卡
				     {
					    //如果数据指令正确则进行写卡操作,否则重新接收数据
					    if ( (i==22) && ( (shuju[2]==0x01) && (shuju[3]==0x67) &&   (shuju[22]==0x0d)))
					         {         
							   HL_Active(shuju[4],KEYA);

                                        buffer[0]=shuju[5];
										buffer[1]=shuju[6];
                                        buffer[2]=shuju[7];
                                        buffer[3]=shuju[8];
										buffer[4]=shuju[9];
                                        buffer[5]=shuju[10];
                                        buffer[6]=shuju[11];
										buffer[7]=shuju[12];
                                        buffer[8]=shuju[13];
										buffer[9]=shuju[14];
										buffer[10]=shuju[15];
                                        buffer[11]=shuju[16];
										buffer[12]=shuju[17];
                                        buffer[13]=shuju[18];
								        buffer[14]=shuju[19];
                                        buffer[15]=shuju[20];
                                    MIF_Write(buffer,shuju[4]);        
						          if (CardStatus) 
                                   {  sendata[0]=0x3C;
									  sendata[1]=0x02;
									  sendata[2]=0x00;
									  sendata[3]=0x00;
									  sendata[4]=0;
									  for(j=0;j<3;j++) sendata[4]^=sendata[j];
									  sendata[5]=0x0D;
								 	  for(j=0;j<6;j++)
									  sen(sendata[j]);
                                     // xiangsheng();
                                       goto start;
	   
										
                                       }
                                  else
                                       for(j=0;j<6;j++)
                                      sen(cuowufanhui[j]);
                                      goto start;//*/
									  // for (j=0;j<6;j++)
                                      //sen(gonggongxinxi[j]);
                                      
							           goto start;
							           }
	                       else if (i==22 && shuju[i+1] != 0x81) //高手标志
						     {sen(0x22); goto start;};




					 };
                  if( (i>=1) && (shuju[1]==0x03 ))
				     {
					   //如果第3位不是0x01  就返回重新接收数据
                        if ( (i==2) &&(shuju[2]!=0x01) ) goto start;
					   //如果第3位是0x01  就根据情况进行处理
                        if ( (i>=2) &&(shuju[2]==0x01) )
						   {
					   
						    
						    if ( (i>=3) &&(shuju[3]==0x6d))
							//如果第4位是0x6d,则说明是亮灯指令
							   {
							     // if (shuju[6]!=0x0d)goto start;
							     // if (shuju[6]==0x0d)
								    //  {
	   								          for (j=0;j<6;j++)
	                                          sen(gonggongxinxi[j]);
                                              goto start;
									    //goto liangdeng
									//	}
							//else if (i==6 && shuju[i+1] != 0x81) //高手标志
						                            // { goto start;};
                         
							   };
						    if ( (i>=3) &&(shuju[3]==0x6b))
							//如果第4位是0x6b,则说明是响声指令
							   {
							     // if (shuju[6]!=0x0d)goto start;
							      //if (shuju[6]==0x0d)
								      //{  
									       xiangsheng(); 
                                          goto start;
	   								         //for (j=0;j<6;j++)
	                                         //sen(gonggongxinxi[j]);
                                                  goto start;
									       //goto xiangsheng;
										   //}
					   //else if (i==6 && shuju[i+1] != 0x81) //高手标志
						                                 // { goto start;};
							   };
						    if ( (i>=3) &&(shuju[3]==0x72))
							//如果第4位是0x72,则说明是关卡和唤醒指令
							   {
							      if ( (i==6) &&(shuju[6]!=0x0d))goto start;
 

							      if ( (i==6) && (shuju[6]==0x0d))
								      {
							          if (shuju[4]!=0x00 && shuju[4]!=0x01 )goto start;
							          if (shuju[4]==0x00)
									     {
	   								          for (j=0;j<6;j++)
	                                          sen(gonggongxinxi[j]);
                                              goto start; 
											 // goto guansheshepin;
										 };
							          if (shuju[4]==0x01)
									     {
	   								          for (j=0;j<6;j++)
	                                          sen(gonggongxinxi[j]);
                                              goto start;
											  //goto huanxing;
										 };
									  };
							 
							   };



						   };
  
					 };

			    };

         };
  
}  //main 
 
 

 

  

⌨️ 快捷键说明

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