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

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

?? ll_api.c

?? 用單片機對NORDIC的無線芯片進行處理的C51程序
?? C
字號:
/** @file low_level.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: 2.03.06 15:23 $
 * $Revision: 41 $
 *
 */
#include <cygnal\c8051F320.h>
#include "include\LL_API.h"
#include "include\usb.h"
#include "include\nRF_API.h"
#include "include\ADC.h"
#include "include\Protocol_API.h"
#include "include\defines.h"

extern BYTE xdata TX_pload[TX_PLOAD_MAX_WIDTH];         // TX payload buffer
extern BYTE xdata Freq_table[FREQ_TABLE_SIZE];          // Freq Agility table
extern BYTE xdata Freq_agil[NUM_OF_PIPES];              // Freq Agility On/Off for pipe.n
extern BYTE xdata Trans_Ctrl[TRANS_PARAMS];             // Transmission Control bytes
extern BYTE xdata RX_pload_length[NUM_OF_PIPES];        // holds #of bytes for pipe 0..5
extern BYTE xdata TX_pload_width;                       // TX payload width variable
extern BYTE xdata TX_buffer[USB_TX_SIZE];               // Next packet to sent to host
extern BYTE LinkStatus[2];
extern BYTE LinkStat, LastStat;                         // Link Status bytes
extern BYTE xdata Button, SW1_Released;
extern BYTE xdata Button_Mode;

extern BYTE Com_Mode;
extern BYTE SPI_Mode;
extern BYTE Led_Blink1,Led_Blink2;
extern BYTE Led_Blink3,Led_Blink4;
extern UINT Link_Loss_Delay;
extern BYTE Try_Ctr;

code const BYTE P0_ADDR[4] =  {0xE7,0xE7,0xE7,0xE7};    // Default P0 address
code const BYTE P1_ADDR[4] =  {0xC2,0xC2,0xC2,0xC2};    // Default P1 address

void CPU_Init(void)
{
BYTE counter;

  PCA0MD &= ~0x40;                                      // Disable Watchdog timer
  Port_Init();
  SPI_Init(HW_MODE);                                    // Default HW SPI Mode
  ADC_Init();                                           // Init & enable ADC
  OSCICN |= (0x03);                                     // SYSCLK = OSC/1, i.e. 12MHz
  IT01CF = 0x05;                                        // Assign /INT0 to P0.5 pin
  IT0 = 1;                                              // Edge trigged interrupt0 (nRF24L01 IRQ)
  
  Init_T0();                                            // Init Timer0..
  Start_T1();                                           // Init Timer1
  Init_T2();                                            // Start Timer2
  
  USB_Initialize();
  REG0CN |= 0x80;                                       // Internal Voltage Regulator Disabled
  
  TX_pload_width = 16;
  for(counter=0;counter<TX_pload_width;counter++) 
    TX_pload[counter] = counter+2;                      // Init TX_payload buffer
  
  Freq_agil[PIPE0] = 8;                                 // Init Freq_agil for pipe0; 8ms
  for(counter=1;counter<6;counter++)                    
    Freq_agil[counter] = 0;                             // the rest is disabled
  
  for(counter=0;counter<6;counter++)                    // Init RX_pload_length for all pipe's
    RX_pload_length[counter] = 0x10;                    // Default 16 bytes
  
  Trans_Ctrl[0] = 0;                                    // Default trans ctrl; Timer Mode
  Trans_Ctrl[1] = 5;                                    // Default timer: 5ms
  Com_Mode = 2;                                         // Default, communication mode disabled
}

//-------------------------
// Port_Init
//-------------------------
// Port Initialization
// - Configure the Crossbar and GPIO ports.
//
void Port_Init(void)
{

  P0MDOUT = P0_DOUT;                                    // Port0..3 Mode & Values, see. "low_level.h" for details
  P1MDOUT = P1_DOUT;
  P2MDOUT = P2_DOUT;
  P2MDOUT = P2_DOUT;

  P0MDIN  = P0_DIN;
  P1MDIN  = P1_DIN;
  P2MDIN  = P2_DIN;
  P3MDIN  = P3_DIN;

  P0      = P0_INIT;
  P1      = P1_INIT;
  P2      = P2_INIT;
  P3      = P3_INIT;

  XBR0    = XBAR0;                                      // XBR0.1 => SPI Enabled
  XBR1    = XBAR1;                                      // Enable Crossbar
}


void WD_Reset(void)                                     // "Reset" 礐
{
  USB_Disable();
  ET2 = 0x00;
  EX0 = 0x00;
  PCA0CPL4  = 0xff;
  PCA0MD    = 0x00;
  PCA0MD   |= 0x40;

  while(1);
}


void Init_T0(void)
{
  TH0 = 253;                                            // Init T0 reload value, 12祍
  TL0 = 253;                                            // Init T0 start value..
  CKCON |= 0x02;                                        // T0 = SCK/48
  TMOD |= 0x02;                                         // T0:Mode2, 8-bit reload timer.
  ET0 = 1;                                              // Enable timer0 interrupt
}

void Start_T1(void)
{
  TH1 = 194;                                            // Init T1 reload value, 250祍
  TL1 = 194;                                            // Init T1 start value..
  CKCON |= 0x02;                                        // T1 = SCK/48
  TMOD |= 0x20;                                         // T1:Mode2, 8-bit reload timer.
  ET1 = 1;                                              // Enable timer1 interrupt
  TR1 = 1;                                              // Start timer1...
}


void Init_T2(void)                                     // Init Timer2 for 1ms intervals
{
  TMR2H = 0x00;                                         // T2 CounterH = 0
  TMR2L = 0x00;                                         // T2 CounterL = 0
  TMR2RLH = 0xfc;                                       // T2 ReloadH
  TMR2RLL = 0x18;                                       // T2 ReloadL
//  TMR2CN  = 0x04;                                       // T2 Enabled
}

void Start_T2()                                         // Start Timer2
{
  TMR2CN |= 0x04;                                       
}

void Stop_T2()                                          // Stop Timer2 and clear T2 counter
{
  TMR2CN &= ~0x04;
//  TMR2H = 0x00;                                         // T2 CounterH = 0
//  TMR2L = 0x00;                                         // T2 CounterL = 0

}

void Write_Led(BYTE led, BYTE state)                    // Set/reset LEDn
{
  switch(led)
  {
    case LED1:
      Led1 = !state;                                    // Output value to LED1
    break;

    case LED2:
      Led2 = !state;                                    // Output value to LED2
    break;

    case LED3:
      Led3 = !state;                                    // Output value to LED3
    break;

    case LED4:
      Led4 = !state;                                    // Output value to LED4
    break;
  }

}

void Toggle_Led(BYTE led)                               // Toggle state of LEDn
{
  switch(led)
  {
    case LED1:
      Led1 = ~Led1;
    break;
    
    case LED2:
      Led2 = ~Led2;
    break;
    
    case LED3:
      Led3 = ~Led3;
    break;
    
    case LED4:
      Led4 = ~Led4;
    break;
  }
}

void Blink_Led(BYTE led)                                // Lit LEDn, timer1 clear LEDn
{
  switch(led)
  {
    case LED1:
      Led1 = 0;
      Led_Blink1 = 2;
    break;

    case LED2:
      Led2 = 0;
      Led_Blink2 = 2;
    break;

    case LED3:
      Led3 = 0;
      Led_Blink3 = 2;
    break;

    case LED4:
      Led4 = 0;
      Led_Blink4 = 2;
    break;
  }

}

void CE_Pin(BYTE action)                                // CE pin high, low or pulse..
{
  switch(action)
  {
    case CE_LOW:                                        // action == 0, CE low
      CE = 0;
    break;

    case CE_HIGH:                                       // action == 1, CE high
      CE = 1;
    break;

    case CE_PULSE:                                      // action == 2, CE pulse (10祍)
      Blink_Led(LED2);
      CE = 1;                                           // Set CE pin high
      TR0 = 1;                                          // Start Timer0, CE pulse timer
    break;
  }
}

void CSN_Pin(BYTE state)                                // Set/reset CSN pin
{
  if(state)
    CSN = 1;
  else
    CSN = 0;
}

void SCK_Pin(BYTE state)                                // Set/reset SCK pin
{
  if(state)
    SCK = 1;
  else
    SCK = 0;
}

void MOSI_Pin(BYTE state)                               // Set/reset MOSI pin
{
  if(state)
    MOSI = 1;
  else
    MOSI = 0;
}

BYTE MISO_Pin(void)                                     // Read MISO pin
{
  return MISO;
}

BYTE SPI_HW(BYTE byte)                                  // Write one byte using F320's hardware SPI
{
  SPI0DAT = byte;                                       // Writes 'byte' to nRF24L01
  while(WAIT_SPIF);                                     // ..and wait until SPIF goes high, i.e. transaction finish
  SPI0CN &= 0x7f;                                       // clear SPIF

  return(SPI0DAT);                                      // return received byte
}

void SPI_Init(BYTE Mode)
{
  if(Mode)                                             // If HW_SW = 1 =>> hardware SPI, else software SPI.
  {
    SPI0CFG = SPI_CFG;                                  // SPI Configuration Register
    SPI0CN  = SPI_CTR;                                  // SPI Control Register
    SPI0CKR = SPI_CLK;                                  // SPI Clock Rate Register
    XBR0 |= SPI0E;                                      // SPI SW Mode, enable SPI Crossbar

    SPI_Mode = HW_MODE;
  }
  else                                                  // Software SPI mode
  {
    SPI0CN  = 0x00;                                     // SPI Control Register, SPI Disabled
    
    XBR0 &= ~SPI0E;                                     // SPI SW Mode, disable SPI Crossbar
    SPI_Mode = SW_MODE;
  }
}

void Update_Link_Status(void)
{
  if(LinkStat != LastStat)                              // Same Link Status as last time?
  {
    TX_buffer[0] = LinkStatus[LINK_STATUS];
    TX_buffer[1] = LinkStatus[LINK_CHANNEL];
    TX_buffer[2] = Link_Loss_Delay>>8;
    TX_buffer[3] = Link_Loss_Delay;
    Block_Write(TX_buffer, 4);
  }
  LastStat = LinkStat;
}


BYTE Send_Packet_Button(void)                           // Send one data packet, controlled by Button1(SW1)
{
BYTE send_packet;
  if(!SW1)
  {                                                     // Button1 pressed?
    if(SW1_Released)                                    // and Button1 released since last press?
    {
      SW1_Released = 0;                                 // Button1 "pressed"
      send_packet = 1;                                  // flag for packet sending..
    }
    else
    {
      send_packet = 0;                                  // dont send packet
    }
  }
  else
  {
    SW1_Released = 1;                                   // Button1
    send_packet = 0;                                    // dont send packet
  }

  if(send_packet)
  {
    L01_Write_TX_Pload(TX_pload, TX_pload_width);       // Write new TX payload
    CE_Pin(CE_PULSE);                                   // Enable CE pulse, 12祍
    Try_Ctr = 0;                                        // Reset Try_Ctr before nex transmitt..
  }

  return send_packet;                                   // packet sent or not?

}

void Check_Button_TX(void)
{
  if(Button_Mode && (Com_Mode == TX_MODE))              // Scan button1 ONLY if "TX_MODE" AND Button_Mode
  {
    switch(LinkStat)
    {
      case LINK_ESTABLISH:
        if(Send_Packet_Button())                        // Blink LED2 and set new LinkStat if packet sent
        {
          Blink_Led(LED2);
          Try_Ctr = 0;
          LinkStat = LINK_LOSS;                         // default LINK_LOSS
        }
      break;
      
      default:
      
      break;
    }

  }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91在线观看| 国产日本欧美一区二区| 日本一区二区视频在线| 亚洲国产中文字幕在线视频综合| 蜜臀久久99精品久久久画质超高清 | 精品一区二区在线看| 色婷婷久久久久swag精品| 久久九九久精品国产免费直播| 亚洲成年人影院| 91美女片黄在线观看| 中文字幕巨乱亚洲| 国产精品18久久久久久vr| 欧美精品日韩一本| 亚洲一区在线看| 色综合 综合色| 亚洲欧美福利一区二区| 成人性生交大片免费看中文网站| 日韩精品一区二区三区在线播放 | 色综合天天综合网天天狠天天 | 日韩一区二区不卡| 亚洲国产日韩a在线播放性色| 欧美一级二级三级蜜桃| 亚洲丝袜美腿综合| 国产91丝袜在线观看| 久久蜜桃av一区二区天堂| 免费国产亚洲视频| 日韩欧美在线1卡| 美国毛片一区二区| 日韩欧美视频一区| 久久成人精品无人区| 亚洲一区二区三区国产| 成人激情小说网站| 国产精品久久久久久户外露出| 国产乱码精品一区二区三区五月婷| 日韩女优av电影| 久久成人久久鬼色| 国产欧美在线观看一区| 国内不卡的二区三区中文字幕 | 国产成人精品免费在线| 久久先锋资源网| 精品亚洲欧美一区| 久久夜色精品一区| 国产成人aaa| 国产精品福利影院| 91福利资源站| 日韩国产欧美在线观看| 日韩一二三区视频| 国产一区二区视频在线| 中文字幕第一区综合| 99视频在线精品| 亚洲最新视频在线观看| 91精品国产综合久久精品图片| 蜜桃久久久久久| 国产亚洲短视频| 91免费看`日韩一区二区| 亚洲一区二区三区中文字幕| 欧美精品一二三区| 国精产品一区一区三区mba桃花| 国产亚洲一区二区三区在线观看| 成人av网站在线观看| 一区二区三区免费在线观看| 欧美一区二区女人| 国产精品99久| 亚洲成精国产精品女| 久久久亚洲精品石原莉奈| 色香蕉成人二区免费| 麻豆成人91精品二区三区| 中文字幕一区二区三中文字幕| 8v天堂国产在线一区二区| 国产精品18久久久久| 亚洲成av人片| 国产精品嫩草影院com| 欧美日韩一区不卡| 成人午夜激情片| 日本不卡高清视频| 亚洲人成网站在线| www久久精品| 欧美日韩电影在线| 99r精品视频| 久久av资源站| 亚洲va韩国va欧美va| 国产视频911| 日韩三级高清在线| 色94色欧美sute亚洲线路二| 激情丁香综合五月| 午夜久久福利影院| 亚洲欧洲日韩女同| xnxx国产精品| 欧美一区二区三区视频免费| 91麻豆精品视频| 成人做爰69片免费看网站| 美女网站在线免费欧美精品| 亚洲精品欧美专区| 18涩涩午夜精品.www| 久久综合色天天久久综合图片| 欧美亚洲国产怡红院影院| av在线不卡网| 丁香亚洲综合激情啪啪综合| 蜜臀av一区二区| 日韩国产欧美在线视频| 亚洲国产一二三| 一区二区三区在线视频免费| 最新热久久免费视频| 中文一区二区完整视频在线观看 | 欧美日韩国产免费一区二区| 97久久精品人人澡人人爽| 国产一区二区三区免费播放| 九色综合国产一区二区三区| 美国十次了思思久久精品导航| 日韩精品欧美成人高清一区二区| 一级女性全黄久久生活片免费| 亚洲日穴在线视频| 亚洲欧美日韩国产一区二区三区| 国产日韩欧美一区二区三区乱码 | 欧美一区永久视频免费观看| 欧美亚洲一区三区| 欧美欧美欧美欧美| 欧美高清www午色夜在线视频| 欧美日韩在线一区二区| 欧美日韩国产不卡| 欧美一级精品在线| 久久这里只有精品6| 国产清纯美女被跳蛋高潮一区二区久久w| 2024国产精品视频| 国产三级精品三级| 最新高清无码专区| 亚洲激情校园春色| 丝瓜av网站精品一区二区| 免费日本视频一区| 国产成人综合在线播放| 成人a级免费电影| 欧美视频第二页| 日韩欧美电影一区| 国产精品网站导航| 亚洲一线二线三线视频| 麻豆一区二区三| 国产精品一区二区果冻传媒| 91在线国产观看| 777久久久精品| 国产午夜精品在线观看| 亚洲日本电影在线| 日本在线观看不卡视频| 国产精品白丝jk白祙喷水网站| 99视频一区二区三区| 欧美日韩精品系列| 久久精品欧美日韩| 亚洲制服丝袜一区| 国产九九视频一区二区三区| 99精品视频一区二区三区| 欧美日本高清视频在线观看| 久久综合狠狠综合久久综合88 | 国产一区二区三区av电影| 99精品视频一区| 日韩一区二区免费高清| 国产人伦精品一区二区| 偷拍自拍另类欧美| www.日韩精品| 日韩女优制服丝袜电影| 自拍偷拍亚洲综合| 狠狠色丁香九九婷婷综合五月| 91一区在线观看| 久久久三级国产网站| 午夜视频在线观看一区| 成人av在线资源| 日韩精品一区二区三区中文不卡 | 国产一区二区在线看| 色94色欧美sute亚洲线路二| 久久综合九色综合久久久精品综合| 一区二区三区在线免费观看| 国产成人一级电影| 欧美成人伊人久久综合网| 夜夜嗨av一区二区三区中文字幕| 激情综合亚洲精品| 日韩欧美黄色影院| 日日摸夜夜添夜夜添亚洲女人| 91免费版在线看| 日本一区二区三区久久久久久久久不| 日韩电影在线免费看| 91福利社在线观看| 中文字幕一区在线观看视频| 国产原创一区二区三区| 欧美成人精品3d动漫h| 午夜精品一区二区三区电影天堂| 91视频一区二区三区| 国产清纯在线一区二区www| 激情综合网天天干| 日韩亚洲欧美在线| 男女性色大片免费观看一区二区 | 国产精品一区二区久久不卡| 欧美一级高清片| 日韩电影在线一区| 9191久久久久久久久久久| 亚洲综合色噜噜狠狠| 色狠狠色噜噜噜综合网| 亚洲欧美一区二区久久| 色噜噜夜夜夜综合网| 亚洲一区二区在线免费看| 日本高清不卡视频| 亚洲一级电影视频| 欧美日韩一区二区三区四区五区|