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

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

?? h4100.c

?? H4100射頻卡驅動程序
?? C
字號:
/******************************************************************************
*
* ID 卡讀卡模塊程序!
*------------------------------------------------------------------------------
* 當前版本:2.1.3
* 作    者:陳兆紅
* 完成日期:2005年10月15日
******************************************************************************/
#include "h4100.h"

/******************************************************************************
function: RF_Init
desc    : initial IO ports and Timer0 to read card
Input   : none
return  : none
******************************************************************************/
void RF_Init(void)
{
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 460.800 kHz
//  _CLI();
   
    TCCR0=0x02;     // System Clock/8
    TCNT0=0x00;      
    RF_EN;          // 1=>PA.5,設置為輸出,使能 RF

    DIS_TIMER0;     // 屏蔽定時器 0 中斷
    TIFR = 0x02;    // 寫入1,清除溢出標志
    RF_DIR0;        // PA.6設置為輸入

//    _SEI();
}

/******************************************************************************
function: ReadCard
desc    : implement Manchester decode to read h4100 ID Card,using Timer0
Input   : a uchar pointer to return 5 bytes card data
return  : Read card OK - 1; Read card error - 0.
******************************************************************************/
uchar ReadCard(uchar *CardData )
{
    uchar i;
    uchar j;
    uchar k;
    uchar rowCheck;            //row parity check
    uchar colCheck;            //column parity check
    uchar startFlag;           //judge the leading 
    uchar temp;                //
    
    RF_Init();
    
//    _CLI();    
    for ( k=0; k<20; k++ )     //if parity error, retry 20 times
    {
        rowCheck=0;
        colCheck=0;
        temp=0;        
        for(i=0; i<6; i++) CardData[i]=0;
                
        for(i=0; i < 100; i++)                     //try 100 times
        {
            startFlag=0;

            TIFR = 0x02;              //Clear T0 overflow int
            TCNT0 = 40;               //open timer0,longer than 1 bit time and less than 2 bit time
            
            while ( (TIFR & 2) == 0 ) //timer over
            {        
                if ( !RF_DATA )       //if not a 2 bit long high level
                {
                    startFlag=1;
                    break;                
                }
            }
            
            TIFR = 0x02;              //Clear T0 overflow int
            
            TCNT0 = 200;                 
            
            if ( startFlag )
            {
                continue;
            }
            
            while ( (TIFR & 2) == 0 )           //timer over
            {
                if ( !RF_DATA )
                {  break;   }
            }
            
            TIFR = 0x02;                 //Clear T0 overflow int
            TCNT0 = TCNT0_15BIT;                // 1 bit time
            
            if ( RF_DATA)
            {   continue;  }
                    
            for ( j=0; j<8; j++ )
            {
                while ( (TIFR & 2) == 0 )           //timer over
                {
                    
                }           
                
                TCNT0 = 0;                   //overtime counter
                TIFR = 0x02;                 //Clear T0 overflow int
                temp = RF_DATA;   
                while ( (temp == RF_DATA) && (!(TIFR&2))  )  ;        //wait level changed
                
                if ( (!temp)||(TIFR&2) )      //if 9 bits not all 1
                {
                    startFlag = 1;
                    break;
                }
                TIFR = 0x02;                  //Clear T0 overflow int
                TCNT0 = TCNT0_15BIT;          // 1 bit time                        
            }
            
            if ( startFlag )                  //not start head
            {   continue;  }
            else
            {   break;     }        
            
        }
        if ( startFlag || (i>98) )             // ??
        {
            TCNT0 = 0;
            TIFR = 0x02;                 //Clear T0 overflow int
            //_SEI();
            return 0;
        }
        
        rowCheck=0;
        //start receive data
        for ( i=0; i < 5 ; i++ )
        {
            
            for (j=0; j< 10; j++)
            {                
                while ( (TIFR & 2) == 0 )           //timer over
                {                        
                }           
                
                TCNT0 = TCNT0_1BIT;                        //overtime counter
                TIFR = 0x02;                
                
                temp = RF_DATA;   
                while ( (temp == RF_DATA) && (!(TIFR&2))  )  ;        //wait level changed
                
                
                TIFR = 0x02;                         //Clear T0 overflow int
                TCNT0 = TCNT0_15BIT;                 // 1 bit time      
                rowCheck ^=temp;
                
                if ( (j!=4) && (j!=9) )                
                {
                    CardData[i+1] <<=1;                
                    if (temp ) 
                    {
                        CardData[i+1] |= 0x01;
                    }
                    else
                    {
                        CardData[i+1] &= 0xfe;
                    }
                }
                else
                {
                    if( rowCheck  )
                    {
                        j++;
                        j--;
                        startFlag = 1;
                        break;
                    }
                }               
            }  
            if ( rowCheck )
            {                
                startFlag = 1;
                break;
            }         
        }
        
        if ( startFlag )
        {
            continue;
        }
        
        colCheck = 0;
        for ( i=0; i<4; i++ )                   //column check bit receive
        {
            
            while ( (TIFR & 2) == 0 )           //timer over
            {
                    
            }           
            
            TCNT0 = 0;                          //overtime counter
            TIFR = 0x02;                
            temp = RF_DATA;   
            while ( (temp == RF_DATA) && (!(TIFR&2))  )  ;        //wait level changed
            
            TIFR = 0x02;                 //Clear T0 overflow int    
            TCNT0 = TCNT0_15BIT;                // 1 bit time      
                    
            colCheck <<=1;
            
            if ( temp ) 
            {
                colCheck |= 0x01;
            }
            else
            {
                colCheck &= 0xfe;
            }
        }
        
        TCNT0 = 0;
        TIFR = 0x02;                 //Clear T0 overflow int
        //RF_CFE0;
        
        //Check if receive correct   
             
        for ( i=0; i<5; i++ )
        {
            temp = (CardData[i+1] & 0xf0) >> 4;
            colCheck ^= temp;
            colCheck ^= ( CardData[i+1] & 0x0f);        
        }
        
        if ( colCheck==0 )       //column check correct
        {            
            break;
        }
        j++;
    }
    
    if ( k>19 )
    {      
        k++; //_SEI(); 
        return 0;
    }
    if(1)                           // 卡號 全為零的時候報錯
    {
      j=0;
      for(i=1;i<6;i++)
        if(CardData[i]==0) j++;
      if(j==5) return 0;
    }
    if(1)                           // 卡號 全 0xff 的時候報錯
    {
      j=0;
      for(i=1;i<6;i++)
        if(CardData[i]==0xff) j++;
      if(j==5) return 0;
    }  
//    CardID[1]=0x00;       CardID[2]=0x00;   // 3字節有效
//    CardID[1]=0x00;       //CardID[2]=0x00;   // 4字節有效    
    //_SEI();
    return 1;
}
//===========================================================================
//===========================================================================

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清hd18日本| 日韩电影免费在线看| 亚洲宅男天堂在线观看无病毒| 日韩制服丝袜av| 99re这里只有精品首页| 精品国产三级电影在线观看| 亚洲小说春色综合另类电影| 岛国av在线一区| 欧美大肚乱孕交hd孕妇| 性感美女极品91精品| 成人av网在线| 亚洲国产高清不卡| 狠狠色丁香久久婷婷综合_中| 欧美日韩中文另类| 1000精品久久久久久久久| 国产乱子轮精品视频| 欧美一区二区日韩一区二区| 亚洲成人激情综合网| 日本韩国欧美一区| 日韩美女精品在线| 成人污污视频在线观看| 国产欧美一二三区| 国产精品羞羞答答xxdd| 久久一留热品黄| 精品夜夜嗨av一区二区三区| 欧美一级片在线观看| 三级欧美在线一区| 91精品国产综合久久久蜜臀粉嫩| 亚洲永久精品大片| 在线观看国产一区二区| 一区二区三区欧美激情| 色综合久久综合网欧美综合网| 国产精品久久三| 91天堂素人约啪| 亚洲美女屁股眼交3| 一本久久综合亚洲鲁鲁五月天| 国产亚洲视频系列| 国产成人精品影视| 国产精品国产三级国产有无不卡| 国产成人免费网站| 亚洲日本丝袜连裤袜办公室| 色综合激情五月| 婷婷六月综合网| 日韩精品一区国产麻豆| 国产寡妇亲子伦一区二区| 中文字幕精品一区二区三区精品 | 天堂成人免费av电影一区| 欧美日韩aaaaa| 久久精品国产一区二区三| 久久久久久久综合| 91浏览器入口在线观看| 亚洲电影一级黄| 欧美成人bangbros| 成人激情综合网站| 亚洲一区二区成人在线观看| 欧美一区二区网站| 国产成人激情av| 亚洲一区二区三区在线| 精品卡一卡二卡三卡四在线| 成人黄色小视频| 亚洲图片欧美色图| 久久久久国产精品麻豆| 91福利视频网站| 毛片一区二区三区| 日韩美女精品在线| 日韩免费看网站| 一本色道久久综合亚洲aⅴ蜜桃 | 中文字幕制服丝袜成人av| 欧美调教femdomvk| 国产剧情一区在线| 亚洲图片有声小说| 亚洲国产精品成人综合色在线婷婷| 色综合久久久久综合| 国产一区二区日韩精品| 一区二区在线观看视频| 亚洲精品一线二线三线 | 国产成人精品aa毛片| 亚洲一区二区三区不卡国产欧美| 欧美v国产在线一区二区三区| 99久久免费视频.com| 久久丁香综合五月国产三级网站| 中文字幕在线观看一区| 精品国产凹凸成av人导航| 色婷婷久久综合| 国产成人8x视频一区二区 | 美女视频网站久久| 亚洲同性gay激情无套| 精品福利在线导航| 制服丝袜中文字幕一区| 色哟哟国产精品| 日韩欧美国产一区二区三区 | 成人一区在线看| 免费黄网站欧美| 亚洲自拍偷拍图区| 中文在线资源观看网站视频免费不卡| 欧美视频中文字幕| 色88888久久久久久影院野外| 韩国精品久久久| 美脚の诱脚舐め脚责91| 日日夜夜免费精品视频| 一区二区三区四区国产精品| 中文字幕一区二区三区在线观看 | 奇米在线7777在线精品| 亚洲国产精品精华液网站| 日韩理论片中文av| 中文字幕在线观看一区| 中文字幕免费在线观看视频一区| 精品乱人伦小说| 精品日产卡一卡二卡麻豆| 91精品久久久久久久99蜜桃| 欧美日韩精品一区二区三区蜜桃| 91国模大尺度私拍在线视频| 色呦呦网站一区| 色诱视频网站一区| 欧美丝袜丝交足nylons图片| 91黄色免费看| 欧美亚洲丝袜传媒另类| 精品视频999| 91精品午夜视频| 精品精品欲导航| 久久精品视频一区| 国产网站一区二区三区| 国产精品免费av| 亚洲三级久久久| 亚洲成av人片在线| 日本午夜精品视频在线观看| 另类的小说在线视频另类成人小视频在线| 日本中文字幕一区二区视频| 精品写真视频在线观看| 国产精品一区二区久久不卡| av在线不卡电影| 欧美唯美清纯偷拍| 日韩欧美黄色影院| 国产精品丝袜一区| 一区二区视频在线| 日韩黄色在线观看| 国产酒店精品激情| 91视频在线看| 欧美一区二区三区视频在线 | 宅男噜噜噜66一区二区66| 日韩一区二区三区电影| 久久综合九色综合97婷婷| 成人免费在线观看入口| 五月婷婷久久综合| 国产精品中文字幕一区二区三区| 99久久99久久综合| 91超碰这里只有精品国产| 久久久久久97三级| 亚洲主播在线观看| 国产乱码字幕精品高清av| 色狠狠综合天天综合综合| 欧美一级高清大全免费观看| 国产精品乱人伦一区二区| 午夜成人免费电影| 成人国产亚洲欧美成人综合网| 精品1区2区3区| 国产女同互慰高潮91漫画| 天天综合天天综合色| 国产91丝袜在线播放九色| 欧美精品一卡二卡| 国产精品福利一区二区三区| 麻豆免费看一区二区三区| 色综合亚洲欧洲| 久久久久高清精品| 丝袜亚洲另类欧美| 91浏览器在线视频| 久久夜色精品一区| 日韩av电影一区| 色综合天天综合狠狠| 国产欧美日韩在线看| 免费观看91视频大全| 欧日韩精品视频| 中文字幕中文字幕一区二区| 国内成人免费视频| 欧美一级片在线观看| 亚洲午夜激情网站| 91在线一区二区| 国产精品激情偷乱一区二区∴| 麻豆精品蜜桃视频网站| 欧美系列日韩一区| 亚洲欧美视频在线观看| 成人av午夜电影| 国产嫩草影院久久久久| 精品一区二区精品| 日韩欧美色电影| 美日韩一级片在线观看| 555夜色666亚洲国产免| 亚洲高清久久久| 欧美日韩夫妻久久| 天堂一区二区在线| 在线综合视频播放| 视频一区欧美精品| 91精品福利在线一区二区三区| 亚洲一区二区三区四区在线观看| 色先锋资源久久综合| 亚洲男人的天堂av| 色妹子一区二区| 亚洲激情校园春色| 欧美丝袜自拍制服另类| 亚洲超碰精品一区二区|