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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? level3.c

?? 此程序為利用mage8 AVR 和EM4094實現(xiàn)讀取TYPE B類型卡的C程序、讀卡穩(wěn)定、這個項目我們做了好久、非常不錯的程序、很適合做這方面產(chǎn)品的朋友們參考
?? C
字號:



#include <avr/io.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/wdt.h>
#include "level4.h"
#include "level3.h"
#include "level2.h"
#include "level1.h"

//#define STD_WAIT 145                  //~318us = (145+13)x32 @ 16MHz , 13x32 uC clocks is a setup reserve

//--------------------------------------------------------------
//global variables

uint8_t clean_data_cnt;               //clean response data length
uint8_t maxCaptureTime;                 //current maximum capture time (used to initialise TCNT2)
uint8_t maxCaptureTimeScale;            //scale of current maximum capture time (expected value 3 - 7 only)
uint8_t temp;
uint8_t number;
uint8_t sec;
uint16_t maxTGeneral;                 //current datarate maximum response capture time
uint8_t expectedResponseLen;          // expected number of response bits


//--------------------------------------------------------------
//Local functions declaration
void Capture( void );
void Compute_Timeouts( void );
uint16_t ScaleOnce( uint16_t period );
uint8_t ScaleTime( uint16_t period );
void Send( uint8_t len , uint16_t wait_time );
void Wait( uint16_t period );
uint8_t Read_TypeB_Card( void );
//--------------------------------------------------------------
//compute the timeouts according to the flag byte
//
void Compute_Timeouts( void ) 
{
    uint16_t pom = 0;
    //type B
    pom = ( uint16_t )expectedResponseLen * 64 + 128;  //128RF/32 = 4 TCNT2 pulses per bit + reserve
    pom = ( 19 * ( uint32_t )pom ) / 16 + 1;   //13.56 to 16 correction
    maxTGeneral     = pom;
}



//--------------------------------------------------------------
//send command and wait
//
void Send( uint8_t len , uint16_t wait_time ) 
{
    uint8_t fwd_bit_count;
    uint8_t i;

    fwd_bit_count = Prepare_SOF( );

    for ( i = 0 ; i < len ; i++ ) 
        fwd_bit_count += Prepare_Data( cmd_message[ i ] , len );

    fwd_bit_count += Prepare_EOF( len );

    Compute_Timeouts( );
    ClearCaptureBuffers( );
    maxCaptureTime = ScaleTime( maxTGeneral );

    SendForward( fwd_bit_count );

    if ( wait_time != 0 ) 
    	  Wait( wait_time );
}


// ==================================================================
// Down Link setup function
// Requires: maxCaptureTime and maxCaptureTimeScale
//   (located here instead of level2 because of register variables)


void Capture( void ) 
{
    TCCR0 = 0;                                //disable Counter0
    TCCR1B = 0;                               //disable Counter1
    TCNT1 = 0;

    if ( !bufferClean ) 
    	  ClearCaptureBuffers( );
    bufferClean = 0;
    captured_bit_count = 0;                   //reset some values
//    last_valid = 0;

    //set hi byte of maximum capture timer2 timeout
    TCNT2 = ~maxCaptureTime;                  //set timer2 timeout
    TCNT0 = 0;                                //clear timer0
    TIFR = TIFR | ( 1 << ICF1 ) | ( 1 << TOV1 ) | ( 1 << OCF2 ) | ( 1 << TOV2 );      //clear pending interrupts

    sbi( TIMSK , TOIE2 );                      //enable timer2 overflow
    sbi( SFIOR , PSR2 );                       //clear timer2 prescaler

    TCCR2 = maxCaptureTimeScale;              //run T2


    number = 0;
    //type B
    sbi( GIFR , INTF1 );                       //clear any pending interrupt
    sbi( GICR , INT1 );                        //enable interrupt 1
    while ( TIMSK & ( 1 << TOIE2 ) )              //wait until done for BPSK
    { }
    cbi( GICR , INT1 );                        //disable interrupt 1
    TCCR2 = 0;
    cbi( TIMSK , TOIE2 );                        //disable timer2 overflow
    sbi( TIFR , TOV2 );                          //clear pending interrupt
}

// ==================================================================
// Wait

void Wait( uint16_t period ) 
{
    uint8_t time = ScaleTime( period );
    TCCR2 = 0;                                //disable Counter2
    TCNT2 = -time;                            //set timer with initial time
    TIFR = TIFR | ( 1 << OCF2 ) | ( 1 << TOV2 );      //clear pending interrupts
    sbi( SFIOR , PSR2 );                       //clear T2 prescaler
    sbi( TIMSK , TOIE2 );                      //enable overflow

    TCCR2 = maxCaptureTimeScale;              //run! at clkio/scale
    while ( TIMSK & ( 1 << TOIE2 ) )              //wait until done
    { }
    TCCR2 = 0;                                //stop
}

// ==================================================================
// Scale Once - minimum scale is RF/32
// fixed parameters - maxCaptureTimeScale

uint16_t ScaleOnce( uint16_t period ) 
{  
    if ( period > 255 ) 
    {
        period /= 2;
        if ( maxCaptureTimeScale <= 5 ) 
        {
            maxCaptureTimeScale++;
        } 
        else if ( maxCaptureTimeScale == 6 ) 
        {
            period /= 2;
            maxCaptureTimeScale++;
        } 
        else if ( period > 255 ) 
        {
            period = 255;
        }
    }
    return period;
}


// ==================================================================

uint8_t ScaleTime( uint16_t period ) 
{
    uint8_t i;
    maxCaptureTimeScale = 3;
    for ( i = 0 ; i < 4 ; i++ ) 
    {
        period = ScaleOnce( period );
    }
    return period;
}

// ==================================================================
// ==================================================================
// INTERRUPT ROUTINES
// ==================================================================

SIGNAL ( SIG_OVERFLOW2 )
{
  	    
    TIMSK = 0;                                    //finished, disable all
}

// ==================================================================
// PBSK valid data 

SIGNAL ( SIG_INTERRUPT1 )
{ 
	  sec = 0 ;
    temp = ( ( PIND >> 4 ) & 1 ) ^ 1;
    while ( ( PIND & 0x08 ) == 0x08 )
	  {
	      sec++;
	  }
	  if ( sec >= 5 )
	  {
		    raw_data[ number++ ] = temp ;		 
	  }
}

uint8_t Read_TypeB_Card( void )
{
	  uint8_t i;
 
    expectedResponseLen = 14 ;    
	          
    Send( 5 , 0 );          
          
    maxCaptureTime = ScaleTime( maxTGeneral );     
  	          
    Capture( );
   	    
    clean_data_cnt = ExtractTypeBData( 248 );

    if ( clean_data_cnt == ( expectedResponseLen + 1 ) * 8 ) 
    {
        switch( type_b_setting )
        {
            case 1 :
                weigan_data[ 3 ] = data_buffer[ 4 ];
                weigan_data[ 2 ] = data_buffer[ 3 ];
                weigan_data[ 1 ] = data_buffer[ 2 ];
                weigan_data[ 0 ] = data_buffer[ 1 ];	
            break;
            
            case 2 :
                weigan_data[ 3 ] = data_buffer[ 8 ];
                weigan_data[ 2 ] = data_buffer[ 7 ];
                weigan_data[ 1 ] = data_buffer[ 6 ];
                weigan_data[ 0 ] = data_buffer[ 5 ];            	  
            break;
            
            case 3 :
                weigan_data[ 3 ] = data_buffer[ 4 ];
                weigan_data[ 2 ] = data_buffer[ 3 ];
                weigan_data[ 1 ] = data_buffer[ 8 ];
                weigan_data[ 0 ] = data_buffer[ 7 ];            	
            break;
            
            case 4 :
                weigan_data[ 3 ] = data_buffer[ 8 ];
                weigan_data[ 2 ] = data_buffer[ 7 ];
                weigan_data[ 1 ] = data_buffer[ 4 ];
                weigan_data[ 0 ] = data_buffer[ 3 ];            	
            break;
            
            default:
            break;	
        }
        uint8_t check_data = 0;
        for ( i = 0 ; i < 4 ; i++ )
          check_data ^= weigan_data[ i ];
        weigan_data[ 4 ] = check_data; 
        return 1;     
    }
    else
    {
        return 0 ;
    }	
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区在| 日本乱人伦一区| 亚洲美女一区二区三区| 欧美喷水一区二区| 国产经典欧美精品| 日韩经典一区二区| 亚洲日本成人在线观看| 精品国产91洋老外米糕| 欧美午夜一区二区| 成人免费毛片嘿嘿连载视频| 免费不卡在线观看| 亚洲国产综合在线| 中文字幕免费不卡在线| 日韩美女主播在线视频一区二区三区| 日本伦理一区二区| 成人性生交大片免费看视频在线| 麻豆精品一区二区av白丝在线| 亚洲男同性恋视频| 国产欧美日韩不卡| 精品精品国产高清a毛片牛牛| 欧美日韩二区三区| 91老司机福利 在线| 国产aⅴ精品一区二区三区色成熟| 美女高潮久久久| 日本午夜一区二区| 亚洲成在人线在线播放| 亚洲精品五月天| 国产精品二三区| 国产精品五月天| 国产日韩亚洲欧美综合| 精品不卡在线视频| 精品少妇一区二区| 欧美一级生活片| 欧美区在线观看| 欧美精选午夜久久久乱码6080| 日本韩国欧美国产| 91麻豆免费观看| 91最新地址在线播放| eeuss鲁片一区二区三区在线看| 成人av动漫网站| 99国产精品国产精品毛片| 国产成a人亚洲| 成人免费高清在线| 成人18视频日本| 97久久精品人人做人人爽| 91在线视频在线| 欧美亚洲国产一卡| 欧美日韩一区不卡| 欧美精品三级日韩久久| 欧美精品免费视频| 91精品国产综合久久精品app | 国产成人精品亚洲午夜麻豆| 国产一区二区调教| 国产电影一区在线| 成人中文字幕电影| 97精品国产露脸对白| 色av成人天堂桃色av| 欧美天天综合网| 日韩一区二区精品葵司在线 | 最新久久zyz资源站| 中文字幕人成不卡一区| 亚洲乱码国产乱码精品精可以看 | 欧美三级电影网站| 欧美精品v日韩精品v韩国精品v| 日韩一级片网址| 久久精品夜色噜噜亚洲aⅴ| 国产精品婷婷午夜在线观看| 一区二区三区视频在线看| 亚洲成人资源网| 日韩精品1区2区3区| 国产91对白在线观看九色| 色综合网站在线| 日韩精品一区二区三区swag | 日本乱人伦aⅴ精品| 69堂国产成人免费视频| 久久免费视频色| 一区二区在线观看不卡| 日韩成人一级片| 成人一区二区三区在线观看 | 国产精品久久久久久久岛一牛影视 | 欧美丝袜丝交足nylons图片| www欧美成人18+| 亚洲激情六月丁香| 久久不见久久见免费视频7| 99久久免费视频.com| 69精品人人人人| 国产精品美女久久久久久久久 | 亚洲成av人片在线观看无码| 韩国毛片一区二区三区| 色综合一区二区三区| 欧美成人一级视频| 亚洲精品少妇30p| 黄一区二区三区| 在线观看成人免费视频| 26uuu久久天堂性欧美| 亚洲综合久久av| 国产精品99久久久| 欧美精品乱码久久久久久按摩| 中文字幕一区二区三区乱码在线| 免费人成网站在线观看欧美高清| 91丨九色porny丨蝌蚪| 337p粉嫩大胆色噜噜噜噜亚洲| 午夜伦理一区二区| 93久久精品日日躁夜夜躁欧美| 久久影院视频免费| 午夜精品久久一牛影视| 菠萝蜜视频在线观看一区| 精品理论电影在线观看| 亚洲成人激情自拍| 色综合欧美在线| 中文字幕国产一区二区| 久久97超碰色| 欧美乱妇一区二区三区不卡视频| 中文字幕永久在线不卡| 国产精品综合二区| 欧美一级高清片在线观看| 一区二区三区精品在线| 99久久免费国产| 欧美国产激情二区三区| 蜜桃视频一区二区| 在线不卡a资源高清| 夜夜嗨av一区二区三区四季av | 91精品国产全国免费观看| 亚洲激情图片qvod| 91视频你懂的| 亚洲视频每日更新| 成人性生交大片免费看视频在线| 久久久激情视频| 国产不卡视频在线观看| 久久久综合九色合综国产精品| 久久97超碰色| 久久嫩草精品久久久久| 国产精品白丝jk黑袜喷水| 精品久久人人做人人爽| 久久国产福利国产秒拍| 日韩欧美国产综合一区 | 日韩vs国产vs欧美| 欧美日本不卡视频| 日韩一区欧美二区| 51久久夜色精品国产麻豆| 午夜视频一区二区三区| 欧美区视频在线观看| 免费xxxx性欧美18vr| 欧美一级精品在线| 卡一卡二国产精品| 欧美成人aa大片| 国产a区久久久| 亚洲欧美日韩国产成人精品影院| 91蝌蚪porny九色| 亚洲r级在线视频| 日韩欧美你懂的| 高清shemale亚洲人妖| 亚洲天天做日日做天天谢日日欢| 色呦呦日韩精品| 天天色 色综合| 精品国产sm最大网站免费看| 不卡av在线免费观看| 亚洲男同1069视频| 3d动漫精品啪啪一区二区竹菊 | 国产一二三精品| 国产精品国产三级国产aⅴ无密码| 97精品久久久久中文字幕 | 亚洲精品高清在线观看| 日本高清无吗v一区| 污片在线观看一区二区| 欧美成人精品福利| 91在线精品一区二区| 亚瑟在线精品视频| www国产成人| 99在线精品观看| 日韩精品一卡二卡三卡四卡无卡| www久久精品| 在线观看免费一区| 久久国产精品色| 国产精品久久毛片a| 91精品国产综合久久香蕉麻豆| 国产成人午夜电影网| 一区二区三区日韩| 91精品国产免费久久综合| 国产成人久久精品77777最新版本| 亚洲国产毛片aaaaa无费看| 精品国精品国产| 色噜噜久久综合| 久久99最新地址| 夜色激情一区二区| 久久亚洲一区二区三区明星换脸| 在线视频亚洲一区| 黄色成人免费在线| 亚洲精品ww久久久久久p站| 亚洲精品在线免费播放| 精品1区2区在线观看| 在线中文字幕一区| 国产永久精品大片wwwapp| 亚洲一二三区视频在线观看| 久久久www成人免费毛片麻豆| 欧美羞羞免费网站| 国产综合一区二区| 香蕉久久夜色精品国产使用方法| 国产精品每日更新在线播放网址| 欧美一区二区三区免费大片|