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

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

?? rc500.c

?? RC500的全部操作,讀卡
?? C
?? 第 1 頁 / 共 3 頁
字號:
        {
            status = MI_BITCOUNTERR;
        }
        else                    
        {
            SerBuffer[0] &= 0x0f; 
            switch(SerBuffer[0])
            {
                case 0x00: 
                    status = MI_NOTAUTHERR;
                    break;
                case 0x0a:
                    status = MI_OK;
                    break;
                case 0x01:
                    status = MI_VALERR;
                    break;
                default:
                    status = MI_CODEERR;
                    break;
            }
        }
    }

    if ( status == MI_OK)
    {
        M500PcdSetTmo(3);    
        ResetInfo(MInfo);   
        memcpy(SerBuffer,value,4);
        MInfo.nBytesToSend   = 4;
        status = M500PcdCmd(PCD_TRANSCEIVE,
                            SerBuffer,
                            &MInfo);
        
        if (status == MI_OK)    
        {
            if (MInfo.nBitsReceived != 4)   
            {
                status = MI_BITCOUNTERR;
            }
            else                    
            {
                SerBuffer[0] &= 0x0f; 
                switch(SerBuffer[0])
                {
                    case 0x00: 
                        status = MI_NOTAUTHERR;
                        break;
                    case 0x01:
                        status = MI_VALERR;
                        break;
                    default:
                        status = MI_CODEERR;
                        break;
                }
            }
        }        
        else
        {
            if (status == MI_NOTAGERR )
                status = MI_OK;  
        }
    }
    if (status == MI_OK)
    {
        ResetInfo(MInfo);   
        SerBuffer[0] = PICC_TRANSFER;      
        SerBuffer[1] = trans_addr;
        MInfo.nBytesToSend   = 2;
        status = M500PcdCmd(PCD_TRANSCEIVE,
                            SerBuffer,
                            &MInfo);
        if (status != MI_NOTAGERR)  
        {
            if (MInfo.nBitsReceived != 4)
            {
                status = MI_BITCOUNTERR;
            }
            else                   
            {
                SerBuffer[0] &= 0x0f; 
                switch(SerBuffer[0])
                {
                    case 0x00: 
                        status = MI_NOTAUTHERR;
                        break;
                    case 0x0a:
                        status = MI_OK;
                        break;
                    case 0x01:
                        status = MI_VALERR;
                        break;
                    default:
                        status = MI_CODEERR;
                        break;
                }
            }
        }        
    }
    return status;
}*/

///////////////////////////////////////////////////////////////////////
// Set card in HALT-state
// 終止卡的操作
///////////////////////////////////////////////////////////////////////
char M500PiccHalt(void)
{
    char idata status = MI_CODEERR;

    // ************* Cmd Sequence ********************************** 
    ResetInfo(MInfo);   
    SerBuffer[0] = PICC_HALT ;      // Halt command code
    SerBuffer[1] = 0x00;            // dummy address
    MInfo.nBytesToSend = 2;
    status = M500PcdCmd(PCD_TRANSCEIVE,
                       SerBuffer,
                       &MInfo);   
    if (status)
    {
        // timeout error ==> no NAK received ==> OK
        if (status == MI_NOTAGERR || status == MI_ACCESSTIMEOUT)
        {
            status = MI_OK;
        }
    }
    //reset command register - no response from tag
    WriteIO(RegCommand,PCD_IDLE);	//啟動和停止命令的執行
    return status; 
}

///////////////////////////////////////////////////////////////////////
// Reset the MF RC500
//重啟RC500 
///////////////////////////////////////////////////////////////////////
char M500PcdReset(void)
{
    char idata status = MI_OK;
    unsigned int idata timecnt=0;
    
    RC500RST = 0;  
    delay_ms(25); 
    RC500RST = 1;  
    delay_ms(10); 
    RC500RST = 0;  
    delay_ms(10);
    timecnt=1000;
    while ((ReadIO(RegCommand) & 0x3F) && timecnt--);
    if(!timecnt)
    {
        status = MI_RESETERR;
    }
    if (status == MI_OK)
    {
        //WriteIO(RegPage,0x80);
        if (ReadIO(RegCommand) != 0x00)
        {                           
            status = MI_INTERFACEERR;
        }
    }
    return status;
}

///////////////////////////////////////////////////////////////////////
// Configures the MF RC500
///////////////////////////////////////////////////////////////////////
char M500PcdConfig(void)
{
    char idata status;

    if ((status = M500PcdReset()) == MI_OK)
    {
        WriteIO(RegClockQControl,0x00);
        WriteIO(RegClockQControl,0x40);
        delay_100us();  
        ClearBitMask(RegClockQControl,0x40);
        WriteIO(RegBitPhase,0xAD);      
        WriteIO(RegRxThreshold,0xFF);   
        WriteIO(RegRxControl2,0x01);
        WriteIO(RegFIFOLevel,0x1A);
        WriteIO(RegTimerControl,0x02);
        WriteIO(RegIRqPinConfig,0x03); 
        M500PcdRfReset(1);               
    }
    return status;
}

///////////////////////////////////////////////////////////////
// Key loading into the MF RC500's EEPROM
//將一個密匙從E2PROM 復制到密匙緩沖區
///////////////////////////////////////////////////////////////		            
/*char M500PcdLoadKeyE2(unsigned char key_type,
                       unsigned char sector,
                       unsigned char *uncoded_keys)
{
    signed char status = MI_OK;
    unsigned int e2addr = 0x80 + sector * 0x18;
    unsigned char coded_keys[12];

    if (key_type == PICC_AUTHENT1B)
    {
        e2addr += 12;           // key B offset
    }
    if ((status = M500HostCodeKey(uncoded_keys,coded_keys)) == MI_OK)
    {
        status = PcdWriteE2(e2addr,12,coded_keys);
    }
    return status;
}*/

///////////////////////////////////////////////////////////////////////
// Write the MF RC500's EEPROM
//從FIFO 緩沖區獲得數據并寫入內部 E2PROM
///////////////////////////////////////////////////////////////////////
/*char PcdWriteE2(unsigned int startaddr,
                unsigned char length,
                unsigned char* _data)
{
    char status = MI_OK;
    ResetInfo(MInfo);   
    SerBuffer[0] = startaddr & 0xFF;
    SerBuffer[1] = (startaddr >> 8) & 0xFF;
    memcpy(SerBuffer + 2,_data,length);

    MInfo.nBytesToSend   = length + 2;
         
    status = M500PcdCmd(PCD_WRITEE2,
                       SerBuffer,
                       &MInfo); 
    return status;
} */  

///////////////////////////////////////////////////////////////////////
// Select Command defined in ISO14443(MIFARE)
///////////////////////////////////////////////////////////////////////
char M500PcdMfOutSelect(unsigned char type)
{
    WriteIO(RegMfOutSelect,type&0x7);
    return MI_OK;
}

///////////////////////////////////////////////////////////////////////
// Request Command defined in ISO14443(MIFARE)
// Request,Anticoll,Select,return CardType(2 bytes)+CardSerialNo(4 bytes)    
// 尋卡,防沖突,選擇卡    返回卡類型(2 bytes)+ 卡系列號(4 bytes)
///////////////////////////////////////////////////////////////////////
char M500PiccCommonRequest(unsigned char req_code,unsigned char *atq)
{
    char idata status = MI_OK;
	
    M500PcdSetTmo(3);
    WriteIO(RegChannelRedundancy,0x03);
    ClearBitMask(RegControl,0x08);
    WriteIO(RegBitFraming,0x07);     
    SetBitMask(RegTxControl,0x03);     
    ResetInfo(MInfo);
    SerBuffer[0] = req_code;
    MInfo.nBytesToSend = 1;   
    
    status = M500PcdCmd(PCD_TRANSCEIVE,SerBuffer,&MInfo);
    if (status)     
    {
        *atq = 0;
    } 
    else 
    {
        if (MInfo.nBitsReceived != 16) 
        {
            *atq = 0;
            status = MI_BITCOUNTERR;
        } 
        else 
        {
            status = MI_OK;
            memcpy(atq,SerBuffer,2);
        }
    }
    return status; 
}

///////////////////////////////////////////////////////////////////
// Cascaded Anti-Collision Command defined in ISO14443(MIFARE)
// 防沖突 讀卡的系列號 MLastSelectedSnr
///////////////////////////////////////////////////////////////////
char M500PiccCascAnticoll (unsigned char bcnt,unsigned char *snr)       
{
    char idata status = MI_OK;
    char idata snr_in[4];    
    char idata nbytes = 0;
    char idata nbits = 0;
    char idata complete = 0;
    char idata i        = 0;
    char idata byteOffset = 0;
    unsigned char dummyShift1;       
    unsigned char dummyShift2;      
    
    M500PcdSetTmo(106);
    memcpy(snr_in,snr,4);   
   
    WriteIO(RegDecoderControl,0x28); 
    ClearBitMask(RegControl,0x08);   
    complete = 0;
    while (!complete && (status == MI_OK) )
    {
        ResetInfo(MInfo);           
        WriteIO(RegChannelRedundancy,0x03);
        nbits = bcnt % 8;  
        if(nbits)
        {
            WriteIO(RegBitFraming,nbits << 4 | nbits); 
            nbytes = bcnt / 8 + 1;   
            if (nbits == 7)
            {
                MInfo.cmd = PICC_ANTICOLL1;  
                WriteIO(RegBitFraming,nbits); 
            }
        }  
        else
        {
            nbytes = bcnt / 8;
        }
        SerBuffer[0] = 0x93;
        SerBuffer[1] = 0x20 + ((bcnt/8) << 4) + nbits;
               
        for (i = 0; i < nbytes; i++)  
        {
            SerBuffer[i + 2] = snr_in[i];
        }
        MInfo.nBytesToSend   = 2 + nbytes;   
 
        status = M500PcdCmd(PCD_TRANSCEIVE,SerBuffer,&MInfo);
        if (nbits == 7)
        {
            dummyShift1 = 0x00;
            for (i = 0; i < MInfo.nBytesReceived; i++)
            {
                dummyShift2 = SerBuffer[i];
                SerBuffer[i] = (dummyShift1 >> (i+1)) | (SerBuffer[i] << (7-i));
                dummyShift1 = dummyShift2;
            }
            MInfo.nBitsReceived -= MInfo.nBytesReceived;       
            if ( MInfo.collPos ) MInfo.collPos += 7 - (MInfo.collPos + 6) / 9;
        }
        if ( status == MI_OK || status == MI_COLLERR)    
        {
            if ( MInfo.nBitsReceived != (40 - bcnt) )
            {
                status = MI_BITCOUNTERR; 
            } 
            else 
            {
                byteOffset = 0;
                if( nbits != 0 ) 
                {
                    snr_in[nbytes - 1] = snr_in[nbytes - 1] | SerBuffer[0];
                    byteOffset = 1;
                }

                for ( i =0; i < (4 - nbytes); i++)     
                {
                    snr_in[nbytes + i] = SerBuffer[i + byteOffset];
                }
  
                if (status != MI_COLLERR ) 
                {
                    dummyShift2 = snr_in[0] ^ snr_in[1] ^ snr_in[2] ^ snr_in[3];
                    dummyShift1 = SerBuffer[MInfo.nBytesReceived - 1];
                    if (dummyShift2 != dummyShift1)
                    {
                        status = MI_SERNRERR;
                    } 
                    else   
                    {
                        complete = 1;
                    }
                }
                else                 
                {
                    bcnt = bcnt + MInfo.collPos - nbits;
                    status = MI_OK;
                }
            }
        }
    }
    if (status == MI_OK)
    {
        memcpy(snr,snr_in,4);
    }
    else
    {
        memcpy(snr,"0000",4);
    }
    ClearBitMask(RegDecoderControl,0x20); 
   
    return status;  
}

//////////////////////////////////////////////////////////////////
// Cascaded Select command defined in ISO14443(MIFARE)
// 選擇卡 Select Card
//////////////////////////////////////////////////////////////////
char M500PiccCascSelect(unsigned char *snr,unsigned char *sak)
{
    char idata status = MI_OK; 
 
    M500PcdSetTmo(106);
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合在线观看色| 日日夜夜免费精品视频| 国产人成一区二区三区影院| 精品国产91九色蝌蚪| 国产色91在线| 久久99精品久久久久久国产越南 | 1024精品合集| 国产精品不卡一区| 亚洲国产va精品久久久不卡综合| 亚洲国产成人高清精品| 久久国产精品色| 99这里只有精品| 欧美日韩一区不卡| 精品av久久707| 一区二区在线免费观看| 玖玖九九国产精品| 91视视频在线直接观看在线看网页在线看| 一本久久综合亚洲鲁鲁五月天| 欧美美女一区二区在线观看| 欧美草草影院在线视频| 一区二区三区在线观看国产| 日韩高清欧美激情| 99久久精品一区二区| 精品久久久三级丝袜| 亚洲视频中文字幕| 精品综合久久久久久8888| 91蜜桃网址入口| 日韩女优制服丝袜电影| 亚洲国产精品尤物yw在线观看| 国产精品一级黄| 3751色影院一区二区三区| 另类小说欧美激情| 91免费看`日韩一区二区| 精品国产乱码久久久久久牛牛| 一区二区三区欧美久久| av影院午夜一区| 国产午夜精品一区二区三区四区| 首页综合国产亚洲丝袜| 欧美日韩精品欧美日韩精品一 | 日韩一区二区免费电影| 一区二区三区毛片| 蜜臀久久99精品久久久久宅男| 亚洲图片自拍偷拍| 成人看片黄a免费看在线| 欧美电影免费观看高清完整版在 | 欧美精品粉嫩高潮一区二区| 国产精品欧美极品| 97精品国产露脸对白| 成人免费在线视频| 99视频精品全部免费在线| 国产精品动漫网站| 91污片在线观看| 亚洲精品成人悠悠色影视| 91蝌蚪国产九色| 亚洲国产色一区| 4hu四虎永久在线影院成人| 美女一区二区三区在线观看| 精品日韩一区二区三区| 粉嫩在线一区二区三区视频| 国产精品色哟哟| 欧美色图激情小说| 日韩av一区二区三区| 久久久蜜桃精品| 91蜜桃视频在线| 一区二区国产视频| 久久众筹精品私拍模特| av午夜一区麻豆| 丝袜美腿亚洲一区| 国产欧美日韩一区二区三区在线观看| 91在线免费看| 久久66热re国产| 国产精品国产三级国产三级人妇 | 风流少妇一区二区| 五月综合激情网| 欧美激情自拍偷拍| 欧美一二三在线| 日本高清不卡aⅴ免费网站| 国内久久婷婷综合| 亚洲小说欧美激情另类| 国产精品丝袜91| 欧美成人a在线| 欧美电影影音先锋| 日本高清免费不卡视频| 成人高清伦理免费影院在线观看| 午夜激情久久久| 亚洲精品久久久久久国产精华液| 精品国产sm最大网站免费看| 91久久精品日日躁夜夜躁欧美| 国产精品888| 日韩avvvv在线播放| 欧美大胆一级视频| 成人午夜视频福利| 一个色妞综合视频在线观看| 精品国产乱码久久久久久免费| 91丝袜国产在线播放| 色天天综合久久久久综合片| 亚洲福利视频导航| 亚洲日本在线天堂| 日本一区二区三级电影在线观看| 欧美巨大另类极品videosbest| 麻豆精品蜜桃视频网站| 国产三级久久久| 777午夜精品免费视频| 91色porny蝌蚪| 色哟哟国产精品| 日本精品裸体写真集在线观看 | 中文字幕不卡三区| 精品福利二区三区| 欧美电视剧在线看免费| 日韩精品中午字幕| 日韩欧美一级精品久久| 欧美日韩在线免费视频| 91精品国产色综合久久不卡电影| 欧美性受极品xxxx喷水| 欧美吻胸吃奶大尺度电影 | 日韩欧美国产高清| 久久综合九色综合97婷婷女人| 中文字幕av不卡| 欧美一区二区播放| 一区二区三区在线观看网站| 亚洲人成亚洲人成在线观看图片| 国产精品污www在线观看| 一区二区三区免费| 秋霞电影一区二区| 国产乱人伦精品一区二区在线观看| 国产伦精品一区二区三区免费| 国产成人啪免费观看软件| 在线精品视频免费观看| 日韩精品自拍偷拍| 国产精品久久夜| 五月激情综合色| 国产精品99久久久久久似苏梦涵 | 精品一区二区精品| 在线亚洲人成电影网站色www| 欧美日韩大陆在线| 国产欧美日韩在线| 亚洲va韩国va欧美va精品| 国产激情视频一区二区在线观看| 成人97人人超碰人人99| 久久先锋资源网| 亚洲成a人v欧美综合天堂下载| 看电视剧不卡顿的网站| 欧洲av一区二区嗯嗯嗯啊| 国产欧美日韩精品在线| 一区二区三区在线视频观看| 毛片av一区二区| 91.成人天堂一区| 亚洲欧美另类在线| 成人免费看视频| 久久综合九色综合欧美亚洲| 久久99久国产精品黄毛片色诱| 91精彩视频在线| 亚洲视频在线观看一区| 国产美女娇喘av呻吟久久| 日韩免费高清电影| 日韩中文字幕区一区有砖一区| 在线观看免费亚洲| 一卡二卡三卡日韩欧美| 精品成人一区二区三区四区| 亚洲自拍偷拍麻豆| 色综合激情五月| 伊人开心综合网| 欧美日韩中字一区| 午夜精品福利一区二区三区av| 欧美私模裸体表演在线观看| 性做久久久久久免费观看| 这里只有精品99re| 久久99日本精品| 久久精品在线免费观看| 99久久99久久久精品齐齐| 久久青草欧美一区二区三区| 99视频在线精品| 亚洲一区二区精品久久av| 在线播放91灌醉迷j高跟美女| 蜜桃视频第一区免费观看| 国产欧美一区二区精品性色| 成人美女在线观看| 亚洲精品菠萝久久久久久久| 欧美日韩黄色一区二区| 亚洲国产精品自拍| 久久久久久黄色| av亚洲精华国产精华精| 五月激情综合网| 久久九九影视网| 欧美日韩一区小说| 国内精品视频一区二区三区八戒| 国产欧美一区二区精品性| 一本色道久久综合狠狠躁的推荐| 精品一区二区三区视频| 一级日本不卡的影视| 欧美www视频| 欧美午夜免费电影| 青青草97国产精品免费观看无弹窗版 | 国产日韩欧美一区二区三区综合| 不卡一区在线观看| 久久99精品久久久久久国产越南 | 国产精品一区二区视频| 天堂va蜜桃一区二区三区| 中文字幕一区在线观看| 精品国产欧美一区二区|