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

📄 rc500.lst

📁 这是一个关与LCD在嵌入式系统中应用的实例和程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 208   4                                  if(RECEIVEBUFFER[5]==0x0A)
 209   4                                        selec_abkey=PICC_AUTHENT1A;
 210   4                                  if(RECEIVEBUFFER[5]==0x0B) 
 211   4                                        selec_abkey=PICC_AUTHENT1B; 
 212   4      
 213   4                                  e2key_secotor=RECEIVEBUFFER[6];
 214   4                          
 215   4                                  keybuf[0]=RECEIVEBUFFER[7];  
 216   4                                  keybuf[1]=RECEIVEBUFFER[8];
 217   4                                  keybuf[2]=RECEIVEBUFFER[9];
 218   4                                  keybuf[3]=RECEIVEBUFFER[10];
 219   4                   			    keybuf[4]=RECEIVEBUFFER[11];
 220   4                   				keybuf[5]=RECEIVEBUFFER[12];
 221   4      
 222   4                                  status=Mf500PcdLoadKeyE2(selec_abkey,e2key_secotor,keybuf);  //first save key 
             -to e2rom
 223   4                   				if(status==00)             
 224   4                   				     SendData("Load key e2 ok ");            
 225   4                  				else
 226   4                                       SendData("Load key e2 lose ");  
 227   4                                  break;
 228   4                             case 0x55:  //rc500 的地址0x30---0x7f存贮测试
 229   4                                  e2key_secotor=RECEIVEBUFFER[5];
 230   4                                  rc500_e2addr = 0x30 + e2key_secotor * 0x18;
 231   4                                  keybuf[0]=RECEIVEBUFFER[6];  
 232   4                                  keybuf[1]=RECEIVEBUFFER[7];
 233   4                                  keybuf[2]=RECEIVEBUFFER[8];
C51 COMPILER V6.00i RC500                                                                  01/15/2004 10:42:47 PAGE 5   

 234   4                                  keybuf[3]=RECEIVEBUFFER[9];             			                 				              
             -              
 235   4                                  status = PcdWriteE2(rc500_e2addr,4,keybuf);
 236   4                                  if(status==0)             
 237   4                   				     SendData("Save Info ok ");            
 238   4                  				else
 239   4                                       SendData("Save Info lose ");  
 240   4                                  break;
 241   4                             case 0x56:  //读出rc500 的地址0x30---0x7f存贮测试   
 242   4                                  e2key_secotor=RECEIVEBUFFER[5];
 243   4                                  status= PcdReadE2(e2key_secotor,4,rbuf);
 244   4                                  if(status==0)
 245   4      		                    {                        
 246   5                                    SendData("Read Info ok ");                          	         
 247   5                                    for(i=0;i<4;i++)
 248   5      		                        {
 249   6                                        SendHex(rbuf[i]);   //显示到屏幕
 250   6      		                        }
 251   5                                    SendEnter();
 252   5                                  }else                                                     
 253   4                                    SendData("Read Info lose");                                                 
             -                                                     
 254   4                                  break;
 255   4                             case 0x99:
 256   4                                  memset(temp_buf,0,sizeof(temp_buf));
 257   4                                  sector_num=RECEIVEBUFFER[3]*4+3;//算出密钥所在的块
 258   4                                                                  
 259   4                                        temp_buf[0]=RECEIVEBUFFER[5];     
 260   4                                        temp_buf[1]=RECEIVEBUFFER[6];
 261   4                                        temp_buf[2]=RECEIVEBUFFER[7];
 262   4                                        temp_buf[3]=RECEIVEBUFFER[8];
 263   4                   			          temp_buf[4]=RECEIVEBUFFER[9];
 264   4                   				      temp_buf[5]=RECEIVEBUFFER[10];
 265   4      
 266   4                                        temp_buf[6]=RECEIVEBUFFER[11];    
 267   4                                        temp_buf[7]=RECEIVEBUFFER[12];
 268   4                                        temp_buf[8]=RECEIVEBUFFER[13];
 269   4                                        temp_buf[9]=RECEIVEBUFFER[14];
 270   4                                 
 271   4                                        temp_buf[10]=RECEIVEBUFFER[15];        
 272   4                                        temp_buf[11]=RECEIVEBUFFER[16];
 273   4                                        temp_buf[12]=RECEIVEBUFFER[17];
 274   4                                        temp_buf[13]=RECEIVEBUFFER[18];
 275   4                   			          temp_buf[14]=RECEIVEBUFFER[19];
 276   4                   				      temp_buf[15]=RECEIVEBUFFER[20];
 277   4                                                             
 278   4                               	status=Mf500PiccWrite(sector_num,temp_buf);                              
 279   4       			  				if(status==0)                 		
 280   4                       			   SendData("Change ok");//显示写成功                             
 281   4                                  else  
 282   4                                     SendData("Change lose");     
 283   4                                  break;                           
 284   4      
 285   4                             case 0x30:  //read rf card
 286   4                                 
 287   4                                  block_num=RECEIVEBUFFER[3]*4+RECEIVEBUFFER[4];
 288   4                                  status=Mf500PiccRead(block_num,rbuf);             
 289   4                                  if(status==0)
 290   4      		                    {                        
 291   5                                    SendData("read sector ok ");                          	         
 292   5                                    for(i=0;i<16;i++)
 293   5      		                        {
C51 COMPILER V6.00i RC500                                                                  01/15/2004 10:42:47 PAGE 6   

 294   6                                        SendHex(rbuf[i]);   //显示到屏幕
 295   6      		                        }
 296   5                                    SendEnter();                            
 297   5      			                }else{
 298   5                                        SendData("Read sector lose");                           
 299   5                                        }
 300   4                                                
 301   4                                  break;
 302   4                             case 0xA0:  //write rf card
 303   4                                                            
 304   4                                  block_num=RECEIVEBUFFER[3]*4+RECEIVEBUFFER[4];
 305   4      
 306   4                                  memmove(temp_buf,RECEIVEBUFFER+5,16);   //搬移16个16进制数      
 307   4      			                                                                      
 308   4                     				status=Mf500PiccWrite(block_num,temp_buf);                              
 309   4       			  				if(status==0)                 		
 310   4                       			   SendData("write ok");//显示写成功                             
 311   4                                  else  
 312   4                                     SendData("write lose");     
 313   4                                  break;
 314   4                             case 0x34:  //initval
 315   4                                  block_num=RECEIVEBUFFER[3]*4+RECEIVEBUFFER[4];
 316   4      
 317   4                                  memmove(temp_buf,RECEIVEBUFFER+5,16);   //搬移16个16进制数      
 318   4      			                                                                      
 319   4                     				status=Mf500PiccWrite(block_num,temp_buf);                              
 320   4       			  				if(status==0)                 		
 321   4                       			   SendData("value init ok");//显示写成功                             
 322   4                                  else  
 323   4                                     SendData("value write lose");                                 
 324   4      
 325   4                                  break;
 326   4                             case 0xC0:   //decrement
 327   4                                  block_num=RECEIVEBUFFER[3]*4+RECEIVEBUFFER[4];
 328   4                                  //memmove(temp_buf,RECEIVEBUFFER+5,1);   //搬移1个16进制数  
 329   4                                  temp_buf[0]=RECEIVEBUFFER[5];
 330   4                                  temp_buf[1]=0;
 331   4                                  temp_buf[2]=0;
 332   4                                  temp_buf[3]=0;
 333   4                                  status=Mf500PiccValue(0xc0,block_num,temp_buf,block_num);   //减值
 334   4                                  if(status==0)
 335   4                                     SendData("Dec value ok");                                                  
             -                           
 336   4                                  else SendData("Dec value not ok");      
 337   4                                  break;
 338   4                             case 0xC1:   //increment              
 339   4                                  block_num=RECEIVEBUFFER[3]*4+RECEIVEBUFFER[4];
 340   4                                 // memmove(temp_buf,RECEIVEBUFFER+5,1);   //搬移1个16进制数 
 341   4                                  temp_buf[0]=RECEIVEBUFFER[5];
 342   4                                  temp_buf[1]=0;
 343   4                                  temp_buf[2]=0;
 344   4                                  temp_buf[3]=0;
 345   4                                  status=Mf500PiccValue(0xc1,block_num,temp_buf,block_num); //增值操作          
             -                  
 346   4                                  if(status==0)
 347   4                                     SendData("Inc value ok");                                                  
             -                            
 348   4                                  else 
 349   4                                     SendData("Inc value not ok");             
 350   4                                  break;
 351   4                             case 0x44:   //idle
 352   4                                  status=Mf500PiccHalt(); 
C51 COMPILER V6.00i RC500                                                                  01/15/2004 10:42:47 PAGE 7   

 353   4                                    if(status==0)
 354   4                                       SendData("Close ok");                                                    
             -                           
 355   4                                    else 
 356   4                                       SendData("Close lose");    
 357   4                                    break; 
 358   4                             default:
 359   4                                  SendData("erro command");  
 360   4                                  break;
 361   4      
 362   4                           }//run command
 363   3                     }////接收成功
 364   2                 }//while(1)                    
 365   1      }//end main()
 366          /****************************************************************************
 367          *                                                                           *
 368          * Function:   Mf500PcdConfig                                                  *
 369          *                                                                           *
 370          * Input:                                                                *
 371          * Output:       STATE                                                     *
 372          *                                                                           *
 373          ****************************************************************************/
 374          char Mf500PcdConfig(void)
 375          {
 376   1         char idata status = MI_RESETERR;
 377   1         unsigned int idata RstLoopCnt = 0;
 378   1         unsigned int idata CmdWaitCnt = 0;
 379   1       
 380   1         // wait until reset command recognized
 381   1      do
 382   1        {      
 383   2         Delay(100);     	// wait     
 384   2         PReset=1;   		// reset RC500
 385   2         Delay(300);      	// wait
 386   2         PReset=0; // clear reset pin
 387   2         Delay(300);      	// wait 
 388   2         } 
 389   1        while (ReadRC(RegPage) != 0x80);  
 390   1       do
 391   1       {   
 392   2             WriteRC(RegPage,0x0); // Dummy access in order to determine the bus 
 393   2       }while(ReadRC(RegCommand) != 0x00); // configuration
 394   1            // necessary read access 
 395   1            // after first write access, the returned value
 396   1            // should be zero ==> interface recognized
 397   1            if (ReadRC(RegCommand) != 0x00)
 398   1            {                           
 399   2                status = MI_INTERFACEERR;
 400   2            }
 401   1            else
 402   1            {
 403   2               status = 0;
 404   2            }
 405   1      
 406   1         if(status==0)
 407   1         {
 408   2          // loade2();
 409   2           
 410   2      	 XBYTE[RegClockQControl]=0x0;
 411   2           XBYTE[RegClockQControl]=0x40;
 412   2        	
 413   2      	 Delay(24);// wait approximately 100 us - calibration in progress
C51 COMPILER V6.00i RC500                                                                  01/15/2004 10:42:47 PAGE 8   

 414   2           ClearBitMask(RegClockQControl,0x40);  // clear bit ClkQCalib for 
 415   2           
 416   2      	 XBYTE[RegBitPhase]=0xAd;      
 417   2           XBYTE[RegRxThreshold]=0xFF;   
 418   2           XBYTE[RegRxControl2]=01;
 419   2           XBYTE[RegFIFOLevel]=0x1A; // initialize to 26d 
 420   2           XBYTE[RegTimerControl]=0x02;  // TStopRxEnd=0,TStopRxBeg=0,当数据发送结束时定时器自动启动
 421   2           XBYTE[RegIRqPinConfig]=0x3; // interrupt active low enable管脚irq上的信号与位irq状态相反,标准cmos输

⌨️ 快捷键说明

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