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

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

?? main.c.bak

?? 射頻芯片驅(qū)動(dòng)
?? BAK
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
 /** @file main.c
 *
 * @author Runar Kjellhaug
 *
 * @compiler This program has been tested with Keil C51 V7.50.
 *
 * @copyright
 * Copyright (c) 2005 Nordic Semiconductor. All Rights Reserved.
 *
 * The information contained herein is confidential property of Nordic Semiconductor. The use,
 * copying, transfer or disclosure of such information is prohibited except by express written
 * agreement with Nordic Semiconductor.
 * @endcopyright
 *
 * $Date: 3.03.06 10:52 $
 * $Revision: 60 $
 *
 */
//  Global defines & includes
#include <cygnal\c8051F320.h>
#include "include\defines.h"
#include "include\usb.h"
#include "include\fwupgrade.h"
#include "include\F320_FlashPrimitives.h"
#include "include\nRF_API.h"
#include "include\ADC.h"
#include "include\TestApp.h"
#include "include\LL_API.h"
#include "include\Protocol_API.h"

code const UINT FW  = FW_VERSION;                                     // Firmware version, const..

BYTE xdata RX_buffer[USB_RX_SIZE];                                    // Last packet received from host通過(guò)USB接口從主機(jī)接收到的數(shù)據(jù)緩沖區(qū)

BYTE xdata TX_buffer[USB_TX_SIZE];                                    // Next packet to sent to host

BYTE xdata TX_pload[TX_PLOAD_MAX_WIDTH];                              // TX payload buffer
BYTE xdata RX_pload[RX_PLOAD_MAX_WIDTH];                              // RX payload buffer

BYTE xdata Table_Ptr;                                                 // Pointer for Freq_table lookup跳頻表的指針
BYTE xdata Freq_table[FREQ_TABLE_SIZE] = {2,27,52,7,32,57,12,37,
                                         62,17,42,67,22,47,72,77};    // Freq Agility table, predefined跳頻表

BYTE xdata Trans_Ctrl[TRANS_PARAMS];                                  // Transmission Control bytes發(fā)送控制字節(jié)
BYTE xdata Freq_agil[NUM_OF_PIPES];                                   // Freq Agility On/Off for pipe.n此數(shù)組的元素為一些時(shí)間值 
BYTE xdata TX_Addr[TX_ADDR_WIDTH];                                    // TX address buffer
BYTE xdata RX_pload_length[NUM_OF_PIPES];                             // holds #of bytes for pipe 0..5
BYTE xdata TX_pload_width;                                            // TX payload width variable
BYTE xdata Freq_Agil_Status;                                          // Variable that holds status of frequency agility是否跳頻的標(biāo)志變量
BYTE xdata Freq_Agil_Pipe;                                            //

BYTE xdata Button_Mode = 0;   //
BYTE xdata Button;                                                    // Variable that holds button index for communication
BYTE xdata SW1_Released;

//Status bytes
BYTE USB_Rx_Comp = 0;                                                 // Indicates new USB frame received
BYTE SPI_Mode = 0;                                                    // Select between HW and SW SPI
BYTE Sweep_Mode = 0;                                                  // Sweep mode on/off
BYTE Com_Mode = 2;                                                    // Communication mode on/off
BYTE IRQ_Source = 0x00;                                               // Indicates IRQ source from nRF24L01
BYTE Sweep_Progress;
BYTE Test_Mode;
BYTE Agil_Timeout;
BYTE LinkStatus[2];                                                   // Link status array, status & channel在LinkStatus數(shù)組內(nèi),先是通道狀態(tài)字節(jié),然后才是通道編號(hào)
BYTE LinkStat,LastStat;  //LinkStat表示當(dāng)前鏈路狀態(tài),LastStat表示歷史鏈路狀態(tài)
BYTE TX_Update;
BYTE RX_Timeout;
UINT Link_Loss_Delay;                                                 // Link Loss dalay variable
BYTE Link_Loss_Status;

BYTE RX_pipe;                                                         // store RX_FIFO pipe number.RX_pipe的值通過(guò)讀取射頻芯片的狀態(tài)寄存器獲得
BYTE byte_ctr;

// Variables used for 'Sweep_Mode'
BYTE sw_low,sw_high,next_ch;
BYTE Sweep_Time_Ctr = 0;

BYTE Trans_Tmr;                                                       // Variables for trans timer comm mode一個(gè)信道發(fā)射時(shí)間計(jì)數(shù)
BYTE Trans_Tmr_Ctr = 0;                                     					// Variables for trans timer comm mode
BYTE Timer_Mode;                                                      // Variable for timer mode
BYTE Try_Ctr;                                                         // Try Counter variable
BYTE Pipe_Length;                                                     // Current RX pipe length variable
UINT CPU_temp, RF_Vdd;
BYTE Led_Blink1,Led_Blink2,Led_Blink3,Led_Blink4;
BYTE T2_State;   //定時(shí)器T2的狀態(tài)標(biāo)志

//--------------------------------------------------------------------
// Main Routine
//--------------------------------------------------------------------
void main(void)
{
  CPU_Init();                    //系統(tǒng)初始化

  while (TRUE)
  {
#ifdef _TESTMODE_   //若是在測(cè)試模式
    while (!USB_Rx_Comp)                                              // wait for USB command
    {
      if(!SW1) Test_TX();                                             // Goto TX mode
      if(!SW2) Test_RX();                                             // Goto RX mode
      if(USB_SW != 0x0f)                                              // Enable SW3 = CE if USB_ID <> 0.
      {
        if(!SW3)
        {
          CE_Pin(CE_HIGH);                                            // Hold CE high while SW3 is pressed.
        }
        else 
        {
          CE_Pin(CE_LOW);                                             // Hold CE low as long as SW3 is released.
        }
      }
    }
#else               //不是在測(cè)試模式下
    while(!USB_Rx_Comp)                                               // wait for USB command, and prosess other operations
    {
      if(IRQ_Source)                                                  // wait for nRF24L01 interrupt
      {
      	EX0 = 0;                                                        // Disable External interrupt during prosessing
      	if(T2_State)
        {
          ET2 = 0;                                                    // Disable T2 interrupt
          Stop_T2();                                                  // and stop timer2
        }//if(T2_State)
        
        switch(IRQ_Source)
        {
          case RX_DR:
          { // RX Data received interrupt                                          
            do
            {
              RX_pipe = L01_Read_RX_Pload(RX_pload) >> 8;             // Read current payload
              if(Freq_Agil_Pipe == RX_pipe)                           // Packet received for "expected" pipe?
              { //若是從預(yù)定的通道接收到數(shù)據(jù)
                Blink_Led(LED1);                                      // _DEBUG_LED_ Led1 BLINK則LED1亮
                LinkStatus[LINK_STATUS] = LINK_ESTABLISH;             // Indicate "Link Loss"
                LinkStatus[LINK_CHANNEL] = L01_Get_Channel();         // Insert current channel讀取當(dāng)前通道編號(hào)
              
                LinkStat = LINK_ESTABLISH;                            // New LinkStat
                Agil_Timeout  = CLEARED;                              // Packet received, i.e. ok
                Trans_Tmr_Ctr = CLEAR;                                // Reset frequency agility timer清除跳頻定時(shí)器
              }
              else //若不是預(yù)定點(diǎn)通道接收到數(shù)據(jù),則LED2閃爍
                Blink_Led(LED2);                                      // _DEBUG_LED_ Led2 BLINK if data of other pipe
            }
            while(!(L01_Get_FIFO() & RX_EMPTY));                      // ..until FIFO empty

            L01_Clear_IRQ(MASK_RX_DR_FLAG);                           // clear RX_DR flag
          	break;
          }//case RX_DR:
          
          case TX_DS:  
          { // TX Data sent interrupt
            Blink_Led(LED1);                                          // _DEBUG_LED_ Led1 BLINK
            LinkStat = LINK_ESTABLISH;                                // set LinkStat = LINK_ESTABLISH
            Trans_Tmr_Ctr = CLEAR;                                    // reset Transmitt Timer..

            L01_Clear_IRQ(MASK_TX_DS_FLAG);                           // Clear TX_DS flag
          	break;
          }//case TX_DS:

          case MAX_RT:
          {	//最多次重發(fā)中斷
            Blink_Led(LED3);                                          // _DEBUG_LED_ Led3 BLINK

            if(Freq_Agil_Status)                                      // running in freq_agil mode?
            {	//若采用了跳頻
              if(++Table_Ptr == FREQ_TABLE_SIZE)                      // Freq_table wrapping?
              {	//若跳頻表中的頻點(diǎn)已用完
                Blink_Led(LED4);                                      // _DEBUG_LED_ Led4 BLINK則LED4閃爍
                Table_Ptr = CLEAR;                                    // Reset Table_Ptr to first channel清除跳頻表的指針
                if(Try_Ctr++ == 3)
                {	//若嘗試次數(shù)已達(dá)3次
                  LinkStat = STOP;  //停止使用當(dāng)前頻點(diǎn)
                }
              }//if(++Table_Ptr == FREQ_TABLE_SIZE)
              L01_Set_Channel(Freq_table[Table_Ptr]);                 // select new channel使用新的信道
            }//if(Freq_Agil_Status)
            
            Trans_Tmr_Ctr = CLEAR;                                    // reset Transmitt Timer..
            switch(LinkStat)
            {
              case LINK_ESTABLISH:        // max retransmitt, but had comm on last channel達(dá)到了最多次重發(fā),但在上一個(gè)信道通信成功
                L01_Clear_IRQ(MASK_MAX_RT_FLAG);                      // clear MAX_RT flag (nRF24L01)清除最多次重發(fā)標(biāo)志           
                LinkStat = LINK_LOSS;                                 // change LinkStat state to LINK_LOSS, wait for new timeout
              	break;
              case LINK_LOSS:             // still not connected, run channel scan..若鏈路沒(méi)有建立成功,執(zhí)行信道掃描
                L01_Clear_IRQ(MASK_MAX_RT_FLAG);                      // clear MAX_RT flag (nRF24L01)
                CE_Pin(CE_PULSE);                                     // retransmitt packet再次發(fā)包  
                LinkStat = LINK_RELOST;                               // change LinkStat state to LINK_RELOST
              	break;        
              case LINK_RELOST:						//若是再次丟失
                L01_Clear_IRQ(MASK_MAX_RT_FLAG);                      // clear MAX_RT flag (nRF24L01)
                CE_Pin(CE_PULSE);                                     // retransmitt packet再次發(fā)包    
                LinkStat = LINK_RELOST;
              	break;
              case STOP:									//
                L01_Clear_IRQ(MASK_MAX_RT_FLAG);                      // clear MAX_RT flag
                LinkStat = LINK_ESTABLISH;                            // stop retransmission
              	break;
            }//switch(LinkStat)
          break;
        }//case MAX_RT:
				default:                          // ..error handler     
          break;
      	}//switch(IRQ_Source)
        IRQ_Source = CLEAR;   // Clear IRQ flag

        if(T2_State)
        {
            Start_T2();
            ET2 = 1;                                                  // Enable T2 interrupt only if T2 in use          
        }//if(T2_State)

        EX0 = 1;                                                      // Enable external interrupt again..
      }
      
      Check_Button_TX();

    }
#endif
    Sweep_Mode = CLEAR;                                               // Terminate Sweep_Mode
    USB_Rx_Comp = CLEAR;
    switch(RX_buffer[CMD])                                            // USB command decoder解析通過(guò)USB接口接收到的命令
    {
      case CSN_STATE:                                                 // Set/Reset CSN(NSS) pin
        CSN_Pin(RX_buffer[ARG]);
        TX_buffer[0] = 0;
        Block_Write(TX_buffer,1);
      break;

      case SPI_COMMAND:                                               // Writes a SPI byte
        TX_buffer[0] = SPI_RW(RX_buffer[ARG]);
        Block_Write(TX_buffer,1);
      break;

      case CE_BIT:                                                    // Set/Reset CE pin
        CE_Pin(RX_buffer[ARG]);
        
        TX_buffer[0] = 0;
        Block_Write(TX_buffer,1);
      break;

      case FW_VER:                                                    // Return current FirmWare version
        TX_buffer[0] = (BYTE)(FW>>8);                                 // Get major FW_Ver
        TX_buffer[1] = (FW & 0xff);                                   // Get minor FW_Ver
        
        Block_Write(TX_buffer, 2);
      break;

      case READ_USB_ID:                                               // Return current USB_ID switch setting
        TX_buffer[0] = USB_ID;                                        // macro; defines.h
        Block_Write(TX_buffer,1);
      break;

      case WRITE_LEDS:                                                // Set/Reset LED...
        Write_Led(RX_buffer[ARG], RX_buffer[VALUE]);
        TX_buffer[0] = 0;
        Block_Write(TX_buffer,1);
      break;

      case WR_FLASH_BLOCK:                                            // Writes 32 bytes of flash data to block 'n'
        WritePageBlock(RX_buffer[ARG], &RX_buffer[VALUE]);
        TX_buffer[0] = 0x00;
        Block_Write(TX_buffer,1);
      break;

      case RD_FLASH_BLOCK:                                            // Reads and return 32 bytes of flash block 'n'
        ReadPageBlock(RX_buffer[ARG], &TX_buffer[0]);
        Block_Write(TX_buffer, SZ_BLOCK);
      break;

      case WR_FLASH_PAGE:                                             // Writes the flash page n*256 buffer to flash
        if (RX_buffer[ARG] == 0)
          EA = 0;
        WriteFlashPage((unsigned)RX_buffer[ARG]);
        if (RX_buffer[ARG] == 0)
          EA = 1;

        TX_buffer[0] = 0x00;
        Block_Write(TX_buffer,1);
      break;

      case RD_FLASH_PAGE:                                             // Read the n*256 flash page to flash buffer
        ReadFlashPage((unsigned)RX_buffer[ARG]);
        TX_buffer[0] = 0x00;
        Block_Write(TX_buffer,1);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久第一福利 | 99精品1区2区| 亚洲第一成年网| 久久久久久久久免费| 欧美日韩精品福利| 99久久伊人精品| 久久99精品久久久| 五月婷婷久久丁香| 亚洲精品免费在线播放| 欧美国产一区二区在线观看| 91精品国产欧美日韩| 99久久777色| 国产福利精品一区| 蜜臀av一区二区三区| 亚洲一区中文日韩| 亚洲欧美中日韩| 国产日韩欧美在线一区| 日韩精品最新网址| 91精品国产手机| 欧美日韩视频在线一区二区| 色婷婷亚洲一区二区三区| 国产传媒欧美日韩成人| 久久精品国产秦先生| 天堂va蜜桃一区二区三区漫画版| 亚洲精品ww久久久久久p站| 国产午夜精品久久久久久久 | 亚洲欧美在线另类| 亚洲国产成人在线| 久久免费看少妇高潮| 欧美v日韩v国产v| 日韩精品一区二| 日韩一区二区高清| 欧美一区二区在线视频| 欧美伦理视频网站| 5566中文字幕一区二区电影| 欧美三电影在线| 欧美日韩你懂得| 在线91免费看| 日韩午夜在线影院| 日韩精品中文字幕在线不卡尤物| 欧美一区二区免费观在线| 欧美日韩aaa| 欧美一区二区在线免费观看| 日韩视频免费直播| 日韩免费一区二区三区在线播放| 日韩免费看的电影| 久久亚洲一级片| 国产精品卡一卡二卡三| 亚洲人成精品久久久久| 亚洲一区在线电影| 五月激情六月综合| 免费成人美女在线观看.| 国模冰冰炮一区二区| 成人综合激情网| 91亚洲永久精品| 欧美午夜精品免费| 日韩欧美一区在线观看| 久久人人97超碰com| 国产精品污网站| 亚洲精品国产高清久久伦理二区| 亚洲一区二区三区四区在线免费观看 | 国产精品久久久久影院| 亚洲女人****多毛耸耸8| 亚洲综合图片区| 奇米影视7777精品一区二区| 国产一区视频导航| 97久久超碰国产精品| 在线免费av一区| 91精品国产综合久久久蜜臀图片| 欧美成人精品3d动漫h| 国产精品污污网站在线观看| 亚洲综合视频在线观看| 国内精品伊人久久久久影院对白| 成熟亚洲日本毛茸茸凸凹| 日本道免费精品一区二区三区| 欧美一区二区久久| 国产精品久久久久天堂| 午夜成人免费电影| 国产suv精品一区二区6| 欧美日本乱大交xxxxx| 久久精品一级爱片| 亚洲自拍偷拍网站| 国产最新精品免费| 欧美日韩午夜在线视频| 亚洲国产成人一区二区三区| 亚洲大片免费看| 国产成人av网站| 91精品国产一区二区三区蜜臀| 国产精品网站在线播放| 美女视频一区二区三区| 91色porny蝌蚪| 久久久国产精品不卡| 婷婷开心激情综合| eeuss影院一区二区三区 | 欧美高清你懂得| 1000部国产精品成人观看| 麻豆精品视频在线| 欧美午夜电影一区| 国产精品女人毛片| 久久99国产精品麻豆| 欧美日本不卡视频| 亚洲色图欧美激情| 成人手机电影网| 精品电影一区二区三区 | 国产原创一区二区| 91超碰这里只有精品国产| 亚洲乱码国产乱码精品精可以看 | 欧美xxxxxxxxx| 丝袜美腿亚洲综合| 欧美私模裸体表演在线观看| 中文字幕亚洲电影| 国产米奇在线777精品观看| 69p69国产精品| 亚洲国产精品久久久久婷婷884| 成人性生交大片免费看视频在线| 日韩三级中文字幕| 午夜成人在线视频| 欧美蜜桃一区二区三区| 亚洲狠狠爱一区二区三区| 色www精品视频在线观看| 亚洲天堂a在线| 91偷拍与自偷拍精品| 国产精品久久久久久妇女6080 | 欧美大片免费久久精品三p| 亚洲高清视频在线| 欧美色国产精品| 亚洲自拍偷拍综合| 欧美在线免费观看视频| 一区二区三区91| 欧美在线影院一区二区| 一区二区三区在线视频观看58| 99re这里只有精品6| 日韩一区在线看| 91亚洲精华国产精华精华液| 亚洲色图.com| 91老师片黄在线观看| 亚洲精品欧美激情| 欧美日韩在线电影| 日本欧美加勒比视频| 日韩三级免费观看| 精品一二线国产| 久久久久久99精品| av午夜精品一区二区三区| 中文字幕日韩一区二区| 色播五月激情综合网| 亚洲一区二区三区美女| 欧美区在线观看| 狠狠色狠狠色综合日日91app| 精品国产123| a4yy欧美一区二区三区| 亚洲小说春色综合另类电影| 欧美二区乱c少妇| 精品无人码麻豆乱码1区2区| 久久精品欧美一区二区三区麻豆| 国产69精品久久99不卡| 亚洲图片你懂的| 欧美日韩免费观看一区三区| 日韩精品电影在线| 久久久久久久久伊人| 91影院在线观看| 亚洲曰韩产成在线| 精品久久99ma| 91社区在线播放| 日韩精品一级中文字幕精品视频免费观看 | 国产精品美女久久久久aⅴ国产馆| 99re热视频这里只精品| 午夜精品福利一区二区三区蜜桃| 欧美成人在线直播| 不卡一区中文字幕| 日韩国产精品大片| 日本一区二区三区四区在线视频| 欧美综合亚洲图片综合区| 老色鬼精品视频在线观看播放| 日本一二三不卡| 在线不卡一区二区| 成人免费观看男女羞羞视频| 亚洲一区二区三区四区在线免费观看| 日韩欧美精品在线| 色综合天天综合在线视频| 日本va欧美va精品发布| 亚洲欧美中日韩| 欧美变态凌虐bdsm| 91精品福利在线| 国产成人av在线影院| 亚洲国产精品自拍| 日本一区二区视频在线| 日韩一级片在线播放| av一区二区三区四区| 激情成人综合网| 午夜视频在线观看一区| 国产欧美久久久精品影院| 欧美一三区三区四区免费在线看| 成人自拍视频在线观看| 蜜臀久久99精品久久久久久9| 最新不卡av在线| 国产婷婷色一区二区三区| 4438x亚洲最大成人网| 91麻豆.com| 成人国产精品视频| 国产麻豆精品久久一二三|