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

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

?? onboard_xbee.c

?? nRF24E1 sample xBee development
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/***************************************************************
* Modified version of OnBoard.c for XBee platform.
*
****************************************************************/

#include "ZComDef.h"
#include "OnBoard_XBee.h"
#include "OnBoard.h"
#include "Osal.h"
#include "nwk.h"

#ifdef TARGET_XBEE

#define INTERRUPT

#define KBIE  0x02
#define KBACK 0x04

#define TurnOnLED1    PTCD &= ~0x20;
#define TurnOnLED2    PTDD &= ~0x02;
#define TurnOnLED3    PTBD &= ~0x10; 
#define TurnOnLED4    PTBD &= ~0x20; 
#define TurnOffLED1   PTCD |= 0x20; 
#define TurnOffLED2   PTDD |= 0x02; 
#define TurnOffLED3   PTBD |= 0x10; 
#define TurnOffLED4   PTBD |= 0x20; 

#define TurnOnBuzzer
#define TurnOffBuzzer

#define TurnOnBigLight
#define TurnOffBigLight

/*********************************************************************
 * EXTERNAL VARIABLES
 */
 
// Used to calculate the used stack
extern char __SEG_START_SSTACK[];
extern char __SEG_END_SSTACK[];
#define ONBOARD_STACK_START __SEG_START_SSTACK
#define ONBOARD_STACK_END   __SEG_END_SSTACK
#define STACK_INIT_VALUE  0xA5

/*********************************************************************
 * EXTERNAL FUNCTIONS
 */
extern void nwk_set_poll_evt( void );
extern void nwk_sendDummyData( void );


/*********************************************************************
 * LOCAL VARIABLES
 */
byte _SavedKeys;

/* OnBoard task id */
byte OnBoard_TaskID;  

// LED state at last set/clr/blink update
static byte ledState;

#if defined ( BLINK_LEDS )
  // LED Status Table
  static ledSts ledStatusTable[NBR_OF_LEDS];
#endif

// Registered keys task ID, initialized to NOT USED.
byte registeredKeysTaskID = 0xFF;


/*********************************************************************
 * LOCAL FUNCTIONS
 */
void KBIntSetup( byte state_on );
void KBInit( void );
void runThroughLEDs( void );
void LCDWaitLong( int w );
void UpdateLeds( void );
void LedOnOff( byte mask, byte on );


/*********************************************************************
 * @fn      Low Voltage Detect Interrupt
 * @brief   This ISR is called when power is low.
 * @param   
 * @return  
 */
void INTERRUPT LowVoltageDetectISR( void )
{
  
  // PUT YOUR CODE HERE to handle low power indicator
  
  // This code will toggle LEDs forever until power is gone
  osal_int_disable( INTS_ALL );  // Might not be needed since this is ISR.
  for ( ;; )
    runThroughLEDs();
}


/*********************************************************************
 *                    EVENT PROCESSING FUNCTIONS
 *
 * These functions perform event-based (interrupt & timer) processing
 * of board level I/O, such as, keypress inputs and LED displays.
 */

/*********************************************************************
 * @fn      OnBoard_TaskInit
 *
 * @brief   
 *
 *   OnBoard Monitoring Task Initialization.  This function is put into
 *   the task table.
 *
 * @param   byte task_id - task ID of the MT Task
 *
 * @return  void
 */
void OnBoard_TaskInit( byte task_id )
{
  OnBoard_TaskID = task_id;
  
#if defined ( KB_INT )  
  // This is to avoid interrupts until normal processing
  osal_set_event( task_id, KEYPRESS_SETUP_INT_EVT );
#else
  // Start the key polling
  osal_set_event( task_id, KEYPRESS_POLL_EVT );
#endif  
} /* OnBoard_TaskInit() */

/*********************************************************************
 * @fn      OnBoard_ProcessEvent
 *
 * @brief   
 *
 *   OnBoard Task Event Processor.  This task is put into the 
 *   task table.
 *
 * @param   byte task_id - task ID of the MT Task
 * @param   UINT16 events - event(s) for the MT Task
 *
 * @return  void
 */
void OnBoard_ProcessEvent( byte task_id, UINT16 events )
{
#if defined ( BLINK_LEDS )
  // Process LED blink event
  if ( events & LED_BLINK_EVT )
  {
    UpdateLeds();  // Update LED status
  }
#endif

#if defined ( KB_INT )  
  if ( events & KEYPRESS_SETUP_INT_EVT )
    KBIntSetup( true );
    
  if ( events & KEYPRESS_DEBOUNCE_EVT )
    osal_start_timerEx( OnBoard_TaskID, KEYPRESS_POLL_EVT, 50 );
#endif  

  if ( events & KEYPRESS_POLL_EVT )
  {
    gb60_read_keys();
    
#if defined ( KB_INT )  
    osal_set_event( task_id, KEYPRESS_SETUP_INT_EVT );
#else    
    osal_start_timerEx( OnBoard_TaskID, KEYPRESS_POLL_EVT, 100 );
#endif    
  }

#if defined ( FS_RX_FLOWCONTROL )
  if ( events & RX1_FLOW_TIMER_EVT )
  {
    SERIAL_PORT1_RX_RTS_DISABLE;    
    SERIAL_PORT1_RX_RTS_ENABLE;    
    osal_start_timerEx( OnBoard_TaskID, RX1_FLOW_TIMER_EVT, 1000 );
  }  
  
  if ( events & RX2_FLOW_TIMER_EVT )
  {
    SERIAL_PORT2_RX_RTS_DISABLE;    
    SERIAL_PORT2_RX_RTS_ENABLE;    
    osal_start_timerEx( OnBoard_TaskID, RX2_FLOW_TIMER_EVT, 1000 );
  }  
#endif  // FS_RX_FLOWCONTROL
  
} /* OnBoard_ProcessEvent() */


/*********************************************************************
 * @fn      Initialize the Board Peripherals
 * @brief   
 * @param   
 * @return  
 */
void InitBoard( void )
{
  // Set the direction for the LED Port
  PTCDD |= 0x20;
  PTDDD |= 0x02;
  PTBDD |= 0x30;

  // Turn the LEDs off 
  SetLed( LED_ALL, LED_OFF );
  
  // Initialize the Keyboard Interrupt Module
  KBInit();
  
  // Initialize the LCD Module

// Initialize the ports for the Serial RTS (Flow control)
#if defined ( FS_RX_FLOWCONTROL )
#if defined ( SERIAL_PORT1 )
  SERIAL_PORT1_RX_RTS_PORTENABLE;
  SERIAL_PORT1_RX_RTS_PORTDIRECTION;
  SERIAL_PORT1_RX_RTS_ENABLE;
  #if defined ( FS_RX_FLOWCONTROL )
  osal_start_timerEx( OnBoard_TaskID, RX1_FLOW_TIMER_EVT, 1000 );
  #endif
#endif
#if defined ( SERIAL_PORT2 )
  SERIAL_PORT2_RX_RTS_PORTENABLE;
  SERIAL_PORT2_RX_RTS_PORTDIRECTION;
  SERIAL_PORT2_RX_RTS_ENABLE;
  #if defined ( FS_RX_FLOWCONTROL )
  osal_start_timerEx( OnBoard_TaskID, RX2_FLOW_TIMER_EVT, 1000 );
  #endif
#endif
#endif  // FS_RX_FLOWCONTROL
} 



/*********************************************************************
* LED Support
*/

/*********************************************************************
 * @fn      SetLed
 *
 * @brief   Turn on, turn off, blink User LEDs
 * @param   mask - LED bit mask
 * @param   mode - LED_ON,LED_OFF,LED_BLINK
 *
 * @return  current LED status, 1=on
 */
byte SetLed( byte mask, byte mode )
{
#if defined ( BLINK_LEDS )
  byte led;
  ledSts *sts;

  if ( mode == LED_BLINK )
    // Default blink, 1 time, D% duty cycle
    BlinkLed( mask, 1, LED_DUTY_CYCLE, LED_BLINK_TIME );
  else if ( mode == LED_FLASH )
    // Default flash, N times, D% duty cycle
    BlinkLed( mask, LED_FLASH_COUNT, LED_DUTY_CYCLE, LED_BLINK_TIME );
  else
  {
    // ON, OFF, or TOGGLE
    led = LED1;
    mask &= LED_ALL;
    sts = ledStatusTable;

    while ( mask )
    {
      if ( mask & led )
      {
        if ( mode != LED_TOGGLE )
          sts->mode = mode;  // ON or OFF
        else
          sts->mode ^= LED_ON;  // Toggle
        LedOnOff( led, sts->mode );
        mask ^= led;
      }
      led <<= 1;
      sts++;
    }
  }
#else
  LedOnOff( mask, mode );
#endif  

  return ( ledState );
}

/*********************************************************************
 * @fn      BlinkLed
 *
 * @brief   Blink specified LEDs
 * @param   mask - LED bit mask
 * @param   nbr - number of time, 0=contiunuous
 * @param   on - percentage of cycle that's on
 * @param   time - milliseconds for one on/off cycle
 * @return  none
 */
void BlinkLed( byte mask, byte nbr, byte on, uint16 time )
{
#if defined ( BLINK_LEDS )
  byte led;
  ledSts *sts;

  if ( mask && on && time )
  {
    if ( on < 100 )
    {
      led = LED1;
      mask &= LED_ALL;
      sts = ledStatusTable;

      while ( mask )
      {
        if ( mask & led )
        {
          sts->mode = LED_OFF;  // Stop previous blink
          sts->time = time;  // Time for one on/off cycle
          sts->onPct = on;  // % of cycle LED is on
          sts->todo = nbr;  // Number of blink cycles
          if ( !nbr ) sts->mode |= LED_FLASH;  // Continuous
          sts->next = osal_GetSystemClock();  // Start now
          sts->mode |= LED_BLINK;  // Enable blinking
          mask ^= led;
        }
        led <<= 1;
        sts++;
      }
      osal_set_event( OnBoard_TaskID, LED_BLINK_EVT );
    }
    else
      SetLed( mask, LED_ON );  // >= 100%, turn on
  }
  else
    SetLed( mask, LED_OFF );  // No on time, turn off
#else
  on = (mask & ledState) ? LED_OFF : LED_ON;
  LedOnOff( mask, on );  // Toggle
#endif  
}

#if defined ( BLINK_LEDS )
/*********************************************************************
 * @fn      UpdateLeds
 *
 * @brief   Updates blinking/flashing LEDs
 * @param   none
 * @return  none
 */
void UpdateLeds( void )
{
  byte led;
  byte pct;
  byte mask;
  ledSts *sts;
  uint32 time;
  uint16 next;
  uint16 wait;

  next = 0;
  led = LED1;
  mask = LED_ALL;
  sts = ledStatusTable;

  while ( mask )
  {
    if ( mask & led )
    {
      if ( sts->mode & LED_BLINK )
      {
        time = osal_GetSystemClock();
        if ( time >= sts->next )
        {
          if (sts->mode & LED_ON )
          {
            pct = 100 - sts->onPct;  // Percentage of cycle for off
            sts->mode &= ~LED_ON;  // Say it's not on
            LedOnOff( led, LED_OFF );  // Turn it off

            if ( !(sts->mode & LED_FLASH) )
            {
              sts->todo--;  // Not continuous, reduce count
              if ( !sts->todo )
                sts->mode ^= LED_BLINK;  // No more blinks
            }
          }
          else
          {
            pct = sts->onPct;  // Percentage of cycle for on
            sts->mode |= LED_ON;  // Say it's on
            LedOnOff( led, LED_ON );  // Turn it on
          }
          
          if ( sts->mode & LED_BLINK )
          {
            wait = (((uint32)pct * (uint32)sts->time) / 100);
            sts->next = time + wait;
          }
          else
            wait = 0;
        }
        else
          wait = sts->next - time;  // Time left

        if ( !next || ( wait < next ) )
          next = wait;
      }
      mask ^= led;
    }
    led <<= 1;
    sts++;
  }
  
  if ( next )
    osal_start_timer( LED_BLINK_EVT, next );  // Come back later
}
#endif // BLINK_LEDS

/*********************************************************************
 * @fn      LedOnOff
 *
 * @brief   Turns specified LED on or off
 * @param   mask - LED bit mask
 * @param   on - LED_ON,LED_OFF,LED_BLINK
 * @return  none
 */

void LedOnOff( byte mask, byte on )
{
  if ( mask & LED1 )
  {
    if ( on == LED_ON ){
      TurnOnLED1;
    }
    else{
      TurnOffLED1;
    }
  }
  if ( mask & LED2 )
  {
    if ( on == LED_ON ){
      TurnOnLED2;
    }
    else{
      TurnOffLED2;
    }
  }
  if ( mask & LED3 )
  {
    if ( on == LED_ON ){
      TurnOnLED3;
    }
    else{
      TurnOffLED3;
    }
  }
  if ( mask & LED4 )
  {
    if ( on == LED_ON ){
      TurnOnLED4;
    }
    else{
      TurnOffLED4;
    }
  }

  // Remember current state
  if ( on )
    ledState |= mask;
  else
    ledState &= ~mask;
}

void runThroughLEDs( void )
{
  byte x;
  for ( x = LED1; x <= LED4; x<<=1 )
  {
    SetLed( x, LED_ON );
    LCDWaitLong( 50 );
    SetLed( x, LED_OFF );
    LCDWaitLong( 50 );
  }
}

void BigLight_On( void )
{
  TurnOnBigLight;
}

void BigLight_Off( void )
{

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲九九爱视频| 一本大道av一区二区在线播放| 午夜影院久久久| 亚洲成人综合在线| 五月天久久比比资源色| 午夜成人免费视频| 日韩高清在线电影| 免费人成在线不卡| 裸体健美xxxx欧美裸体表演| 另类人妖一区二区av| 久久er精品视频| 国产精品一区专区| 精品av久久707| 日韩免费高清av| 久久久一区二区三区| 国产欧美日本一区二区三区| 国产精品剧情在线亚洲| 中文字幕一区二区三区在线不卡| 亚洲日本一区二区| 亚洲国产一区二区视频| 日本不卡视频一二三区| 国内精品久久久久影院薰衣草| 国产一区在线视频| 99久久精品免费看| 欧美在线视频你懂得| 91精品国产综合久久久久| 精品久久久久久久久久久久包黑料| 26uuu色噜噜精品一区二区| 国产精品理伦片| 亚洲福利一区二区三区| 免费成人美女在线观看.| 国产高清在线精品| 日本国产一区二区| 日韩一区二区三区在线| 中文字幕第一区综合| 亚洲一区二区四区蜜桃| 久久国产欧美日韩精品| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 日韩激情一二三区| 国内精品嫩模私拍在线| 色综合一区二区| 日韩精品一区二区三区四区 | 亚洲一区二区综合| 777午夜精品免费视频| 久久久久久久久蜜桃| 亚洲欧美日韩小说| 九色|91porny| 在线亚洲免费视频| 久久一区二区三区四区| 亚洲一区二区三区中文字幕| 麻豆精品久久久| 色综合久久88色综合天天6| 日韩久久免费av| 一区二区三区欧美激情| 国产一区二区视频在线| 欧美怡红院视频| 国产精品私房写真福利视频| 丝袜诱惑制服诱惑色一区在线观看| 国产成人亚洲综合a∨婷婷| 欧美人xxxx| 亚洲欧美日韩在线| 国产精品一级在线| 欧美一级艳片视频免费观看| 综合激情成人伊人| 国产精品一区在线观看乱码 | 国产精品麻豆一区二区| 日韩av不卡在线观看| 99re在线视频这里只有精品| 欧美成人伊人久久综合网| 亚洲一区二区美女| 成人99免费视频| 久久综合九色综合97婷婷女人| 亚洲精选免费视频| 成人h精品动漫一区二区三区| 日韩免费观看高清完整版在线观看| 综合久久给合久久狠狠狠97色| 国产一区激情在线| 欧美一激情一区二区三区| 亚洲自拍都市欧美小说| 97精品久久久午夜一区二区三区 | 欧美精品一级二级三级| 亚洲摸摸操操av| 成人丝袜视频网| 久久久精品国产免费观看同学| 日韩电影在线观看一区| 欧美日韩三级一区| 亚洲免费资源在线播放| 99久久精品国产观看| 中文字幕欧美激情一区| 国产高清久久久久| 精品国产三级a在线观看| 蜜桃av一区二区三区电影| 欧美人与禽zozo性伦| 亚洲成av人片在线| 欧美日韩亚洲综合一区| 一区二区理论电影在线观看| 91视频免费观看| 亚洲女同一区二区| 日本高清不卡aⅴ免费网站| 亚洲视频一区二区在线| 一本大道久久精品懂色aⅴ| 亚洲免费av网站| 91国产精品成人| 亚洲国产综合视频在线观看| 欧美视频一区在线| 五月激情六月综合| 欧美一区二区三区影视| 久久国产精品一区二区| 欧美va在线播放| 国精产品一区一区三区mba视频| www国产成人| 国产99久久久久久免费看农村| 国产日韩av一区二区| 成年人午夜久久久| 亚洲激情图片小说视频| 欧美亚洲综合在线| 日韩精品亚洲专区| 精品女同一区二区| 粉嫩在线一区二区三区视频| 最新中文字幕一区二区三区| 色94色欧美sute亚洲13| 日韩精品午夜视频| 久久嫩草精品久久久久| 成人性色生活片| 亚洲精品va在线观看| 91精品国产综合久久久久久漫画 | 伊人性伊人情综合网| 欧美日韩国产综合一区二区三区| 午夜精品久久久久久久久久久 | 久久嫩草精品久久久久| 成人国产精品免费观看| 夜色激情一区二区| 日韩三级在线观看| 成人高清视频免费观看| 亚洲国产精品久久人人爱蜜臀| 欧美一级欧美一级在线播放| 国产精品99久久久久久似苏梦涵| 国产精品免费视频观看| 欧美日韩mp4| 国产精品一区在线观看你懂的| 亚洲欧美成aⅴ人在线观看 | 亚洲日本va在线观看| 欧美日韩中文一区| 国产一本一道久久香蕉| 一区二区三区免费观看| 欧美本精品男人aⅴ天堂| a美女胸又www黄视频久久| 日韩制服丝袜先锋影音| 国产日韩视频一区二区三区| 欧美性受xxxx黑人xyx性爽| 久久97超碰国产精品超碰| 亚洲男女毛片无遮挡| 日韩精品自拍偷拍| 色屁屁一区二区| 国产一区二区三区四区五区入口| 伊人一区二区三区| 国产欧美日产一区| 欧美一区二区免费| 色婷婷综合久久| 国产精品综合二区| 首页国产丝袜综合| 日韩理论片网站| 久久一夜天堂av一区二区三区| 欧美性受xxxx黑人xyx性爽| 国产激情一区二区三区四区| 亚洲亚洲人成综合网络| 欧美激情综合网| 日韩精品在线网站| 精品视频999| 91香蕉视频污在线| 国产福利视频一区二区三区| 日韩专区在线视频| 亚洲另类一区二区| 国产午夜亚洲精品理论片色戒 | 亚洲成av人影院| 亚洲天堂中文字幕| 国产网站一区二区| 欧美一区二区三区精品| 色爱区综合激月婷婷| 成人亚洲一区二区一| 国产麻豆精品95视频| 麻豆成人免费电影| 视频一区中文字幕国产| 亚洲综合在线观看视频| 中文字幕在线一区免费| 国产丝袜欧美中文另类| 欧美成人一级视频| 欧美一区二区观看视频| 欧美日本在线看| 欧美网站一区二区| 日本道色综合久久| 色综合久久综合网97色综合 | 欧美电视剧在线看免费| 欧美精品自拍偷拍| 欧美性极品少妇| 欧美主播一区二区三区| 在线观看网站黄不卡| 色综合天天性综合| 91免费看视频| 色狠狠一区二区|