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

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

?? mfrc500uc.c

?? MRF500源碼,讀寫射頻卡!快點下!!絕對精彩
?? C
?? 第 1 頁 / 共 3 頁
字號:
   {
   
      PcdSetTmo(106);
      
      WriteRC(RegChannelRedundancy,0x03); // RxCRC and TxCRC disable, parity enable
      ClearBitMask(RegControl,0x08);      // disable crypto 1 unit   
      WriteRC(RegBitFraming,0x07);        // set TxLastBits to 7 
      
      ResetInfo(MInfo);   
      MSndBuffer[0] = req_code;
      MInfo.nBytesToSend   = 1;   
      status = PcdSingleResponseCmd(PCD_TRANSCEIVE,
                         MSndBuffer,
                         MRcvBuffer,
                         &MInfo);
     
      if (status)      // error occured
      {
         *atq = 0;
      } 
      else 
      {
         if (MInfo.nBitsReceived != 16) // 2 bytes expected
         {
            *atq = 0;
            status = MI_BITCOUNTERR;
         } 
         else 
         {
            status = MI_OK;
            memcpy(atq,MRcvBuffer,2);
         }
      }
   }
   return status; 
}

///////////////////////////////////////////////////////////////////////
//          M I F A R E    A N T I C O L L I S I O N
// for standard select
///////////////////////////////////////////////////////////////////////
char Mf500PiccAnticoll (unsigned char bcnt,
                     unsigned char *snr)
{
   return Mf500PiccCascAnticoll(0x93,bcnt,snr); // first cascade level
}

///////////////////////////////////////////////////////////////////////
//          M I F A R E    A N T I C O L L I S I O N
// for extended serial numbers
///////////////////////////////////////////////////////////////////////
char Mf500PiccCascAnticoll (unsigned char select_code,
                         unsigned char bcnt,       
                         unsigned char *snr)       
{
   char  status = MI_OK;
   char  snr_in[4];         // copy of the input parameter snr
   char  nbytes = 0;        // how many bytes received
   char  nbits = 0;         // how many bits received
   char  complete = 0;      // complete snr recived
   char  i        = 0;
   char  byteOffset = 0;
   unsigned char snr_crc;   // check byte calculation
   unsigned char snr_check;
   unsigned char dummyShift1;       // dummy byte for snr shift
   unsigned char dummyShift2;       // dummy byte for snr shift   
 
   //************* Initialisierung ******************************
   if ((status = Mf500PcdSetDefaultAttrib()) == MI_OK)
   {
      PcdSetTmo(106);
      
      memcpy(snr_in,snr,4);   
      
      WriteRC(RegDecoderControl,0x28); // ZeroAfterColl aktivieren   
      ClearBitMask(RegControl,0x08);    // disable crypto 1 unit
         
      //************** Anticollision Loop ***************************
      complete=0;
      while (!complete && (status == MI_OK) )
      {
         ResetInfo(MInfo);
         WriteRC(RegChannelRedundancy,0x03); // RxCRC and TxCRC disable, parity enable
         nbits = bcnt % 8;   // remaining number of bits
         if (nbits)
         {
            WriteRC(RegBitFraming,nbits << 4 | nbits); // TxLastBits/RxAlign auf nb_bi
            nbytes = bcnt / 8 + 1;   
            // number of bytes known
   
            // in order to solve an inconsistancy in the anticollision sequence
            // (will be solved soon), the case of 7 bits has to be treated in a
            // separate way
            if (nbits == 7 )
            {
               MInfo.cmd = PICC_ANTICOLL1;   // pass command flag to ISR        
               WriteRC(RegBitFraming,nbits); // reset RxAlign to zero
            }
         } 
         else
         {
            nbytes = bcnt / 8;
         }
  
         MSndBuffer[0] = select_code;
         MSndBuffer[1] = 0x20 + ((bcnt/8) << 4) + nbits; //number of bytes send
                  
         for (i = 0; i < nbytes; i++)  // Sende Buffer beschreiben
         {
            MSndBuffer[i + 2] = snr_in[i];
         }
         MInfo.nBytesToSend   = 2 + nbytes;    

         status = PcdSingleResponseCmd(PCD_TRANSCEIVE,
                            MSndBuffer,
                            MRcvBuffer,
                            &MInfo);

          // in order to solve an inconsistancy in the anticollision sequence
          // (will be solved soon), the case of 7 bits has to be treated in a
          // separate way 
         if (nbits == 7)
         {
            // reorder received bits
            dummyShift1 = 0x00;
            for (i = 0; i < MInfo.nBytesReceived; i++)
            {
                dummyShift2 = MRcvBuffer[i];
                MRcvBuffer[i] = (dummyShift1 >> (i+1)) | (MRcvBuffer[i] << (7-i));
                dummyShift1 = dummyShift2;
            }
            MInfo.nBitsReceived -= MInfo.nBytesReceived; // subtract received parity bits
            // recalculation of collision position
            if ( MInfo.collPos ) MInfo.collPos += 7 - (MInfo.collPos + 6) / 9;
         }
         
         if ( status == MI_OK || status == MI_COLLERR)    // no other occured
         {
            // R e s p o n s e   P r o c e s s i n g   
            if ( MInfo.nBitsReceived != (40 - bcnt) ) // not 5 bytes answered
            {
               status = MI_BITCOUNTERR;
            } 
            else 
            {
               byteOffset = 0;
               if ( nbits != 0 )           // last byte was not complete
               {
                  snr_in[nbytes - 1] = snr_in[nbytes - 1] | MRcvBuffer[0];
                  byteOffset = 1;
               }
               for ( i =0; i < (4 - nbytes); i++)     
               {
                  snr_in[nbytes + i] = MRcvBuffer[i + byteOffset];
               }
     
               if (status != MI_COLLERR ) // no error and no collision
               {
                  // SerCh check
                  snr_crc = snr_in[0] ^ snr_in[1] ^ snr_in[2] ^ snr_in[3];
                  snr_check = MRcvBuffer[MInfo.nBytesReceived - 1];
                  if (snr_crc != snr_check)
                  {
                     status = MI_SERNRERR;
                  } 
                  else   
                  {
                     complete = 1;
                  }
               }
               else                   // collision occured
               {
                  bcnt = bcnt + MInfo.collPos - nbits;
                  status = MI_OK;
               }
            }
        }
      }
   }
   if (status == MI_OK)
   {
      // transfer snr_in to snr
      memcpy(snr,snr_in,4);
   }
   else
   {
      memcpy(snr,"0000",4);
   }

   //----------------------Einstellungen aus Initialisierung ruecksetzen 
   ClearBitMask(RegDecoderControl,0x20); // ZeroAfterColl disable
   
   return status;  
}

///////////////////////////////////////////////////////////////////////
//          M I F A R E    S E L E C T 
// for std. select
///////////////////////////////////////////////////////////////////////
char Mf500PiccSelect(unsigned char *snr, 
                  unsigned char *sak)
{
   return Mf500PiccCascSelect(0x93,snr,sak); // first cascade level
}

///////////////////////////////////////////////////////////////////////
//          M I F A R E    C A S C A D E D   S E L E C T 
//  for extended serial number
///////////////////////////////////////////////////////////////////////
char Mf500PiccCascSelect(unsigned char select_code, 
                        unsigned char *snr,
                        unsigned char *sak)
{
   char   status = MI_OK; 

   if ((status = Mf500PcdSetDefaultAttrib()) == MI_OK)
   {
      PcdSetTmo(106);
    
      WriteRC(RegChannelRedundancy,0x0F); // RxCRC,TxCRC, Parity enable
      ClearBitMask(RegControl,0x08);    // disable crypto 1 unit
   
      //************* Cmd Sequence ********************************** 
      ResetInfo(MInfo);   
      MSndBuffer[0] = select_code;
      MSndBuffer[1] = 0x70;         // number of bytes send
      
      memcpy(MSndBuffer + 2,snr,4);
      MSndBuffer[6] = MSndBuffer[2] 
                      ^ MSndBuffer[3] 
                      ^ MSndBuffer[4] 
                      ^ MSndBuffer[5];
      MInfo.nBytesToSend   = 7;
      status = PcdSingleResponseCmd(PCD_TRANSCEIVE,
                          MSndBuffer,
                          MRcvBuffer,
                          &MInfo);
   
      *sak = 0;   
      if (status == MI_OK)    // no timeout occured
      {
         if (MInfo.nBitsReceived != 8)    // last byte is not complete
         {
            status = MI_BITCOUNTERR;
         }
         else
         {
            *sak = MRcvBuffer[0];
            memcpy(MLastSelectedSnr,snr,4);            
         }
      }
   }
   return status;
}

///////////////////////////////////////////////////////////////////////
//       M I F A R E   P I C C   A C T I V A T I O N    S E Q E N C E
///////////////////////////////////////////////////////////////////////
char Mf500PiccActivateIdle(unsigned char br,
                           unsigned char *atq, 
                           unsigned char *sak, 
                           unsigned char *uid, 
                           unsigned char *uid_len)
{
  unsigned char cascade_level;
  unsigned char sel_code;
  unsigned char uid_index;
  signed char status;
  unsigned char cmdASEL;

  *uid_len      = 0;

  //call activation with def. divs
  status = Mf500PcdSetDefaultAttrib();
  if (status == MI_OK)
  {
     status = Mf500PiccCommonRequest(PICC_REQIDL,atq);
  }
  if (status == MI_OK)
  {
     if((atq[0] & 0x1F) == 0x00) // check lower 5 bits, for tag-type
                                 // all tags within this 5 bits have to
                                 // provide a bitwise anticollision
     {
        status = MI_NOBITWISEANTICOLL;
     }
  }
  if (status == MI_OK)
  {
      //Get UID in 1 - 3 levels (standard, [double], [triple] )
      //-------
      switch(br)
      {
         case 0: cmdASEL = PICC_ANTICOLL1; break;
         default:
              status = MI_BAUDRATE_NOT_SUPPORTED; break;
      }
  }
  if (status == MI_OK)
  {
      cascade_level = 0;
      uid_index     = 0;
      do
      {
        //Select code depends on cascade level

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产大片一区二区| 国产精品99久久久久久久vr| 成人免费在线播放视频| 精品国产99国产精品| 国产三级欧美三级日产三级99 | 欧美日韩一区小说| 日韩久久久精品| 中文字幕av资源一区| 亚洲一区二区视频在线观看| 蜜臀久久久99精品久久久久久| 国产成人在线免费| 欧美日韩精品一区二区三区四区 | 国产一区二区三区香蕉| 91色乱码一区二区三区| 色婷婷精品大在线视频| 日韩精品综合一本久道在线视频| 国产精品丝袜久久久久久app| 一区二区三区久久| 国产成人综合网站| 欧美一区二区三区爱爱| 日韩精品自拍偷拍| 亚洲欧美色图小说| 国产一区二区三区观看| 99精品国产91久久久久久| 日韩一区二区三区电影在线观看| 亚洲人快播电影网| 国产风韵犹存在线视精品| 欧美一级高清大全免费观看| 亚洲毛片av在线| 成人av动漫网站| 久久综合精品国产一区二区三区 | 精品国产免费人成电影在线观看四季| 日韩伦理av电影| 秋霞电影一区二区| 在线欧美日韩国产| 综合激情成人伊人| 福利91精品一区二区三区| 在线成人免费视频| 一区二区三区精品久久久| 成人综合在线网站| 国产亚洲精品免费| 国产在线播放一区二区三区 | 欧美日韩国产精选| 亚洲免费观看视频| 色国产综合视频| 亚洲综合图片区| 91精品国产综合久久蜜臀| 免费高清在线一区| 亚洲精品一区二区三区蜜桃下载| 国产在线国偷精品免费看| 国产欧美日韩麻豆91| 成人一二三区视频| 亚洲最新视频在线观看| 精品视频在线免费观看| 美女视频黄 久久| 国产亚洲精品超碰| 91蜜桃免费观看视频| 亚洲www啪成人一区二区麻豆| 精品日韩在线观看| 岛国一区二区三区| 一区二区三区视频在线看| 日韩手机在线导航| 成人永久看片免费视频天堂| 一区二区三区自拍| 精品久久人人做人人爱| 成人av小说网| 天天操天天综合网| 国产精品天美传媒沈樵| 欧美日韩成人一区| 高清国产一区二区| 日韩精品一卡二卡三卡四卡无卡| 久久久久国产精品免费免费搜索| 91视频国产资源| 久久99国产精品免费网站| 亚洲人成网站色在线观看| 欧美一区二区三区精品| 成人黄色av网站在线| 日本欧洲一区二区| 成人免费在线观看入口| 欧美一级在线免费| 在线精品国精品国产尤物884a| 韩国成人福利片在线播放| 亚洲综合在线五月| 中文av一区特黄| 欧美一区二区高清| 欧美性生交片4| 国产.欧美.日韩| 久久国内精品视频| 一区二区三区日本| 国产精品丝袜一区| 久久蜜桃一区二区| 91精品国产91久久综合桃花| 972aa.com艺术欧美| 国产乱人伦偷精品视频不卡| 日韩电影在线一区| 亚洲国产成人av| 自拍偷拍亚洲激情| 中文字幕精品综合| 国产日本亚洲高清| 2022国产精品视频| 欧美一区二区三区喷汁尤物| 一本在线高清不卡dvd| 国产91精品一区二区| 久久99精品国产麻豆婷婷 | 国产精品天干天干在观线| 日韩亚洲欧美综合| 制服丝袜亚洲网站| 欧美挠脚心视频网站| 在线观看一区二区精品视频| 色婷婷久久久久swag精品| 91亚洲精华国产精华精华液| www.一区二区| a在线欧美一区| 成人av小说网| 91在线视频播放地址| 99久久精品免费| 91玉足脚交白嫩脚丫在线播放| 成人av在线电影| 91在线国内视频| 在线观看国产91| 欧美乱熟臀69xxxxxx| 日韩欧美综合在线| 欧美tickling网站挠脚心| xf在线a精品一区二区视频网站| 日韩欧美国产1| 久久久影视传媒| 欧美激情在线看| 中文字幕一区二区日韩精品绯色| 最近日韩中文字幕| 一区二区高清在线| 日韩不卡在线观看日韩不卡视频| 七七婷婷婷婷精品国产| 麻豆91免费观看| 国产精品白丝jk白祙喷水网站| 成人免费毛片aaaaa**| 99精品黄色片免费大全| 欧美三级视频在线| 欧美成人精精品一区二区频| 日本一区二区三区免费乱视频| 日韩一区欧美小说| 亚洲www啪成人一区二区麻豆| 久久国产福利国产秒拍| 成人av网址在线| 欧美老肥妇做.爰bbww视频| 精品久久久久久亚洲综合网| 国产精品福利一区| 五月激情综合色| 久草精品在线观看| av综合在线播放| 这里只有精品视频在线观看| 26uuu精品一区二区三区四区在线| 国产精品久久久久久久久搜平片| 亚洲一级二级在线| 国产精品一区二区三区网站| 欧美亚洲国产一区二区三区va| 欧美一二三区在线| 中文字幕一区二区在线播放| 美女mm1313爽爽久久久蜜臀| 国内精品在线播放| 欧美性三三影院| 国产欧美综合在线| 日韩不卡一区二区| 成人av在线播放网址| 日韩欧美卡一卡二| 依依成人精品视频| 久久aⅴ国产欧美74aaa| 色综合久久88色综合天天 | 美女尤物国产一区| 91丨九色丨蝌蚪丨老版| 欧美不卡123| 一区二区三区美女| 成人国产精品免费| 精品国产青草久久久久福利| 亚洲综合色噜噜狠狠| 成人丝袜视频网| 精品日产卡一卡二卡麻豆| 亚洲一区在线观看免费观看电影高清 | 蜜臀精品一区二区三区在线观看| 97久久人人超碰| 国产精品区一区二区三| 狠狠网亚洲精品| 欧美日本在线播放| 亚洲精品美国一| 本田岬高潮一区二区三区| 久久久久久久久久久久久夜| 免费人成在线不卡| 欧美日韩亚州综合| 亚洲国产日韩综合久久精品| 成人高清视频免费观看| 久久久久国产免费免费| 国内精品视频666| 欧美成人vr18sexvr| 青青国产91久久久久久| 欧美久久婷婷综合色| 亚洲午夜av在线| 欧美日韩色一区| 亚洲一区二区四区蜜桃| 欧美三级中文字| 亚洲第一会所有码转帖| 欧美日韩一区二区欧美激情|