⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_key.lst

📁 用IAR开发的ZIGBEE网络路由例子
💻 LST
📖 第 1 页 / 共 4 页
字号:
##############################################################################
#                                                                            #
# IAR 8051 C/C++ Compiler V7.20H/W32                   06/Nov/2008  11:13:20 #
# Copyright 2004-2006 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Core               =  plain                                             #
#    Code model         =  banked                                            #
#    Data model         =  large                                             #
#    Calling convention =  xdata reentrant                                   #
#    Constant location  =  data                                              #
#    Dptr setup         =  1,16                                              #
#    Source file        =  E:\解决\路由\Components\hal\target\CC2430DB\hal_k #
#                          ey.c                                              #
#    Command line       =  -f E:\解决\路由\Projects\zstack\Samples\SampleApp #
#                          \CC2430DB\..\..\..\Tools\CC2430DB\f8wCoord.cfg    #
#                          (-DCPU32MHZ -DFORCE_MAC_NEAR -DROOT=__near_func   #
#                          -DMAC_CFG_APP_PENDING_QUEUE=TRUE                  #
#                          -DZDO_COORDINATOR -DRTR_NWK -DBLINK_LEDS          #
#                          "-DCONST=const __code" -DGENERIC=__generic) -f    #
#                          E:\解决\路由\Projects\zstack\Samples\SampleApp\CC #
#                          2430DB\..\..\..\Tools\CC2430DB\f8wConfig.cfg      #
#                          (-DSECURE=0 -DDEFAULT_CHANLIST=0x00000800         #
#                          -DZDAPP_CONFIG_PAN_ID=0xFFFF                      #
#                          -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_M #
#                          ASK=0x007F -DBEACON_REQUEST_DELAY=100             #
#                          -DBEACON_REQ_DELAY_MASK=0x00FF                    #
#                          -DROUTE_EXPIRY_TIME=30 -DAPSC_ACK_WAIT_DURATION_P #
#                          OLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7           #
#                          -DMAX_RREQ_ENTRIES=10 -DAPSC_MAX_FRAME_RETRIES=3  #
#                          -DNWK_MAX_DATA_RETRIES=2                          #
#                          -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9        #
#                          -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=20          #
#                          -DNWK_MAX_BINDING_ENTRIES=10                      #
#                          -DMAX_BINDING_CLUSTER_IDS=5                       #
#                          "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07, 0x09,     #
#                          0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08,   #
#                          0x0A, 0x0C, 0x0D}" -DRFD_RCVC_ALWAYS_ON=FALSE     #
#                          -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100           #
#                          -DRESPONSE_POLL_RATE=100 -DREJOIN_POLL_RATE=440   #
#                          -DTOP_BOOT_PAGES=0) -I "D:\Program Files\IAR      #
#                          Systems\Embedded Workbench 4.05 Evaluation        #
#                          version\8051\inc\" -I "D:\Program Files\IAR       #
#                          Systems\Embedded Workbench 4.05 Evaluation        #
#                          version\8051\inc\clib\" -I                        #
#                          E:\解决\路由\Projects\zstack\Samples\SampleApp\CC #
#                          2430DB\ -I E:\解决\路由\Projects\zstack\Samples\S #
#                          ampleApp\CC2430DB\..\Source\ -I                   #
#                          E:\解决\路由\Projects\zstack\Samples\SampleApp\CC #
#                          2430DB\..\..\..\ZMain\TI2430DB\ -I                #
#                          E:\解决\路由\Projects\zstack\Samples\SampleApp\CC #
#                          2430DB\..\..\..\..\..\Components\mt\ -I           #
#                          E:\解决\路由\Projects\zstack\Samples\SampleApp\CC #
#                          2430DB\..\..\..\..\..\Components\hal\include\ -I  #
#                          E:\解决\路由\Projects\zstack\Samples\SampleApp\CC #
#                          2430DB\..\..\..\..\..\Components\hal\target\CC243 #
#                          0DB\ -I E:\解决\路由\Projects\zstack\Samples\Samp #
#                          leApp\CC2430DB\..\..\..\..\..\Components\osal\mcu #
#                          \ccsoc\ -I E:\解决\路由\Projects\zstack\Samples\S #
#                          ampleApp\CC2430DB\..\..\..\..\..\Components\osal\ #
#                          include\ -I E:\解决\路由\Projects\zstack\Samples\ #
#                          SampleApp\CC2430DB\..\..\..\..\..\Components\stac #
#                          k\af\ -I E:\解决\路由\Projects\zstack\Samples\Sam #
#                          pleApp\CC2430DB\..\..\..\..\..\Components\stack\n #
#                          wk\ -I E:\解决\路由\Projects\zstack\Samples\Sampl #
#                          eApp\CC2430DB\..\..\..\..\..\Components\stack\sec #
#                          \ -I E:\解决\路由\Projects\zstack\Samples\SampleA #
#                          pp\CC2430DB\..\..\..\..\..\Components\stack\sys\  #
#                          -I E:\解决\路由\Projects\zstack\Samples\SampleApp #
#                          \CC2430DB\..\..\..\..\..\Components\stack\zdo\    #
#                          -I E:\解决\路由\Projects\zstack\Samples\SampleApp #
#                          \CC2430DB\..\..\..\..\..\Components\zmac\f8w\ -I  #
#                          E:\解决\路由\Projects\zstack\Samples\SampleApp\CC #
#                          2430DB\..\..\..\..\..\Components\zmac\ -I         #
#                          E:\解决\路由\Projects\zstack\Samples\SampleApp\CC #
#                          2430DB\..\..\..\..\..\Components\services\saddr\  #
#                          -I E:\解决\路由\Projects\zstack\Samples\SampleApp #
#                          \CC2430DB\..\..\..\..\..\Components\services\sdat #
#                          a\ -I E:\解决\路由\Projects\zstack\Samples\Sample #
#                          App\CC2430DB\..\..\..\..\..\Components\mac\includ #
#                          e\ -I E:\解决\路由\Projects\zstack\Samples\Sample #
#                          App\CC2430DB\..\..\..\..\..\Components\mac\high_l #
#                          evel\ -I E:\解决\路由\Projects\zstack\Samples\Sam #
#                          pleApp\CC2430DB\..\..\..\..\..\Components\mac\low #
#                          _level\srf03\ -I E:\解决\路由\Projects\zstack\Sam #
#                          ples\SampleApp\CC2430DB\..\..\..\..\..\Components #
#                          \mac\low_level\srf03\single_chip\ -D CC2430DB     #
#                          -lC E:\解决\路由\Projects\zstack\Samples\SampleAp #
#                          p\CC2430DB\CoordinatorDB\List\ -lA                #
#                          E:\解决\路由\Projects\zstack\Samples\SampleApp\CC #
#                          2430DB\CoordinatorDB\List\ --diag_suppress        #
#                          Pe001,Pa010 --diag_remark pe550 -o                #
#                          E:\解决\路由\Projects\zstack\Samples\SampleApp\CC #
#                          2430DB\CoordinatorDB\Obj\ -e                      #
#                          --require_prototypes -z9 --no_code_motion         #
#                          --debug --core=plain --dptr=16,1                  #
#                          --data_model=large --code_model=banked            #
#                          --calling_convention=xdata_reentrant              #
#                          --place_constants=data --nr_virtual_regs 8        #
#                          E:\解决\路由\Components\hal\target\CC2430DB\hal_k #
#                          ey.c                                              #
#    List file          =  E:\解决\路由\Projects\zstack\Samples\SampleApp\CC #
#                          2430DB\CoordinatorDB\List\hal_key.lst             #
#    Object file        =  E:\解决\路由\Projects\zstack\Samples\SampleApp\CC #
#                          2430DB\CoordinatorDB\Obj\hal_key.r51              #
#                                                                            #
#                                                                            #
##############################################################################

E:\解决\路由\Components\hal\target\CC2430DB\hal_key.c
      1          /**************************************************************************************************
      2              Filename:       hal_key.c
      3              Revised:        $Date: 2007-03-29 16:44:28 -0700 (Thu, 29 Mar 2007) $
      4              Revision:       $Revision: 13896 $
      5          
      6              Description:
      7          
      8              This file contains the interface to the HAL KEY Service.
      9          
     10              Copyright (c) 2006 by Texas Instruments, Inc.
     11              All Rights Reserved.  Permission to use, reproduce, copy, prepare
     12              derivative works, modify, distribute, perform, display or sell this
     13              software and/or its documentation for any purpose is prohibited
     14              without the express written consent of Texas Instruments, Inc.
     15          **************************************************************************************************/
     16          /*********************************************************************
     17           NOTE: If polling is used, the hal_driver task schedules the KeyRead()
     18                 to occur every 100ms.  This should be long enough to naturally
     19                 debounce the keys.  The KeyRead() function remembers the key
     20                 state of the previous poll and will only return a non-zero
     21                 value if the key state changes.
     22          
     23           NOTE: If interrupts are used, the KeyRead() function is scheduled
     24                 25ms after the interrupt occurs by the ISR.  This delay is used
     25                 for key debouncing.  The ISR disables any further Key interrupt
     26                 until KeyRead() is executed.  KeyRead() will re-enable Key
     27                 interrupts after executing.  Unlike polling, when interrupts
     28                 are enabled, the previous key state is not remembered.  This
     29                 means that KeyRead() will return the current state of the keys
     30                 (not a change in state of the keys).
     31          
     32           NOTE: If interrupts are used, the KeyRead() fucntion is scheduled by
     33                 the ISR.  Therefore, the joystick movements will only be detected
     34                 during a pushbutton interrupt caused by S1 or the center joystick
     35                 pushbutton.
     36          
     37           NOTE: When a switch like S1 is pushed, the S1 signal goes from a normally
     38                 high state to a low state.  This transition is typically clean.  The
     39                 duration of the low state is around 200ms.  When the signal returns
     40                 to the high state, there is a high likelihood of signal bounce, which
     41                 causes a unwanted interrupts.  Normally, we would set the interrupt
     42                 edge to falling edge to generate an interrupt when S1 is pushed, but
     43                 because of the signal bounce, it is better to set the edge to rising
     44                 edge to generate an interrupt when S1 is released.  The debounce logic
     45                 can then filter out the signal bounce.  The result is that we typically
     46                 get only 1 interrupt per button push.  This mechanism is not totally
     47                 foolproof because occasionally, signal bound occurs during the falling
     48                 edge as well.  A similar mechanism is used to handle the joystick
     49                 pushbutton on the DB.  For the EB, we do not have independent control
     50                 of the interrupt edge for the S1 and center joystick pushbutton.  As
     51                 a result, only one or the other pushbuttons work reasonably well with
     52                 interrupts.  The default is the make the S1 switch on the EB work more
     53                 reliably.
     54          
     55          *********************************************************************/
     56          
     57          /**************************************************************************************************
     58           *                                            INCLUDES
     59           **************************************************************************************************/
     60          #include "hal_mcu.h"

   \                                 In segment SFR_AN, at 0x89
   \   unsigned char volatile __sfr P0IFG
   \                     P0IFG:
   \   000000                DS 1
     61          #include "hal_defs.h"
     62          #include "hal_types.h"
     63          #include "hal_drivers.h"
     64          #include "hal_adc.h"
     65          #include "hal_key.h"
     66          #include "osal.h"
     67          
     68          /**************************************************************************************************
     69           *                                              MACROS
     70           **************************************************************************************************/
     71          
     72          /**************************************************************************************************
     73           *                                            CONSTANTS
     74           **************************************************************************************************/
     75          #define HAL_KEY_BIT0   0x01
     76          #define HAL_KEY_BIT1   0x02
     77          #define HAL_KEY_BIT2   0x04
     78          #define HAL_KEY_BIT3   0x08
     79          #define HAL_KEY_BIT4   0x10
     80          #define HAL_KEY_BIT5   0x20
     81          #define HAL_KEY_BIT6   0x40
     82          #define HAL_KEY_BIT7   0x80
     83          
     84          #define HAL_KEY_RISING_EDGE   0
     85          #define HAL_KEY_FALLING_EDGE  1
     86          
     87          #define HAL_KEY_PDUP2           0x80
     88          #define HAL_KEY_PDUP1           0x40
     89          #define HAL_KEY_PDUP0           0x20
     90          
     91          #define HAL_KEY_DEBOUNCE_VALUE  25
     92          #define HAL_KEY_POLLING_VALUE   100
     93          
     94          
     95          #if defined (HAL_BOARD_CC2430DB)
     96            #define HAL_KEY_SW_6_ENABLE
     97            #define HAL_KEY_SW_6_PORT     P0                      /* Port location of SW1 */
     98            #define HAL_KEY_SW_6_BIT      HAL_KEY_BIT1            /* Bit location of SW1 */
     99            #define HAL_KEY_SW_6_SEL      P0SEL                   /* Port Select Register for SW1 */
    100            #define HAL_KEY_SW_6_DIR      P0DIR                   /* Port Direction Register for SW1 */
    101            #define HAL_KEY_SW_6_IEN      IEN1                    /* Interrupt Enable Register for SW1 */
    102            #define HAL_KEY_SW_6_IENBIT   HAL_KEY_BIT5            /* Interrupt Enable bit for SW1 */
    103            #define HAL_KEY_SW_6_EDGE     HAL_KEY_RISING_EDGE     /* Type of interrupt for SW1 */
    104            #define HAL_KEY_SW_6_EDGEBIT  HAL_KEY_BIT0            /* EdgeType enable bit SW1 */
    105            #define HAL_KEY_SW_6_ICTL     PICTL                   /* Port Interrupt Control for SW1 */
    106            #define HAL_KEY_SW_6_ICTLBIT  HAL_KEY_BIT3            /* Interrupt enable bit for SW1 */
    107            #define HAL_KEY_SW_6_PXIFG    P0IFG                   /* Port Interrupt Flag for SW1 */
    108          
    109            #define HAL_KEY_JOYSTICK_ENABLE
    110            #define HAL_KEY_JOY_CHN   HAL_ADC_CHANNEL_6
    111          
    112            #define HAL_KEY_SW_5_ENABLE   /* 2430DB - SW5 is enabled based on key interrupt enable or not - see config */
    113            #define HAL_KEY_SW_5_PORT     P2                      /* Port location of SW5 */
    114            #define HAL_KEY_SW_5_BIT      HAL_KEY_BIT0            /* Bit location of SW5 */
    115            #define HAL_KEY_SW_5_SEL      P2SEL                   /* Port Select Register for SW5 */
    116            #define HAL_KEY_SW_5_DIR      P2DIR                   /* Port Direction Register for SW5 */
    117            #define HAL_KEY_SW_5_INP      P2INP                   /* Port Input Mode Register for SW5 */
    118            #define HAL_KEY_SW_5_IEN      IEN2                    /* Interrupt Enable Register for SW5 */
    119            #define HAL_KEY_SW_5_IENBIT   HAL_KEY_BIT1            /* Interrupt Enable bit for SW5 */
    120            #define HAL_KEY_SW_5_EDGE     HAL_KEY_FALLING_EDGE    /* Type of interrupt for SW5 */
    121            #define HAL_KEY_SW_5_EDGEBIT  HAL_KEY_BIT2            /* EdgeType enable bit SW5 */
    122            #define HAL_KEY_SW_5_ICTL     PICTL                   /* Port Interrupt Control for SW5 */
    123            #define HAL_KEY_SW_5_ICTLBIT  HAL_KEY_BIT5            /* Interrupt enable bit for SW5 */
    124            #define HAL_KEY_SW_5_PXIFG    P2IFG                   /* Port Interrupt Flag for SW5 */
    125          
    126            #define HAL_KEY_P0INT_LOW_USED    HAL_KEY_SW_6_BIT    /* P0 can only be enabled/disabled as group of high or low nibble */
    127            #define HAL_KEY_POINT_HIGH_USED   0                   /* P0 can only be enabled/disabled as group of high or low nibble */
    128          #endif
    129          
    130          #if defined (HAL_BOARD_CC2430EB) || defined (HAL_BOARD_CC2430BB)
    131            #define HAL_KEY_SW_6_ENABLE
    132            #define HAL_KEY_SW_6_PORT     P0                      /* Port location of SW1 */
    133            #define HAL_KEY_SW_6_BIT      HAL_KEY_BIT1            /* Bit location of SW1 */
    134            #define HAL_KEY_SW_6_SEL      P0SEL                   /* Port Select Register for SW1 */
    135            #define HAL_KEY_SW_6_DIR      P0DIR                   /* Port Direction Register for SW1 */
    136            #define HAL_KEY_SW_6_IEN      IEN1                    /* Interrupt Enable Register for SW1 */
    137            #define HAL_KEY_SW_6_IENBIT   HAL_KEY_BIT5            /* Interrupt Enable bit for SW1 */
    138            #define HAL_KEY_SW_6_EDGE     HAL_KEY_RISING_EDGE     /* Type of interrupt for SW1 */
    139            #define HAL_KEY_SW_6_EDGEBIT  HAL_KEY_BIT0            /* EdgeType enable bit SW1 */
    140            #define HAL_KEY_SW_6_ICTL     PICTL                   /* Port Interrupt Control for SW1 */
    141            #define HAL_KEY_SW_6_ICTLBIT  HAL_KEY_BIT3            /* Interrupt enable bit for SW1 */
    142            #define HAL_KEY_SW_6_PXIFG    P0IFG                   /* Port Interrupt Flag for SW1 */
    143          
    144            #define HAL_KEY_P0INT_LOW_USED    HAL_KEY_SW_6_BIT    /* P0 can only be enabled/disabled as group of high or low nibble */
    145          #endif
    146          

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -