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

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

?? level3.c

?? 此程序為利用mage8 AVR 和EM4094實現讀取ISO15693類型卡的C程序、讀卡穩定、這個項目我們做了好久、非常不錯的程序、很適合做這方面產品的朋友們參考
?? 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"

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

uint8_t maxCaptureTimeLow;           //lower part of current maximum capture time (used to initialise TCNT1)
uint8_t maxCaptureTimeHi;            //upper part of current maximum capture time (expected value 0xFF or 0xFE only)

//--------------------------------------------------------------
//local declarations

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

uint8_t clean_data_cnt;               //clean response data length

uint16_t maxTGeneral;                 //current datarate maximum response capture time
uint16_t maxTwa1ee;                   //

uint8_t signed_crc;                   //flag of signed response

uint8_t authSelectFlag;               //disable selection before HW Authentication
//uint8_t em4094_data_invalid_times;
//uint8_t history_weigan_data[ 5 ];
uint8_t em4094_data_valid_flag;
uint8_t data_same_times;

//void SendCaptureData( uint8_t cmd, uint8_t ack );
void AddCRC( uint8_t where );
void Compute_Timeouts( uint8_t flags );
uint8_t Compare_Weigan_Data( void );
//void Inventory( void );
int8_t InventoryStep_version4( void );
void main_receiver( void );
void Send( uint8_t len , uint16_t wait_time );
void Alarm_Check_And_Process( void );

//uint8_t HW_Authentication(void);
//uint8_t ToggleEAS(void);
//uint8_t GeneralRead(void);
//uint8_t GeneralWrite(void);
//void RF_Reset(void);
//uint8_t SwitchToNormalMode(void);

//--------------------------------------------------------------
// main loop routine
//--------------------------------------------------------------

void main_receiver( void ) 
{

    uint8_t fwd_bit_count;
//    uint8_t i;
    decode_number = 2;
    forward_link_type = 0x01;               //default value = 1 from 4 forward link    

    uint16_t write_4094_low = 0xCB33;
    uint16_t write_4094_hi  = 0x0280;
    
    WriteSPI( write_4094_low , write_4094_hi );
    Wait( 4000 );

    while ( 21 ) 
    {                              // infinite loop

        wdt_reset( );                            // reset the watchdog
#ifdef WDT
        WatchDog_Feed( );
#endif       
  
        if ( valid_data_flag == 0 )
        {
//       	 	  SendByte( 0xEE );                    //output error sign;
        }
        else
        { 
       	    valid_data_flag = 0x00;
      	    SendByte( 0x55 );                  //response to PC;
      	    SendByte( 0xAA );
      	    SendByte( 0x01 );
      	    SendByte( 0x02 );
      	    Beep( 1 );
      	    Parse_Command( uart_in_command , uart_in_param ); 
        } 
        
        Alarm_Check_And_Process( );   
                                        
        expectedResponseLen = 0x60;
        cmd_message_len = 5;
        cmd_message[ 0 ] = 0x26;
        cmd_message[ 1 ] = 0x01;
        cmd_message[ 2 ] = 0x00;
        cmd_message[ 3 ] = 0xF6;
        cmd_message[ 4 ] = 0x0A;
        message_flags = cmd_message[ 0 ];
        forward_ptr = data_buffer;            // initialize fwd pointer
        fwd_bit_count = 0;
        if ( InventoryStep_version4( ) )
        {
            Send_Card_ID( weigan_format , weigan_data ); 

          	Set_GREEN_LED( );
            Delayms( 150 );
            Set_RED_LED( );
            
            if ( alarm_enable == 0x01 )
            {
	              if ( PINB & ( 1 << CYE ) )
	              {	  	         
	  	              beep_times = 2;
	  	              unauth_card_times++;
	              }
	              else
	              {
	  	               beep_times = 1;
	  	               unauth_card_times = 0;
	              }             
                Beep( beep_times );
                if ( unauth_card_times > 3 )
                {
            	      unauth_card_times = 0x00;
            	      uint8_t i;
            	      for ( i = 0 ; i < alarm_time ; i++ )
            	      {
            	          cbi( PORTD , BEEP_PIN ); 
            	          Delayms( 600 );
            	          sbi( PORTD , BEEP_PIN );            	      
            	      }
                }	  
            }
            else
            {
	              if ( PINB & ( 1 << CYE ) )
	              {	  	         
	  	              beep_times = 2;
	              }
	              else
	              {
	  	              beep_times = 1;
	              }             
                Beep( beep_times );            	
            }                	
        }
    }
}

//--------------------------------------------------------------
//compute the timeouts according to the flag byte
//
void Compute_Timeouts( uint8_t flags ) 
{
    register uint16_t pom;
    register uint16_t corr;

    pom = expectedResponseLen * 16;        //512RF/32 = 16 TCNT0 pulses per bit
    pom += 128;                            //reserve
    corr = expectedResponseLen / 2 + 2;    //correction for dual carrier

    if ( ( flags & 2 ) == 0 )
        pom *= 4;
    else
        corr >>= 2;

    if ( ( flags & 1 ) == 1 )
        pom -= corr;

    pom = ( 19 * ( uint32_t )pom ) / 16 + 1;

    decode_number = flags & 3;//////decode_number = 0x02;

    if ( decode_number & 2 ) 
    {
        halfDataRate    = 288;             //high data rates
        pulsesPerBit    = 8;
    } 
    else 
    {
        halfDataRate    = 288 * 4;         //low data rates
        pulsesPerBit    = 32;
    }
    maxTGeneral     = pom;
    maxTwa1ee       = write_tag_memory_delay + pom;

}

//--------------------------------------------------------------
//send command and wait
//
void Send( uint8_t len , uint16_t wait_time ) 
{
    uint8_t fwd_bit_count;
    int i;
    forward_ptr = data_buffer;
    fwd_bit_count = 0;

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

    Compute_Timeouts( cmd_message[ 0 ] );
    ClearCaptureBuffers( );

    maxCaptureTimeLow = ( uint8_t )maxTGeneral; 
    maxCaptureTimeHi = maxTGeneral >> 8; 

    SendForward( fwd_bit_count );

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


//--------------------------------------------------------------
// Appends crc to ISO15693 command
void AddCRC( uint8_t where ) 
{  
    uint16_t crc = CRC( cmd_message , where );
    cmd_message[ where++ ] = crc & 255;
    cmd_message[ where ] = crc >> 8;

}

//--------------------------------------------------------------
//--------------------------------------------------------------
//1TS Inventory

//#define DBG_1TS

#define STACK_LENGTH 8                //stack size

typedef struct {
    uint8_t mask_len;
    uint8_t value;
    uint8_t mask[ 12 ];
    uint8_t vata[ 2 ];                    //to keep this structure size being 2^n
} TINVENTORY;

TINVENTORY found[ STACK_LENGTH ];

int8_t found_ptr;

uint8_t dbg_counter;

//--------------------------------------------------------------
//--------------------------------------------------------------
//--------------------------------------------------------------

// ****************** 1TS inventory version 4 ******************

TINVENTORY search;

int8_t InventoryStep_version4( void ) 
{
    uint8_t i, j, k, l;
    uint8_t result;
    uint16_t crc;
    expectedResponseLen = 96;

    j = search.mask_len;

    //set collision bit
    if ( j > 0 ) 
    {
        l = 2 + ( j - 1 ) / 8;
        for ( k = 0xFE , i = 0 ; i < ( ( j - 1 ) % 8 ) ; i++ ) 
            k <<= 1;   //!!!
        search.mask[ l ] = search.mask[ l ] & ( ~k );
        k = search.value << ( ( j - 1 ) % 8 );
        search.mask[ l ] = search.mask[ l ] | k;
    }
    cmd_message[ 0 ] = message_flags;
    cmd_message[ 1 ] = 0x01;
    cmd_message[ 2 ] = j;

    //copy uid as a mask
    if ( j != 0 ) 
    {
        l = ( j - 1 ) / 8;
        Copy( &cmd_message[ 3 ] , &search.mask[ 2 ] , l + 1 );
        j = ( j + 7 ) / 8;
    }  
    //compute CRC
    j += 3;
    AddCRC( j );
    j += 2;

    //form & send command & wait
    Send( j , STD_WAIT );

    //listen for response
    maxCaptureTimeLow = ( uint8_t )maxTGeneral;
    maxCaptureTimeHi = maxTGeneral >> 8;

    Capture( 2 );
    clean_data_cnt = 0;
    result = 0;

    if ( ( sof == 0 ) || ( capture_cnt < 8 ) )
    {

        return 0;
    }
    j = ExtractData( expectedResponseLen );        //find first data bit

//    Copy( found[ found_ptr ].mask , data_buffer , 12 );   //always copy data regardless the result

    if ( j == 0 ) 
    {

        //one valid response received
        clean_data_cnt = 12;

        crc = CRC( data_buffer , clean_data_cnt );
        if ( crc == ~0xF0B8 ) 
        {
            uint8_t check_data = 0;
 
            weigan_data[ 3 ] = data_buffer[ 2 ];
            weigan_data[ 2 ] = data_buffer[ 3 ];
            weigan_data[ 1 ] = data_buffer[ 4 ];
            weigan_data[ 0 ] = data_buffer[ 5 ];
            for ( i = 0 ; i < 4 ; i++ )
                 check_data ^= weigan_data[ i ];  
            weigan_data[ 4 ] = check_data;
//            em4094_data_valid_flag = 0x55;  
            return 1;          
        }
        else
        {
//       	    em4094_data_valid_flag = 0x00;
//       	    SendByte( 0x00 );
        	  return 0;
        }
    }
    else
    {
//        em4094_data_valid_flag = 0x00;
//        SendByte( 0x00 );
        return 0;	
    }
}


void Alarm_Check_And_Process( void )
{
	  if ( alarm_level == 0 )
	  {
	      if ( PINC & ( 1 << ALARM_IN ) )
	      {
	  	      sbi( PORTC , ALARM_OUT );
	  	      cbi( PORTD , BEEP_PIN );
	  	  }
	      else
	      {
	      	  cbi( PORTC , ALARM_OUT );	 
	      	  sbi( PORTD , BEEP_PIN ); 	
	      }  
	  }
	  else if ( alarm_level == 1 )
	  {
	      if ( PINC & ( 1 << ALARM_IN ) )
	      {
	      	  sbi( PORTD , BEEP_PIN );
	      	  cbi( PORTC , ALARM_OUT );
	      }
	      else
	      {
	      	  sbi( PORTC , ALARM_OUT );	
	      	  cbi( PORTD , BEEP_PIN );
	      }
	  }	  
}

/*
uint8_t Compare_Weigan_Data( void )
{
	  uint8_t i;
	  InventoryStep_version4( );
  
	  if ( em4094_data_valid_flag == 0x00 )
	  {
	  	  data_same_times++;
	  	  if ( data_same_times > 31 )
	  	  {
	  	      data_same_times = 0;
	  	      for ( i = 0 ; i < 5 ; i++ )
	  	          history_weigan_data[ i ] = 0x00;
	  	  }
	  	  return 0;
	  }
	  else
	  {
	  	  em4094_data_valid_flag = 0x00;
	  	  if ( data_same_times > 30 )
	  	      data_same_times -= 30;
	  	  else if ( data_same_times > 20 )
	  	  	  data_same_times -= 20;
	  	  else if ( data_same_times > 10 )
	  	      data_same_times -= 10;
	  	  for ( i = 0 ; i < 5 ; i++ )
	  	  {
	  	      if ( history_weigan_data[ i ] != weigan_data[ i ] )
	  	      	  break;	
	  	  }
	  	  if ( i != 5 )
	  	  {
	  	      for ( i = 0 ; i < 5 ; i++ )
	  	          history_weigan_data[ i ] = weigan_data[ i ];
	  	      return 1;
	  	  }
	  	  else
	  	  {
	  	  	  return 0;
	  	  }
	  }

}
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人三级伦理片| 国产欧美一区二区三区沐欲| 国产精品乱码妇女bbbb| 日韩av一级电影| 欧美乱熟臀69xxxxxx| 亚洲伊人伊色伊影伊综合网| 白白色亚洲国产精品| 国产精品久久久久毛片软件| 国产成人av影院| 亚洲人成伊人成综合网小说| 91丨九色porny丨蝌蚪| 亚洲精品一二三四区| av不卡在线播放| 亚洲国产精品久久久久婷婷884| 国产成人精品免费视频网站| 国产亚洲女人久久久久毛片| 国产一区中文字幕| 中文字幕一区二区视频| 成人app下载| 日本欧美一区二区| 欧洲一区在线电影| 另类小说欧美激情| 国产欧美日韩精品一区| 色琪琪一区二区三区亚洲区| 一个色综合av| 国产日韩影视精品| 欧美午夜精品一区二区三区| 图片区日韩欧美亚洲| 久久久精品国产免大香伊| 色噜噜夜夜夜综合网| 国产精品99久久久| 亚洲成精国产精品女| 久久精品视频在线免费观看| av欧美精品.com| 久久99精品一区二区三区| 国产精品成人免费精品自在线观看 | 亚洲一区二区三区精品在线| 欧美不卡一区二区三区四区| 欧美亚洲免费在线一区| 高清不卡在线观看av| 免播放器亚洲一区| 亚洲地区一二三色| 亚洲特级片在线| 欧美激情一区二区在线| 日韩一区二区三区三四区视频在线观看 | 精品国产123| 欧美精品aⅴ在线视频| 99re热这里只有精品视频| 国产一区二区三区在线观看免费视频 | 久久久久久99久久久精品网站| 色哟哟亚洲精品| 色先锋aa成人| 色www精品视频在线观看| 成人精品国产福利| 成人app软件下载大全免费| 不卡视频一二三| 99久久婷婷国产综合精品| 99久久精品免费看国产| 色综合天天天天做夜夜夜夜做| 99riav久久精品riav| 99r精品视频| 欧美色大人视频| 欧美一区二区三区视频| 日韩久久精品一区| 精品久久久久久亚洲综合网| 精品黑人一区二区三区久久| 久久精品视频网| 亚洲成a人片综合在线| 奇米影视7777精品一区二区| 看电视剧不卡顿的网站| 国产91精品一区二区麻豆亚洲| 99精品偷自拍| 日韩精品一区二区三区视频在线观看| 久久久亚洲午夜电影| 亚洲天堂福利av| 国产精品原创巨作av| 91日韩精品一区| 欧美精品一区二| 午夜久久久久久| 99国产精品99久久久久久| 91麻豆精品国产无毒不卡在线观看| 久久综合久色欧美综合狠狠| 亚洲精品国产品国语在线app| 九九九精品视频| 欧美日韩综合不卡| 亚洲精品一二三区| 国产成人免费9x9x人网站视频| 欧美性色综合网| 日韩理论片在线| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 欧美精品tushy高清| 日韩一区有码在线| 夫妻av一区二区| 欧美精品一区二区精品网| 午夜精品久久久久久久99樱桃| 91亚洲国产成人精品一区二三| 国产欧美日韩不卡| 粉嫩绯色av一区二区在线观看| 欧美一区二区在线视频| 五月天一区二区三区| 欧美日韩在线精品一区二区三区激情| 久久蜜桃av一区精品变态类天堂| 美女诱惑一区二区| 日韩欧美一二区| 国产成人啪免费观看软件| 久久精品一二三| 成人激情免费视频| 亚洲欧美一区二区三区久本道91 | 亚洲国产精品影院| 欧美日韩成人综合天天影院| 亚洲国产精品一区二区久久恐怖片| 欧美最猛性xxxxx直播| 亚洲午夜一区二区三区| 欧美一级精品在线| 国产麻豆精品theporn| 国产精品国产三级国产普通话三级| 成人黄色片在线观看| 一区二区在线观看视频在线观看| 欧美影片第一页| 国产精选一区二区三区| 一色屋精品亚洲香蕉网站| 欧美亚洲日本国产| 国产乱码精品一区二区三| 亚洲免费高清视频在线| 欧美一区二区播放| av一本久道久久综合久久鬼色| 午夜精品成人在线| 综合久久久久久| 精品国产免费一区二区三区四区| 91在线观看视频| 国产精品一区不卡| 老汉av免费一区二区三区| 日韩理论电影院| 中文字幕高清一区| 久久综合久久综合九色| 在线观看91精品国产麻豆| 99久久精品国产毛片| 精品一区二区三区视频| 亚洲高清免费一级二级三级| 国产精品国产馆在线真实露脸| 日韩精品一区二区三区在线| 欧美亚洲一区三区| 欧美日韩另类一区| 在线一区二区三区做爰视频网站| 成人一级片网址| 成人av一区二区三区| 国产成人综合在线| 国产成人综合在线| 成人免费观看男女羞羞视频| 国产一区二区在线影院| 激情欧美一区二区三区在线观看| 日本特黄久久久高潮| 日韩中文字幕亚洲一区二区va在线| 亚洲婷婷综合色高清在线| 亚洲精选一二三| 午夜婷婷国产麻豆精品| 日韩激情中文字幕| 国产自产高清不卡| 国产成人精品免费看| 色综合一区二区| 91精品国产乱码久久蜜臀| 日韩午夜激情视频| 中文字幕一区二区三区四区不卡| 中文字幕在线观看一区| 亚洲午夜激情网站| 国内精品写真在线观看| 国产·精品毛片| 亚洲狠狠爱一区二区三区| 极品少妇一区二区三区精品视频 | 粉嫩av一区二区三区| 99久久精品国产网站| 欧美乱妇23p| 国产精品色在线观看| 午夜亚洲国产au精品一区二区| 韩国一区二区视频| 欧美中文字幕一区二区三区| 精品国产一区二区精华| 一区二区三区美女视频| 国产在线一区二区| 777奇米成人网| 亚洲欧美一区二区久久| 韩国欧美国产一区| 在线日韩国产精品| 国产精品久久久久久久岛一牛影视 | 免费人成精品欧美精品| 成人网男人的天堂| 久久夜色精品国产噜噜av| 性做久久久久久久久| 色综合婷婷久久| 国产精品免费人成网站| 久久国产三级精品| 欧美精品在线一区二区| 亚洲狠狠丁香婷婷综合久久久| 高清国产一区二区| 国产亚洲一区字幕| 风间由美中文字幕在线看视频国产欧美| 91精品国产91久久久久久一区二区| 亚洲人成精品久久久久| 色综合久久久久综合99| 亚洲人成影院在线观看|