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

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

?? pcdutils.c

?? RC500的mifare卡開發備用程序及電路
?? C
?? 第 1 頁 / 共 2 頁
字號:
///////////////////////////////////////////////////////////////////////////////
//    Copyright (c), Philips Semiconductors Gratkorn
//
//                  (C)PHILIPS Electronics N.V.2000
//                     All rights are reserved. 
//  Philips reserves the right to make changes without notice at any time.
// Philips makes no warranty, expressed, implied or statutory, including but
// not limited to any implied warranty of merchantibility or fitness for any
//particular purpose, or that the use will not infringe any third party patent,
// copyright or trademark. Philips must not be liable for any loss or damage
//                          arising from its use.
///////////////////////////////////////////////////////////////////////////////
#define DLL_EXPORT      // library source module definition

#include <string.h>
#include <stdio.h>

#include <RICReg.h>

#include <PcdUtils.h>
#include <MfRc500.h>
#include <RcCommunication.h>
#include <MfErrNo.h>
#include <CPURegs.h>
#include <uCInit.h>

volatile unsigned char RxTxBuffer[MAX_RF_BUF_SIZE];

// communication info stucture
static   volatile MfCmdInfo     *MpIsrInfo = 0; 
// ISR send buffer
static   volatile unsigned char *MpIsrOut = 0; 
// ISR receive buffer
static   volatile unsigned char *MpIsrIn = 0;   

///////////////////////////////////////////////////////////////////////
//         Set   Timeout   LENGTH
///////////////////////////////////////////////////////////////////////
void PcdSetTmo(unsigned char tmoLength)
{
   switch(tmoLength)
   {  // timer clock frequency 13,56 MHz
      case 1:                         // short timeout (1,0 ms)
         WriteRC(RegTimerClock,0x07); // TAutoRestart=0,TPrescale=128
         WriteRC(RegTimerReload,0x6a);// TReloadVal = 'h6a =106(dec) 
         break;
      case 2:                       // medium timeout (1,5 ms)
         WriteRC(RegTimerClock,0x07); // TAutoRestart=0,TPrescale=128
         WriteRC(RegTimerReload,0xa0);// TReloadVal = 'ha0 =160(dec) 
         break;
      case 3:                       // long timeout (6 ms)
         WriteRC(RegTimerClock,0x09); // TAutoRestart=0,TPrescale=4*128
         WriteRC(RegTimerReload,0xa0);// TReloadVal = 'ha0 =160(dec) 
         break;
      case 4:                       // long timeout (9.6 ms)
         WriteRC(RegTimerClock,0x09); // TAutoRestart=0,TPrescale=4*128
         WriteRC(RegTimerReload,0xff);// TReloadVal = 'ff =255(dec) 
         break;
      default:                       // short timeout (1,0 ms)
         WriteRC(RegTimerClock,0x07); // TAutoRestart=0,TPrescale=128
         WriteRC(RegTimerReload,tmoLength);// TReloadVal = tmoLength
         break;
   }     
}

//////////////////////////////////////////////////////////////////////
//   SET   A   BIT   MASK 
///////////////////////////////////////////////////////////////////////
void SetBitMask(unsigned char reg,unsigned char mask) // 
{
   char   tmp    = 0x0;

   tmp = ReadRC(reg);
   WriteRC(reg,tmp | mask);  // set bit mask
}

//////////////////////////////////////////////////////////////////////
//   CLEAR   A   BIT   MASK 
///////////////////////////////////////////////////////////////////////
void ClearBitMask(unsigned char reg,unsigned char mask) // 
{
   char   tmp    = 0x0;

   tmp = ReadRC(reg);
   WriteRC(reg,tmp & ~mask);  // clear bit mask
}

///////////////////////////////////////////////////////////////////////
//                  FLUSH    FIFO
///////////////////////////////////////////////////////////////////////
void FlushFIFO(void)
{  
   SetBitMask(RegControl,0x01);
}

///////////////////////////////////////////////////////////////////////////////
//                       Interrupt Handler RIC
///////////////////////////////////////////////////////////////////////////////
void SingleResponseIsr(void)
{
   static unsigned char  irqBits;
   static unsigned char  irqMask;            
   static unsigned char  oldPageSelect;
   static unsigned char  nbytes;
   static unsigned char  cnt;

   if (MpIsrInfo && MpIsrOut && MpIsrIn)  // transfer pointers have to be set
                                          // correctly
   {
      oldPageSelect = ReadRawRC(RegPage); // save old page select 
                                          // Attention: ReadRC cannnot be
                                          // used because of the internal
                                          // write sequence to the page 
                                          // reg
      WriteRawRC(RegPage,0x80);                   // select page 0 for ISR
      while( (ReadRawRC(RegPrimaryStatus) & 0x08)) // loop while IRQ pending
      {
         irqMask = ReadRawRC(RegInterruptEn); // read enabled interrupts
         // read pending interrupts
         irqBits = ReadRawRC(RegInterruptRq) & irqMask;
         MpIsrInfo->irqSource |= irqBits; // save pending interrupts
         //************ LoAlertIRQ ******************
         if (irqBits & 0x01)    // LoAlert
         {  
            nbytes = MFIFOLength - ReadRawRC(RegFIFOLength);
            // less bytes to send, than space in FIFO
            if ((MpIsrInfo->nBytesToSend - MpIsrInfo->nBytesSent) <= nbytes)
            {
               nbytes = MpIsrInfo->nBytesToSend - MpIsrInfo->nBytesSent;
             WriteRawRC(RegInterruptEn,0x01); // disable LoAlert IRQ
            }
            // write remaining data to the FIFO
            for ( cnt = 0;cnt < nbytes;cnt++)
            {
               WriteRawRC(RegFIFOData,MpIsrOut[MpIsrInfo->nBytesSent]);
               MpIsrInfo->nBytesSent++;
            }
            WriteRawRC(RegInterruptRq,0x01);  // reset IRQ bit
         }
      
         //************* TxIRQ Handling **************
         if (irqBits & 0x10)       // TxIRQ
         {
            WriteRawRC(RegInterruptRq,0x10);    // reset IRQ bit 
            WriteRawRC(RegInterruptEn,0x82);    // enable HiAlert Irq for
                                                // response
            if (MpIsrInfo->cmd == PICC_ANTICOLL1) // if cmd is anticollision
            {                                     // switch off parity generation
               WriteRC(RegChannelRedundancy,0x02); // RxCRC and TxCRC disable, parity disable               
               WriteRawRC(RegPage,0x00);  // reset page address
            }
         }

         //************* HiAlertIRQ or RxIRQ Handling ******************
         if (irqBits & 0x0E) // HiAlert, Idle or RxIRQ
         {
            // read some bytes ( length of FIFO queue)              
            // into the receive buffer  讀取一些字節(FIFO隊列的長度)到接收緩存器
            nbytes = ReadRawRC(RegFIFOLength);	//從FIFO讀取數據并且存入接收緩存器
            // read date from the FIFO and store them in the receive buffer
            for ( cnt = 0; cnt < nbytes; cnt++)               
            {
               MpIsrIn[MpIsrInfo->nBytesReceived] = ReadRawRC(RegFIFOData);
               MpIsrInfo->nBytesReceived++;
            }
            WriteRawRC(RegInterruptRq,0x0A & irqBits);  
                                       // reset IRQ bit - idle irq will
                                       // be deleted in a seperate section
         }   
   
         //************** IdleIRQ Handling ***********
         if (irqBits & 0x04)     // Idle IRQ
         {
            WriteRawRC(RegInterruptEn,0x20); // disable Timer IRQ
            WriteRawRC(RegInterruptRq,0x20); // disable Timer IRQ request
            irqBits &= ~0x20;   // clear Timer IRQ in local var
            MpIsrInfo->irqSource &= ~0x20; // clear Timer IRQ in info var
                                        // when idle received, then cancel
                                        // timeout
            WriteRawRC(RegInterruptRq,0x04);  // reset IRQ bit 
            // status should still be MI_OK
            // no error - only used for wake up
         }
       
         //************* TimerIRQ Handling ***********
         if (irqBits & 0x20)       // timer IRQ
         {
            WriteRawRC(RegInterruptRq,0x20); // reset IRQ bit 
            MpIsrInfo->status = MI_NOTAGERR; // timeout error
                                             // otherwise ignore the interrupt
         }
         
      }
      WriteRawRC(RegPage,oldPageSelect | 0x80);
   }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一区二区三区中文字幕| 免费成人在线影院| 一区二区日韩av| 麻豆精品一区二区av白丝在线| 国产a精品视频| 欧美剧情片在线观看| 国产欧美综合色| 日日噜噜夜夜狠狠视频欧美人| 国产99久久久久| 91麻豆精品国产91久久久使用方法 | 亚洲一级二级在线| 国产在线精品一区在线观看麻豆| 在线亚洲人成电影网站色www| 2023国产精品视频| 亚洲成av人片一区二区三区| av电影在线观看一区| 欧美成人激情免费网| 夜夜嗨av一区二区三区四季av| 国产福利91精品一区二区三区| 3d动漫精品啪啪一区二区竹菊| 综合久久一区二区三区| 国产激情精品久久久第一区二区 | 亚洲va中文字幕| 色婷婷久久久亚洲一区二区三区 | 日韩三级.com| 日韩国产一区二| 欧美日韩一本到| 一区二区三区精品| 99久免费精品视频在线观看 | 国产999精品久久| 久久网站热最新地址| 全国精品久久少妇| 欧美人妖巨大在线| 午夜电影网一区| 91精品国产一区二区三区| 亚洲一区视频在线| 欧美怡红院视频| 一级精品视频在线观看宜春院| 91视频观看视频| 亚洲乱码国产乱码精品精小说| 99久久99久久精品免费观看| 中文字幕一区二区三区av| 本田岬高潮一区二区三区| **性色生活片久久毛片| 成人免费视频网站在线观看| 国产精品久久午夜| 99久久久国产精品免费蜜臀| 亚洲色图视频免费播放| 色国产综合视频| 日韩**一区毛片| 日韩精品在线网站| 国产凹凸在线观看一区二区| 日韩美女啊v在线免费观看| 色视频欧美一区二区三区| 亚洲一区二区综合| 欧美一区欧美二区| 国产做a爰片久久毛片| 欧美激情一二三区| aa级大片欧美| 五月天精品一区二区三区| 精品国产一区久久| 成人国产精品视频| 午夜国产精品一区| 国产亚洲1区2区3区| 色综合久久精品| 久久99国内精品| 亚洲欧美国产高清| 欧美成人aa大片| 色婷婷狠狠综合| 久久国产精品无码网站| 国产精品成人一区二区三区夜夜夜| 欧美三级电影在线观看| 国产91丝袜在线18| 天天免费综合色| 亚洲欧洲日产国产综合网| 欧美高清激情brazzers| 粉嫩久久99精品久久久久久夜| 亚洲mv在线观看| 国产精品国产三级国产有无不卡 | bt7086福利一区国产| 亚洲三级在线观看| 欧美日韩成人综合| 国产在线精品一区二区不卡了| 国产精品久久精品日日| 色狠狠色噜噜噜综合网| 国产精品1区2区3区在线观看| 成人欧美一区二区三区视频网页| 色天天综合久久久久综合片| 美女精品一区二区| 国产精品久线在线观看| 欧美久久婷婷综合色| 国产精品一区二区男女羞羞无遮挡| 最好看的中文字幕久久| 制服.丝袜.亚洲.中文.综合| 国产成人av一区二区三区在线| 亚洲国产日韩精品| 久久精品水蜜桃av综合天堂| 欧美午夜不卡视频| 国产精品99久| 日本成人超碰在线观看| 国产精品久久福利| 久久久综合九色合综国产精品| 国产成人免费av在线| 午夜激情一区二区| 综合婷婷亚洲小说| 中文字幕 久热精品 视频在线 | 91在线视频播放| 精品一二线国产| 午夜伦欧美伦电影理论片| 国产欧美日韩卡一| 日韩一区二区免费在线观看| 91丨porny丨国产| 狠狠久久亚洲欧美| 青青草视频一区| 亚洲一区二区三区美女| 国产精品美女久久福利网站| 精品久久久久久久久久久院品网| 在线不卡欧美精品一区二区三区| 国产成人精品免费| 粉嫩绯色av一区二区在线观看| 免费xxxx性欧美18vr| 午夜精品久久久久久久久久久 | eeuss鲁片一区二区三区在线观看| 日韩精品久久久久久| 亚洲国产wwwccc36天堂| 亚洲欧美精品午睡沙发| 亚洲免费在线播放| 欧美韩国日本不卡| 久久精品人人爽人人爽| www国产成人免费观看视频 深夜成人网| 欧美色国产精品| 精品视频在线看| 欧美精品自拍偷拍动漫精品| 欧美日韩一本到| 91精品国产综合久久久蜜臀图片| 欧美日本一区二区三区四区| 欧美日韩电影在线| 欧美日韩的一区二区| 6080亚洲精品一区二区| 色噜噜狠狠色综合中国| 欧美一三区三区四区免费在线看| 91精品免费观看| 精品女同一区二区| 欧美xxxxx牲另类人与| 日韩欧美美女一区二区三区| 久久综合一区二区| 久久免费美女视频| 久久综合色之久久综合| 国产精品欧美综合在线| 亚洲另类中文字| 日日夜夜精品视频天天综合网| 蜜桃视频一区二区三区在线观看| 精品一区二区久久久| 激情伊人五月天久久综合| www.亚洲激情.com| 在线免费不卡电影| 欧美一级日韩免费不卡| 国产无一区二区| 亚洲乱码精品一二三四区日韩在线| 又紧又大又爽精品一区二区| 五月激情丁香一区二区三区| 精品在线播放午夜| 成a人片国产精品| 欧美精品在线一区二区三区| 久久久久久久久岛国免费| 亚洲成人精品一区| 狠狠久久亚洲欧美| 91在线观看免费视频| 色综合久久久久综合99| 欧美一二三区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲一区二区视频在线观看| 国产美女久久久久| 一本到高清视频免费精品| 日韩一区二区免费高清| 中文字幕亚洲在| 精品在线播放午夜| 在线精品国精品国产尤物884a| 国产日本亚洲高清| 亚洲综合成人在线| 国产毛片精品一区| 欧美另类久久久品| 中文av一区二区| 免费观看在线综合| 7777精品伊人久久久大香线蕉的| 国产农村妇女精品| 日韩成人午夜精品| 成人午夜av影视| 精品国产乱码久久久久久浪潮 | 国产精品三级av在线播放| 亚洲国产毛片aaaaa无费看 | 欧美中文字幕亚洲一区二区va在线| 6080亚洲精品一区二区| 国产精品每日更新| 久久福利视频一区二区| 欧美无乱码久久久免费午夜一区 | 精品乱人伦一区二区三区| 欧美日韩国产一级二级| 亚洲欧美激情在线| 成人性生交大片免费看中文 |