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

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

?? main.c

?? EM4094示例Firmware
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
*-------------------------------------------------------------------------------
*--  RCSId: $Id: main.c,v 1.33 2004-06-30 12:47:41+02 mjg Exp mjg $
*--         $Name:  $
*-------------------------------------------------------------------------------
*-- main.c (level1)
*-------------------------------------------------------------------------------
*-- $Log: main.c,v $*-- Revision 1.33  2004-06-30 12:47:41+02  mjg*-- key selection extension*--*-- Revision 1.32  2004-05-31 16:41:51+02  mjg*-- single carrier too slow caused CRC errors, speeded up*--
*-- Revision 1.31  2004-05-21 09:29:37+02  mjg
*-- startup inventory, to toggle EAS off for EM4034
*--
*-- Revision 1.30  2004-05-10 09:23:28+02  mjg
*-- to toggle EAS off
*--
*-- Revision 1.29  2004-05-07 08:10:25+02  mjg
*-- HW auth passed
*--
*-- Revision 1.28  2004-04-27 17:05:44+02  mjg
*-- to better test the design
*--
*-- Revision 1.27  2004-04-21 15:48:47+02  mjg
*-- FSK low data rate support
*--
*-- Revision 1.26  2004-04-21 13:05:21+02  mjg
*-- EOF ignored because of FSK and 4034 support
*--
*-- Revision 1.25  2004-04-13 11:21:39+02  mjg
*-- sync
*--
*-- Revision 1.24  2004-03-25 16:09:19+01  mjg
*-- to add delayed EOF feature
*--
*-- Revision 1.23  2004-03-25 15:13:24+01  mjg
*-- to add delayed EOF feature
*--
*-- Revision 1.22  2004-03-24 13:35:36+01  mjg
*-- error msg needs better handling
*--
*-- Revision 1.21  2004-03-15 16:59:07+01  mjg
*-- to check SPI
*--
*-- Revision 1.20  2004-02-16 08:04:12+01  mjg
*-- preliminary CD
*--
*-- Revision 1.18  2004-02-10 19:24:41+01  mjg
*-- FSK to add valid bits
*--
*-- Revision 1.17  2004-02-10 18:30:47+01  mjg
*-- dual carrier raw, decoded 1st try
*--
*-- Revision 1.16  2004-02-09 18:03:33+01  mjg
*-- raw dual carrier capture
*--
*-- Revision 1.15  2004-02-08 12:30:53+01  mjg
*-- Decode var removed, FSK polling added
*--
*-- Revision 1.14  2004-02-07 14:59:47+01  mjg
*-- Response parsing correction
*--
*-- Revision 1.13  2004-02-03 08:42:52+01  mjg
*-- hubneme II
*--
*-- Revision 1.12  2004-02-03 07:24:38+01  mjg
*-- fwd debug implemented and removed from being compiled
*--
*-- Revision 1.11  2004-01-19 14:08:05+01  mjg
*-- hubneme I
*--
*-- Revision 1.10  2004-01-14 14:57:35+01  mjg
*-- to Invenotry version 2
*--
*-- Revision 1.9  2003-12-11 17:37:21+01  mjg
*-- yes
*--
*-- Revision 1.8  2003-12-11 16:33:41+01  mjg
*-- 1TS gives too much responses, stayquiet ?
*--
*-- Revision 1.7  2003-12-10 08:15:49+01  mjg
*-- to add dbg code
*--
*-- Revision 1.6  2003-12-09 12:43:01+01  mjg
*-- to 1TS inventory
*--
*-- Revision 1.5  2003-12-09 12:42:44+01  mjg
*-- to 1TS inventory
*--
*-- Revision 1.4  2003-12-05 13:37:16+01  mjg
*-- Reset2Ready, GetSystemInfo
*--
*-- Revision 1.3  2003-12-05 08:38:56+01  mjg
*-- write update
*--
*-- Revision 1.2  2003-12-04 15:58:09+01  mjg
*-- to write
*--
*-- Revision 1.1  2003-12-01 08:18:05+01  mjg
*-- single carrier low drate level1 ok
*--
*-- Revision 1.0  2003-11-26 09:01:03+01  mjg
*-- Initial revision
*--
*-------------------------------------------------------------------------------
*/

#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"

// ==================================================================
// capture variables

uint16_t halfDataRate;                //half period downlink data rate modul
uint8_t pulsesPerBit;                 //8 pulses for low data rate, 32 for high
uint8_t volatile sof;                 //sof and eof indication

uint8_t counter1set;                  //counter1 settings
uint8_t forward_link_type;            //forward link modulation type

uint8_t decode_number;                //decoder routine number
void (*decode)(void);                 //decoder routine variable
uint8_t enable_capture;               //enable capture (0=disable, 1=capture enable, 2=debug pulse capture)

uint16_t last_capture;                //counter1 is now reset at capture start, we make a difference
                                      //between current and last value
register uint8_t currentMaxTimeHi asm ("r10");          //actual hi value of maximum capture time

uint8_t watchdog_reset;               //watchdog activated

// ==================================================================
// level 1 local variables

register uint8_t captured_byte asm ("r6");      //store_bit current capture bits
register uint8_t captured_valid asm ("r7");     //store_bit current capture valid bits
register uint8_t capture_cnt asm ("r8");        //store_bit current capture byte index
register uint8_t captured_bit_count asm ("r9"); //store_bit current capture bit counter

uint8_t bit_pos;                      //bit position in demodulation

uint8_t edge;                         //bit_phase FSK
uint8_t last_valid;                   //last valid value for invalid sequence compression
uint8_t last_z;                       //FSK last pulse number

uint16_t old_capture;                 //one subcarrier variable
uint16_t previous_delay;              //noise delay storage variable


// ==================================================================
// function declarations


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

void avr_ini(void)
{

   // --------------------------------------------------------------- 
   // UART initialization                                             
   // --------------------------------------------------------------- 

   UARTIni();          // level4 uart init routine

   // --------------------------------------------------------------- 
   // 16-bit Timer/Counter1 initialization                            
   // --------------------------------------------------------------- 

   TCCR1A = 0;         // no compare otuput, no PWM mode ...  
   TCCR1B = 0;         // stopped on startup

   // --------------------------------------------------------------- 
   // I/O Ports initialization                                        
   // --------------------------------------------------------------- 

   PORTB = 0;
   PORTC = (1 << DCLK_PIN) | (0 << MOD_PIN);    //set SPI active == EM4094 normal function blocked
   PORTD = 0;                                   //    notmodulation == startup antenna on
                                                //    LED On

   DDRB = 0x02;        // PORTB.0,2-7 as input, PORTB.1 = SDA = output
   DDRC = 0x0F;        // PORTC.(3-0) = (SCK, LED, DCLK, DIN=MOD) = output, rest = input
   DDRD = 0x0C;        // PORTD.(7,3,2) = (SSN, DBG_TRANS, DBG_FORWARD) = output, rest = input, SSN=off
                                           
   // --------------------------------------------------------------- 
   // Watch Dog Setup
   // --------------------------------------------------------------- 
   cbi( MCUCSR, WDRF);  //clear watchdog reset flag
   wdt_enable(0x7);

   // --------------------------------------------------------------- 
   // General Interrupt Enable                                        
   // --------------------------------------------------------------- 

   MCUCR = ((1<<ISC11) | (1<<ISC10));          //INT1 triggered on rising edge
   GICR = 0;                                   //INT0 & INT1 disabled

   sei();                                      // General Interrupt Enable                    
}


// ==================================================================
// R E C E I V E R   C O D E
// ==================================================================

// ---------------------------------------------------------------
// store bit into capture buffer bytes

void store_bit(uint8_t b, uint8_t v)
{
#if 0
def DEBUG
  b &= 1;
  v &= 1;

  PORTD = PIND ^ (1<<DBG_TRANS);
  PORTD = PIND ^ (1<<DBG_TRANS);
//  if (b == 0) cbi(PORTD, DBG_FORWARD); else sbi(PORTD, DBG_FORWARD); // debugging bitval
  if (v == 0) cbi(PORTD, DBG_TRANS); else sbi(PORTD, DBG_TRANS); // debugging bitok
#endif

  captured_byte = (captured_byte << 1) | b;
  captured_valid = (captured_valid << 1) | v;

  if (captured_bit_count == 7) {
    captured_bit_count = 0;

    if (capture_cnt < CAPTURE_SIZE) {
      capture.capture_data[capture_cnt] = captured_byte;
      capture.capture_valid[capture_cnt++] = captured_valid;
    } else {
      TIMSK = 0;                                    //finished, disable all
      enable_capture = 0;
    }

  } else {
    captured_bit_count++;
  }
}

// ---------------------------------------------------------------
// debug routine stores the captured pulse lengths
// - very bad thing happens here, store_pulse overwrites two arrays
// - thus, capture_data & capture_valid are required placed adjacent
// - note: too much data variables is probably detected by $(OBJTOOL)
// -       warning only

void /*inline*/ store_pulse(uint8_t b)
{
  if (capture_cnt == (2 * CAPTURE_SIZE) - 0x20)         //reserve for message header
    TIMSK = 0;                       //disable all
  else
    capture.capture_data[capture_cnt++] = b;
}

// ==================================================================
// void one_subcarrier_capture(void)

uint8_t pulsesPerBit2;
uint8_t pulsesPerBit3;

SIGNAL (SIG_INPUT_CAPTURE1)
{

  uint8_t z;
  uint16_t capt, y;
  uint16_t icr;

#define TOLERANCE (3)

  icr = ICR1;   

  capt = icr - last_capture;

  if (capt > halfDataRate) {            //quite good pause?

    z = TCNT0;
    TCNT0 = 0;

#ifdef DEBUG
    PORTD = PIND ^ (1<<DBG_FORWARD); // debugging 
#endif
    y = icr - old_capture;     //y

    if (debug_mode != 1) {     //data capture

      capt += previous_delay;
      previous_delay = 0;

      if (z < (uint8_t)(pulsesPerBit-TOLERANCE)) {  //kludge because of noise
        previous_delay = capt;
        store_bit(0, 1);
        store_bit(1, 1);
      } 
      else
      if ((sof == 0) && (z >= (uint8_t)(pulsesPerBit3-TOLERANCE)) && (z <= (uint8_t)(pulsesPerBit3+TOLERANCE)))
        sof = 1; 
      else
      if (sof == 1) {
        
        if ((z >= (uint8_t)(pulsesPerBit2-TOLERANCE)) && (z <= (uint8_t)(pulsesPerBit2+TOLERANCE))) {
          store_bit(1, 0);
          store_bit(0, 0);
          if (capt < (2*halfDataRate))
            bit_pos = 0;
          else
            bit_pos = 1;
        }
        else
        if ((z >= (uint8_t)(pulsesPerBit-TOLERANCE)) && (z <= (uint8_t)(pulsesPerBit+TOLERANCE))) {
          store_bit(bit_pos, 0);      //0!
          if (capt >= (2*halfDataRate))
            bit_pos = 1;
        }
        else
        if ((z >= (uint8_t)(pulsesPerBit3-TOLERANCE)) && (z <= (uint8_t)(pulsesPerBit2+TOLERANCE)) && (capt > (3*halfDataRate))) {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产亚洲aⅴ| 91理论电影在线观看| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 色综合久久六月婷婷中文字幕| 欧美日本在线看| 中文字幕一区二区三区蜜月| 久久超碰97中文字幕| 欧美亚洲日本国产| 欧美国产乱子伦| 国产精品资源网| 欧美一区二区三区在线看| 亚洲影视在线观看| aaa亚洲精品一二三区| 亚洲精品一区二区在线观看| 亚洲大片在线观看| 欧美亚洲另类激情小说| 中文字幕中文在线不卡住| 国产一区在线观看视频| 538在线一区二区精品国产| 一区二区三区日韩| 成人小视频在线观看| 久久久精品免费免费| 九一九一国产精品| 日韩欧美精品在线| 日韩国产成人精品| 91精品久久久久久久99蜜桃| 亚洲精品日产精品乱码不卡| 成人av电影免费观看| 国产精品素人一区二区| 国产精品一区二区不卡| 久久久精品天堂| 风间由美中文字幕在线看视频国产欧美 | 国产乱子轮精品视频| 欧美一卡在线观看| 久久成人免费网站| 久久婷婷久久一区二区三区| 久久精品国产亚洲a| 久久婷婷国产综合精品青草| 经典三级视频一区| 国产精品免费av| 99精品视频中文字幕| 一二三四区精品视频| 欧美图区在线视频| 秋霞午夜鲁丝一区二区老狼| 日韩一二三四区| 狠狠色丁香九九婷婷综合五月| 精品国内二区三区| 国产91精品入口| 一区二区在线观看免费视频播放| 欧美中文字幕久久| 男女男精品视频| 国产亚洲va综合人人澡精品| 成人一区二区三区视频| 亚洲精品免费一二三区| 欧美日韩国产大片| 国产一区二区三区香蕉| 国产精品私房写真福利视频| 欧美性色黄大片| 极品美女销魂一区二区三区免费 | 亚洲男同性视频| 欧美日韩久久久一区| 美女一区二区三区| 中文字幕免费在线观看视频一区| 色婷婷av一区二区三区之一色屋| 五月天中文字幕一区二区| 久久综合成人精品亚洲另类欧美 | 欧美精品123区| 国产黄色成人av| 亚洲一区视频在线| 久久精品水蜜桃av综合天堂| 91丨porny丨国产| 美腿丝袜亚洲一区| 亚洲欧洲日韩女同| 日韩精品一区二区在线| 9i在线看片成人免费| 蜜桃传媒麻豆第一区在线观看| 亚洲欧洲日韩女同| 久久―日本道色综合久久| 色成人在线视频| 国产一区中文字幕| 日韩和的一区二区| 亚洲欧美日韩国产一区二区三区| 91麻豆精品国产91久久久久久久久 | 亚洲成人av在线电影| 国产无人区一区二区三区| 欧美熟乱第一页| 北条麻妃国产九九精品视频| 美女在线一区二区| 亚洲国产美女搞黄色| 国产精品视频免费| 欧美精品一区二区不卡 | 久久久不卡网国产精品一区| 欧美日韩黄视频| 色噜噜狠狠一区二区三区果冻| 粉嫩av一区二区三区粉嫩| 久久精品久久精品| 天天综合网天天综合色| 亚洲一区二区欧美日韩| 亚洲蜜臀av乱码久久精品 | 91丨porny丨中文| 丁香亚洲综合激情啪啪综合| 激情小说欧美图片| 日韩黄色一级片| 日韩国产在线观看一区| 日韩和欧美一区二区| 天天色天天操综合| 亚洲人成精品久久久久久| 国产精品视频在线看| 亚洲国产高清不卡| 国产日韩欧美不卡在线| 国产亚洲精品免费| 日本一区二区三级电影在线观看| 久久免费偷拍视频| 久久丝袜美腿综合| 国产亚洲人成网站| 国产精品乱人伦中文| 国产精品久久久久久久蜜臀| 国产欧美一区二区三区网站| 欧美国产激情一区二区三区蜜月 | 成人综合婷婷国产精品久久蜜臀| 国产一区亚洲一区| 成人福利在线看| 99久久伊人精品| 日本二三区不卡| 欧美日韩中文字幕精品| 在线不卡免费av| 欧美v亚洲v综合ⅴ国产v| 精品国产麻豆免费人成网站| 久久久五月婷婷| 一色桃子久久精品亚洲| 亚洲一区欧美一区| 秋霞电影网一区二区| 国产又黄又大久久| 97精品视频在线观看自产线路二| 91麻豆蜜桃一区二区三区| 欧美亚洲一区三区| 欧美成人乱码一区二区三区| 久久久欧美精品sm网站| 中文字幕在线不卡| 首页亚洲欧美制服丝腿| 国产原创一区二区三区| 99精品国产视频| 69成人精品免费视频| 国产亚洲成aⅴ人片在线观看 | 国产一区二区三区黄视频 | 免费日韩伦理电影| 国产aⅴ综合色| 在线看国产日韩| 精品久久国产老人久久综合| 国产精品卡一卡二| 天天操天天色综合| 丁香另类激情小说| 欧美日韩国产综合久久| 久久免费午夜影院| 亚洲成年人影院| 丰满岳乱妇一区二区三区| 欧美美女直播网站| 国产精品久久久久影院| 午夜日韩在线电影| 99久久精品久久久久久清纯| 欧美精品在欧美一区二区少妇| 国产欧美日韩在线视频| 日韩电影免费一区| 91无套直看片红桃| 久久久欧美精品sm网站| 五月激情综合婷婷| 97久久超碰国产精品| 久久久久国产精品免费免费搜索| 婷婷中文字幕综合| 91福利精品视频| 国产精品久久久久久久裸模 | 国产色一区二区| 免费人成在线不卡| 欧美日韩国产一区二区三区地区| 久久精品视频在线免费观看| 全国精品久久少妇| 欧美日韩在线直播| 亚洲精品国产无天堂网2021| 国产老肥熟一区二区三区| 欧美一区二区福利视频| 亚洲一区二区偷拍精品| www.日本不卡| 中文字幕国产一区| 国产一区二区三区av电影| 91精品国产综合久久精品性色| 一区二区三区精品在线| 99视频精品免费视频| 中文乱码免费一区二区| 国产一区二三区好的| 日韩视频中午一区| 偷窥国产亚洲免费视频| 欧美日韩精品三区| 亚洲成av人片在线观看| 欧美偷拍一区二区| 亚洲国产欧美一区二区三区丁香婷| 91视视频在线观看入口直接观看www | 欧美探花视频资源| 午夜影视日本亚洲欧洲精品| 欧美视频一区二| 日韩激情在线观看|