亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? m500auc.lst

?? RC500的mifare卡開發備用程序及電路
?? LST
?? 第 1 頁 / 共 5 頁
字號:
 234          //       OUT: -
 235          //    RETURN: 
 236          //   COMMENT: All remaining date in the FIFO of the reader module is 
 237          //            erased by this function. Before wrinting new data or
 238          //            starting a new command, all remaining data from former 
 239          //            commands should be deleted. Please note, that in 
 240          //            normal operation, never data should be left, that means
C51 COMPILER V6.12  M500AUC                                                                08/23/2008 14:34:32 PAGE 5   

 241          //            that a call to this function should not be necessary.
 242          //
 243          void FlushFIFO(void);
 244          
 245          // _____________________________________________________________________________
 246          //
 247          //  FUNCTION: M500PiccAuthState
 248          //        IN: auth_mode
 249          //            snr
 250          //            sector
 251          //       OUT: -
 252          //    RETURN: 
 253          //   COMMENT: 
 254          //
 255          char M500PiccAuthState(unsigned char auth_mode,// PICC_AUTHENT1A, PICC_AUTHENT1B
 256                                 unsigned char *snr,    // 4 byte serial number
 257                                 unsigned char sector); // 0 <= sector <= 15  
 258                                                      // sector address for authentication
 259          
 260          //////////////////////////////////////////////////////////////////////
 261          //           EXCHANGE   BYTE   STREAM
 262          ///////////////////////////////////////////////////////////////////////
 263          char ExchangeByteStream(unsigned char Cmd,
 264                                  unsigned char *send_data,
 265                                  unsigned char send_bytelen,
 266                                  unsigned char *rec_data,  
 267                                  unsigned char *rec_bytelen);
 268          
 269          ///////////////////////////////////////////////////////////////////////////////
 270          //                  Interrupt Handler RC500
 271          ///////////////////////////////////////////////////////////////////////////////
 272          void RC500ISR (void) interrupt 0 using 1    //Ext0 interrupt
 273          {
 274   1         static unsigned char idata irqBits;
 275   1         static unsigned char idata irqMask;            
 276   1         static unsigned char idata nbytes;
 277   1         static unsigned char idata cnt;
 278   1      
 279   1         IE0 = 0; 	// Clear interrupt request flag
 280   1      
 281   1         if (MpIsrInfo && MpIsrOut && MpIsrIn)  // transfer pointers have to be set
 282   1                                                // correctly
 283   1         {
 284   2            while( ReadRawIO(RegPrimaryStatus) & 0x08) // loop while IRQ pending
 285   2                                                      // Attention: IRQ bit is 
 286   2                                                      // inverted when used with
 287   2                                                      // low activ IRQ
 288   2            {
 289   3               irqMask = ReadRawIO(RegInterruptEn); // read enabled interrupts
 290   3               // read pending interrupts
 291   3               irqBits = ReadRawIO(RegInterruptRq) & irqMask;
 292   3               MpIsrInfo->irqSource |= irqBits; // save pending interrupts
 293   3               //************ LoAlertIRQ ******************
 294   3               if (irqBits & 0x01)    // LoAlert
 295   3               {  
 296   4                  nbytes = MFIFOLength - ReadRawIO(RegFIFOLength);
 297   4                  // less bytes to send, than space in FIFO
 298   4                  if ((MpIsrInfo->nBytesToSend - MpIsrInfo->nBytesSent) <= nbytes)
 299   4                  {
 300   5                     nbytes = MpIsrInfo->nBytesToSend - MpIsrInfo->nBytesSent;
 301   5                     WriteRawIO(RegInterruptEn,0x01); // disable LoAlert IRQ
 302   5                  }
C51 COMPILER V6.12  M500AUC                                                                08/23/2008 14:34:32 PAGE 6   

 303   4                  // write remaining data to the FIFO
 304   4                  for ( cnt = 0;cnt < nbytes;cnt++)
 305   4                  {
 306   5                     WriteRawIO(RegFIFOData,MpIsrOut[MpIsrInfo->nBytesSent]);
 307   5                     MpIsrInfo->nBytesSent++;
 308   5                  }
 309   4                  WriteRawIO(RegInterruptRq,0x01);  // reset IRQ bit
 310   4               }
 311   3            
 312   3               //************* TxIRQ Handling **************
 313   3               if (irqBits & 0x10)       // TxIRQ
 314   3               {
 315   4                  WriteRawIO(RegInterruptRq,0x10);    // reset IRQ bit 
 316   4                  WriteRawIO(RegInterruptEn,0x82);    // enable HiAlert Irq for
 317   4                                                 // response
 318   4                  if (MpIsrInfo->cmd == PICC_ANTICOLL1) 	// if cmd is anticollision
 319   4      	    {                                           // switch off parity generation
 320   5                     WriteRawIO(RegChannelRedundancy,0x02);	// RXCRC and TXCRC disable, parity disable
 321   5      	    }	
 322   4               }
 323   3      
 324   3               //************* HiAlertIRQ or RxIRQ Handling ******************
 325   3               if (irqBits & 0x0E) // HiAlert, Idle or RxIRQ
 326   3               {
 327   4                  // read some bytes ( length of FIFO queue)              
 328   4                  // into the receive buffer
 329   4                  nbytes = ReadRawIO(RegFIFOLength);
 330   4                  // read date from the FIFO and store them in the receive buffer
 331   4                  for ( cnt = 0; cnt < nbytes; cnt++)               
 332   4                  {
 333   5                     MpIsrIn[MpIsrInfo->nBytesReceived] = ReadRawIO(RegFIFOData);
 334   5                     MpIsrInfo->nBytesReceived++;
 335   5                  }
 336   4                  WriteRawIO(RegInterruptRq,0x0A & irqBits);  
 337   4                                             // reset IRQ bit - idle irq will
 338   4                                             // be deleted in a seperate section
 339   4               }   
 340   3         
 341   3               //************** IdleIRQ Handling ***********
 342   3               if (irqBits & 0x04)     // Idle IRQ
 343   3               {
 344   4                  WriteRawIO(RegInterruptEn,0x20); // disable Timer IRQ
 345   4                  WriteRawIO(RegInterruptRq,0x20); // disable Timer IRQ request
 346   4                  irqBits &= ~0x20;   // clear Timer IRQ in local var
 347   4                  MpIsrInfo->irqSource &= ~0x20; // clear Timer IRQ in info var
 348   4                                              // when idle received, then cancel
 349   4                                              // timeout
 350   4                  WriteRawIO(RegInterruptRq,0x04);  // reset IRQ bit 
 351   4                  // status should still be MI_OK
 352   4                  // no error - only used for wake up
 353   4               }
 354   3             
 355   3               //************* TimerIRQ Handling ***********
 356   3               if (irqBits & 0x20)       // timer IRQ
 357   3               {
 358   4                  WriteRawIO(RegInterruptRq,0x20); // reset IRQ bit 
 359   4                  MpIsrInfo->status = MI_NOTAGERR; // timeout error
 360   4                                                   // otherwise ignore the interrupt
 361   4               }
 362   3               
 363   3            }
 364   2         }
C51 COMPILER V6.12  M500AUC                                                                08/23/2008 14:34:32 PAGE 7   

 365   1      }
 366          
 367          ///////////////////////////////////////////////////////////////////////
 368          //         Set   Timeout   LENGTH
 369          ///////////////////////////////////////////////////////////////////////
 370          void M500PcdSetTmo(unsigned char tmoLength)
 371          {
 372   1         switch(tmoLength)
 373   1         {  // timer clock frequency 13,56 MHz
 374   2            case 1:                       // short timeout (1,0 ms)
 375   2               WriteIO(RegTimerClock,0x07); // TAutoRestart=0,TPrescale=128
 376   2               WriteIO(RegTimerReload,0x6a);// TReloadVal = 'h6a =106(dec) 
 377   2               break;
 378   2            case 2:                       // medium timeout (1,5 ms)
 379   2               WriteIO(RegTimerClock,0x07); // TAutoRestart=0,TPrescale=128
 380   2               WriteIO(RegTimerReload,0xa0);// TReloadVal = 'ha0 =160(dec) 
 381   2               break;
 382   2            case 3:                       // medium timeout (6 ms)
 383   2               WriteIO(RegTimerClock,0x09); // TAutoRestart=0,TPrescale=4*128
 384   2               WriteIO(RegTimerReload,0xa0);// TReloadVal = 'ha0 =160(dec) 
 385   2               break;
 386   2            case 4:                       // long timeout (9.6 ms)
 387   2               WriteIO(RegTimerClock,0x09); // TAutoRestart=0,TPrescale=4*128
 388   2               WriteIO(RegTimerReload,0xff);// TReloadVal = 'hff =255(dec) 
 389   2               break;
 390   2            case 5:                       // long timeout (38.5 ms)
 391   2               WriteIO(RegTimerClock,0x0b); // TAutoRestart=0,TPrescale=16*128
 392   2               WriteIO(RegTimerReload,0xff);// TReloadVal = 'hff =255(dec) 
 393   2               break;
 394   2            case 6:                       // long timeout (154 ms)
 395   2               WriteIO(RegTimerClock,0x0d); // TAutoRestart=0,TPrescale=64*128
 396   2               WriteIO(RegTimerReload,0xff);// TReloadVal = 'hff =255(dec) 
 397   2               break;
 398   2            case 7:                       // long timeout (616.2 ms)
 399   2               WriteIO(RegTimerClock,0x0f); // TAutoRestart=0,TPrescale=256*128
 400   2               WriteIO(RegTimerReload,0xff);// TReloadVal = 'hff =255(dec) 
 401   2               break;
 402   2            default:                       // 
 403   2               WriteIO(RegTimerClock,0x07); // TAutoRestart=0,TPrescale=128
 404   2               WriteIO(RegTimerReload,tmoLength);// TReloadVal = 'h6a =tmoLength(dec) 
 405   2               break;
 406   2         }     
 407   1      }
 408          
 409          //////////////////////////////////////////////////////////////////////
 410          //       WRITE   A   PCD   COMMAND 
 411          ///////////////////////////////////////////////////////////////////////
 412          char  M500PcdCmd(unsigned char cmd,
 413                         volatile unsigned char* send, 
 414                         volatile unsigned char* rcv,
 415                         volatile MfCmdInfo *info)
 416          {     
 417   1         char          idata status    = MI_OK;
 418   1         char          idata tmpStatus ;
 419   1         unsigned char idata lastBits;
 420   1      
 421   1         unsigned char idata irqEn     = 0x00;
 422   1         unsigned char idata waitFor   = 0x00;
 423   1         unsigned char idata timerCtl  = 0x00;
 424   1      
 425   1         WriteIO(RegInterruptEn,0x7F); // disable all interrupts
 426   1         WriteIO(RegInterruptRq,0x7F); // reset interrupt requests
C51 COMPILER V6.12  M500AUC                                                                08/23/2008 14:34:32 PAGE 8   

 427   1         WriteIO(RegCommand,PCD_IDLE); // terminate probably running command
 428   1      
 429   1         FlushFIFO();            // flush FIFO buffer
 430   1      
 431   1         // save info structures to module pointers
 432   1         MpIsrInfo = info;  
 433   1         MpIsrOut  = send;
 434   1         MpIsrIn   = rcv;
 435   1      
 436   1         info->irqSource = 0x0; // reset interrupt flags
 437   1         // depending on the command code, appropriate interrupts are enabled (irqEn)
 438   1         // and the commit interrupt is choosen (waitFor).
 439   1         switch(cmd)
 440   1         {
 441   2            case PCD_IDLE:                   // nothing else required
 442   2               irqEn = 0x00;
 443   2               waitFor = 0x00;
 444   2               break;
 445   2            case PCD_WRITEE2:                // LoAlert and TxIRq
 446   2               irqEn = 0x11;
 447   2               waitFor = 0x10;
 448   2               break;
 449   2            case PCD_READE2:                 // HiAlert, LoAlert and IdleIRq
 450   2               irqEn = 0x07;
 451   2               waitFor = 0x04;
 452   2               break;
 453   2            case PCD_LOADCONFIG:             // IdleIRq
 454   2            case PCD_LOADKEYE2:              // IdleIRq
 455   2            case PCD_AUTHENT1:               // IdleIRq
 456   2               irqEn = 0x05;
 457   2               waitFor = 0x04;
 458   2               break;
 459   2            case PCD_CALCCRC:                // LoAlert and TxIRq
 460   2               irqEn = 0x11;
 461   2               waitFor = 0x10;
 462   2               break;
 463   2            case PCD_AUTHENT2:               // IdleIRq
 464   2               irqEn = 0x04;
 465   2               waitFor = 0x04;
 466   2               break;
 467   2            case PCD_RECEIVE:                // HiAlert and IdleIRq
 468   2               info->nBitsReceived = -(ReadIO(RegBitFraming) >> 4);
 469   2               irqEn = 0x06;
 470   2               waitFor = 0x04;
 471   2               break;
 472   2            case PCD_LOADKEY:                // IdleIRq
 473   2               irqEn = 0x05;
 474   2               waitFor = 0x04;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本高清免费不卡视频| 一本到不卡精品视频在线观看| 欧美三电影在线| 亚洲男人电影天堂| 成人99免费视频| 欧美国产精品专区| 国产成人精品免费在线| 欧美精品一区二区精品网| 美女视频免费一区| 欧美一区二区在线观看| 天堂午夜影视日韩欧美一区二区| 91极品视觉盛宴| 亚洲自拍欧美精品| 欧美日韩午夜在线视频| 亚洲va国产va欧美va观看| 在线观看亚洲精品视频| 亚洲高清在线精品| 欧美日韩一级大片网址| 爽好久久久欧美精品| 91精品国产综合久久久久久久 | 欧美一区二区高清| 视频一区中文字幕| 欧美一区二区日韩一区二区| 日本伊人色综合网| 精品国偷自产国产一区| 国产在线精品视频| 国产亚洲va综合人人澡精品| 成人h精品动漫一区二区三区| 国产精品久久三| 99re免费视频精品全部| 亚洲精品大片www| 欧美日韩综合色| 日本欧美肥老太交大片| 欧美成人精精品一区二区频| 韩国三级中文字幕hd久久精品| 久久综合色8888| 大白屁股一区二区视频| 中文字幕一区二区三区不卡| 91美女在线观看| 亚洲一二三区视频在线观看| 9191久久久久久久久久久| 蜜臀a∨国产成人精品| 久久综合99re88久久爱| 成人av午夜影院| 亚洲一区二区三区免费视频| 欧美一区二区私人影院日本| 国产一区二区视频在线| 国产精品国产三级国产有无不卡 | 中文字幕日韩一区二区| 91理论电影在线观看| 国产精品二三区| 日本精品视频一区二区| 香蕉av福利精品导航| 色先锋久久av资源部| 亚洲欧美日韩小说| 欧美日韩一区 二区 三区 久久精品| 日韩成人伦理电影在线观看| 欧美精品一区二区三| 成人午夜激情在线| 国产精品丝袜一区| 欧美视频在线一区二区三区 | 成人v精品蜜桃久久一区| 亚洲精选视频免费看| 欧美人妇做爰xxxⅹ性高电影 | 日韩在线卡一卡二| 日韩精品中午字幕| 成人午夜av影视| 一区二区三区蜜桃网| 日韩一二在线观看| 成人福利视频在线| 无吗不卡中文字幕| 久久精品人人做人人综合| 99久久夜色精品国产网站| 午夜精品福利在线| 国产三级精品三级| 91视视频在线直接观看在线看网页在线看 | 91精品欧美一区二区三区综合在 | 美女任你摸久久| 国产精品日日摸夜夜摸av| 欧美午夜一区二区三区免费大片| 精品一区中文字幕| 亚洲美女在线一区| 精品三级av在线| 91在线porny国产在线看| 日本不卡免费在线视频| 2022国产精品视频| 欧美三级欧美一级| 国产**成人网毛片九色 | 久久综合成人精品亚洲另类欧美 | 国产精品嫩草久久久久| 欧美日韩国产高清一区二区三区| 国产乱码精品一品二品| 亚洲综合一区二区精品导航| 日韩欧美一卡二卡| 国产大片一区二区| 日韩高清一区二区| 中文字幕一区二区三区不卡在线 | 中文字幕一区免费在线观看| 欧美一级理论片| 97久久超碰国产精品| 精品无人区卡一卡二卡三乱码免费卡| 亚洲婷婷综合久久一本伊一区| 欧美色综合天天久久综合精品| 国产精品一品二品| 日本成人中文字幕| 亚洲精品伦理在线| 国产女同性恋一区二区| 欧美一区二区福利在线| 欧美亚洲日本国产| aa级大片欧美| 国产成+人+日韩+欧美+亚洲| 日韩主播视频在线| 中文字幕一区二区三区乱码在线| 久久美女艺术照精彩视频福利播放| 欧美无人高清视频在线观看| 成人av在线网| 国产精品一二三在| 免费成人小视频| 亚洲mv在线观看| 一区二区三区四区在线| 中文字幕欧美国产| 精品国产乱码久久久久久老虎| 欧美日韩精品免费观看视频| 91首页免费视频| 99国产精品久久久久久久久久久| 国产乱一区二区| 久久99久久精品欧美| 日韩国产在线观看一区| 一区二区三区精品在线| 亚洲同性gay激情无套| 国产精品视频一二三| 久久久久久久综合| 欧美成人欧美edvon| 9191成人精品久久| 在线不卡中文字幕播放| 在线欧美日韩国产| 色8久久人人97超碰香蕉987| 99精品欧美一区| 东方欧美亚洲色图在线| 国产成人午夜高潮毛片| 国产乱子伦一区二区三区国色天香| 免费观看在线综合色| 日韩高清一区二区| 日韩精品每日更新| 亚洲成人免费av| 一区二区三区国产精品| 国产精品久久久一区麻豆最新章节| 国产调教视频一区| 国产精品区一区二区三区 | 这里只有精品免费| 欧美午夜一区二区三区免费大片| 欧美中文字幕一二三区视频| 91麻豆.com| 欧美色区777第一页| 欧美日韩一区不卡| 精品1区2区3区| 欧美日韩国产经典色站一区二区三区 | 亚洲成人动漫精品| 日韩电影在线一区二区| 捆绑调教美女网站视频一区| 精品一区二区三区欧美| 国产一区二区看久久| 激情五月婷婷综合| 国产91色综合久久免费分享| 成人h版在线观看| 色8久久精品久久久久久蜜| 欧美精品日韩一区| 日韩欧美一二区| 国产欧美1区2区3区| 亚洲女厕所小便bbb| 午夜天堂影视香蕉久久| 久久99久久99小草精品免视看| 成人免费高清视频| 在线看国产一区二区| 欧美精品vⅰdeose4hd| 欧美日韩国产123区| 日韩一级二级三级精品视频| 日本一区二区三区免费乱视频| 中文字幕制服丝袜成人av| 一区二区三区在线视频观看58| 青娱乐精品视频| 国产精品一区二区黑丝| 99精品视频在线播放观看| 一本色道久久综合精品竹菊| 欧美人牲a欧美精品| 2021中文字幕一区亚洲| 国产精品午夜久久| 中文字幕欧美三区| 亚洲电影欧美电影有声小说| 久久精品99国产精品| 成人免费视频caoporn| 欧美性生活一区| 欧美精品一区在线观看| 亚洲男人的天堂网| 九九热在线视频观看这里只有精品| 国内精品国产三级国产a久久| 国产成人精品免费在线| 欧美三级中文字幕在线观看| 久久午夜电影网| 一区二区三区四区视频精品免费|