onboard.lst

来自「TI的基于ZIGBEE2006的协议栈」· LST 代码 · 共 1,258 行 · 第 1/5 页

LST
1,258
字号
   \   000000                DS 1
     58          
     59          // 64-bit Extended Address of this device

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
     60          uint8 aExtendedAddress[8];
   \                     aExtendedAddress:
   \   000000                DS 8
     61          
     62          /*********************************************************************
     63           * EXTERNAL VARIABLES
     64           */
     65          
     66          /*********************************************************************
     67           * EXTERNAL FUNCTIONS
     68           */
     69          
     70          extern uint8 macMcuRandomByte(void);
     71          
     72          /*********************************************************************
     73           * LOCAL VARIABLES
     74           */
     75          
     76          // Registered keys task ID, initialized to NOT USED.

   \                                 In segment XDATA_I, align 1, keep-with-next
     77          static byte registeredKeysTaskID = NO_TASK_ID;
   \                     ??registeredKeysTaskID:
   \   000000                DS 1
   \   000001                REQUIRE `?<Initializer for registeredKeysTaskID>`
   \   000001                REQUIRE __INIT_XDATA_I
     78          
     79          /*********************************************************************
     80           * LOCAL FUNCTIONS
     81           */
     82          
     83          static void ChkReset( void );
     84          
     85          /*********************************************************************
     86           * @fn      InitBoard()
     87           * @brief   Initialize the CC2420DB Board Peripherals
     88           * @param   level: COLD,WARM,READY
     89           * @return  None
     90           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
     91          void InitBoard( byte level )
   \                     InitBoard:
     92          {
   \   000000   74F5         MOV     A,#-0xb
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 11
   \   000005                ; Auto size: 0
     93            if ( level == OB_COLD )
   \   000005   E9           MOV     A,R1
   \   000006   6003         JZ      $+5
   \   000008   02....       LJMP    ??InitBoard_0 & 0xFFFF
     94            {
     95              // Initialize HAL
     96              HAL_BOARD_INIT();
   \   00000B   43FE02       ORL     0xfe,#0x2
   \   00000E   43FE01       ORL     0xfe,#0x1
   \   000011   438F20       ORL     0x8f,#0x20
     97              // Interrupts off
     98              osal_int_disable( INTS_ALL );
   \   000014                ; Setup parameters for call to function osal_int_disable
   \   000014   79FF         MOV     R1,#-0x1
   \   000016   90....       MOV     DPTR,#(osal_int_disable & 0xffff)
   \   000019   74..         MOV     A,#((osal_int_disable >> 16) & 0xff)
   \   00001B   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
     99              // Turn all LEDs off
    100              HalLedSet( HAL_LED_ALL, HAL_LED_MODE_OFF );
   \   00001E                ; Setup parameters for call to function HalLedSet
   \   00001E   7A00         MOV     R2,#0x0
   \   000020   790F         MOV     R1,#0xf
   \   000022   90....       MOV     DPTR,#(HalLedSet & 0xffff)
   \   000025   74..         MOV     A,#((HalLedSet >> 16) & 0xff)
   \   000027   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    101              // Check for Brown-Out reset
    102              ChkReset();
   \   00002A   7418         MOV     A,#0x18
   \   00002C   55BE         ANL     A,0xbe
   \   00002E   FA           MOV     R2,A
   \   00002F   605A         JZ      ??InitBoard_1
   \   000031   7408         MOV     A,#0x8
   \   000033   6A           XRL     A,R2
   \   000034   6055         JZ      ??InitBoard_1
   \   000036   7410         MOV     A,#0x10
   \   000038   6A           XRL     A,R2
   \   000039   6050         JZ      ??InitBoard_1
   \   00003B   C2AF         CLR     0xa8.7
   \   00003D   8048         SJMP    ??InitBoard_2
   \                     ??InitBoard_3:
   \   00003F                ; Setup parameters for call to function HalLedSet
   \   00003F   7A01         MOV     R2,#0x1
   \   000041   EE           MOV     A,R6
   \   000042   F9           MOV     R1,A
   \   000043   90....       MOV     DPTR,#(HalLedSet & 0xffff)
   \   000046   74..         MOV     A,#((HalLedSet >> 16) & 0xff)
   \   000048   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00004B                ; Setup parameters for call to function Onboard_wait
   \   00004B   7A24         MOV     R2,#0x24
   \   00004D   7BF4         MOV     R3,#-0xc
   \   00004F   90....       MOV     DPTR,#(Onboard_wait & 0xffff)
   \   000052   74..         MOV     A,#((Onboard_wait >> 16) & 0xff)
   \   000054   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000057                ; Setup parameters for call to function Onboard_wait
   \   000057   7A24         MOV     R2,#0x24
   \   000059   7BF4         MOV     R3,#-0xc
   \   00005B   74..         MOV     A,#((Onboard_wait >> 16) & 0xff)
   \   00005D   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000060                ; Setup parameters for call to function HalLedSet
   \   000060   7A00         MOV     R2,#0x0
   \   000062   EE           MOV     A,R6
   \   000063   F9           MOV     R1,A
   \   000064   90....       MOV     DPTR,#(HalLedSet & 0xffff)
   \   000067   74..         MOV     A,#((HalLedSet >> 16) & 0xff)
   \   000069   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00006C                ; Setup parameters for call to function Onboard_wait
   \   00006C   7A7C         MOV     R2,#0x7c
   \   00006E   7B92         MOV     R3,#-0x6e
   \   000070   90....       MOV     DPTR,#(Onboard_wait & 0xffff)
   \   000073   74..         MOV     A,#((Onboard_wait >> 16) & 0xff)
   \   000075   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000078                ; Setup parameters for call to function Onboard_wait
   \   000078   7A7C         MOV     R2,#0x7c
   \   00007A   7B92         MOV     R3,#-0x6e
   \   00007C   74..         MOV     A,#((Onboard_wait >> 16) & 0xff)
   \   00007E   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000081   EE           MOV     A,R6
   \   000082   C3           CLR     C
   \   000083   13           RRC     A
   \   000084   FE           MOV     R6,A
   \   000085   70B8         JNZ     ??InitBoard_3
   \                     ??InitBoard_2:
   \   000087   7E08         MOV     R6,#0x8
   \   000089   80B4         SJMP    ??InitBoard_3
    103          
    104            /* Timer2 for Osal timer
    105             * This development board uses ATmega128 Timer/Counter3 to provide
    106             * system clock ticks for the OSAL scheduler. These functions perform
    107             * the hardware specific actions required by the OSAL_Timers module.
    108             */
    109             OnboardTimerIntEnable = FALSE;
   \                     ??InitBoard_1:
   \   00008B   E4           CLR     A
   \   00008C   90....       MOV     DPTR,#OnboardTimerIntEnable
   \   00008F   F0           MOVX    @DPTR,A
    110           	 HalTimerConfig (OSAL_TIMER,                        // 8bit timer2
    111                            HAL_TIMER_MODE_CTC,                 // Clear Timer on Compare
    112                            HAL_TIMER_CHANNEL_SINGLE,           // Channel 1 - default
    113                            HAL_TIMER_CH_MODE_OUTPUT_COMPARE,   // Output Compare mode
    114                            OnboardTimerIntEnable,              // Use interrupt
    115                            Onboard_TimerCallBack);             // Channel Mode
   \   000090                ; Setup parameters for call to function HalTimerConfig
   \   000090   75....       MOV     ?V0 + 0,#(Onboard_TimerCallBack & 0xff)
   \   000093   75....       MOV     ?V0 + 1,#((Onboard_TimerCallBack >> 8) & 0xff)
   \   000096   75....       MOV     ?V0 + 2,#((Onboard_TimerCallBack >> 16) & 0xff)
   \   000099   78..         MOV     R0,#?V0 + 0
   \   00009B   12....       LCALL   ?PUSH_XSTACK_I_THREE
   \   00009E   7D00         MOV     R5,#0x0
   \   0000A0   7C02         MOV     R4,#0x2
   \   0000A2   7B01         MOV     R3,#0x1
   \   0000A4   7A02         MOV     R2,#0x2
   \   0000A6   7902         MOV     R1,#0x2
   \   0000A8   90....       MOV     DPTR,#(HalTimerConfig & 0xffff)
   \   0000AB   74..         MOV     A,#((HalTimerConfig >> 16) & 0xff)
   \   0000AD   8022         SJMP    ??InitBoard_4
    116          
    117            }
    118            else  // !OB_COLD
    119            {
    120          #ifdef ZTOOL_PORT
    121              MT_IndReset();
   \                     ??InitBoard_0:
   \   0000AF                ; Setup parameters for call to function MT_IndReset
   \   0000AF   90....       MOV     DPTR,#(MT_IndReset & 0xffff)
   \   0000B2   74..         MOV     A,#((MT_IndReset >> 16) & 0xff)
   \   0000B4   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    122          #endif
    123          
    124               /* Initialize Key stuff */
    125              OnboardKeyIntEnable = HAL_KEY_INTERRUPT_DISABLE;
   \   0000B7   E4           CLR     A
   \   0000B8   90....       MOV     DPTR,#OnboardKeyIntEnable
   \   0000BB   F0           MOVX    @DPTR,A
    126              HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);
   \   0000BC                ; Setup parameters for call to function HalKeyConfig
   \   0000BC   75....       MOV     ?V0 + 0,#(OnBoard_KeyCallback & 0xff)
   \   0000BF   75....       MOV     ?V0 + 1,#((OnBoard_KeyCallback >> 8) & 0xff)
   \   0000C2   75....       MOV     ?V0 + 2,#((OnBoard_KeyCallback >> 16) & 0xff)
   \   0000C5   78..         MOV     R0,#?V0 + 0
   \   0000C7   12....       LCALL   ?PUSH_XSTACK_I_THREE
   \   0000CA   7900         MOV     R1,#0x0
   \   0000CC   90....       MOV     DPTR,#(HalKeyConfig & 0xffff)
   \   0000CF   74..         MOV     A,#((HalKeyConfig >> 16) & 0xff)
   \                     ??InitBoard_4:
   \   0000D1   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   0000D4   7403         MOV     A,#0x3
   \   0000D6   12....       LCALL   ?DEALLOC_XSTACK8
    127            }
    128          }
   \   0000D9   7F03         MOV     R7,#0x3
   \   0000DB   02....       LJMP    ?BANKED_LEAVE_XDATA
    129          
    130          /*********************************************************************
    131           * @fn      ChkReset()
    132           * @brief   Check reset bits - if reset cause is unknown, assume a
    133           *          brown-out (low power), assume batteries are not reliable,
    134           *          hang in a loop and sequence through the LEDs.
    135           * @param   None
    136           * @return  None
    137           *********************************************************************/
    138          void ChkReset( void )
    139          {
    140            uint8 led;
    141            uint8 rib;
    142          
    143            // Isolate reset indicator bits
    144            rib = SLEEP & LRESET;
    145          
    146            if ( rib == RESETPO )
    147            {
    148              // Put code here to handle Power-On reset
    149            }
    150            else if ( rib == RESETEX )
    151            {
    152              // Put code here to handle External reset
    153            }
    154            else if ( rib == RESETWD )
    155            {
    156              // Put code here to handle WatchDog reset
    157            }
    158            else
    159            {
    160              // Unknown, hang and blink
    161              HAL_DISABLE_INTERRUPTS();
    162              led = HAL_LED_4;
    163              while ( 1 ) {
    164                HalLedSet( led, HAL_LED_MODE_ON );
    165                MicroWait( 62500 );
    166                MicroWait( 62500 );
    167                HalLedSet( led, HAL_LED_MODE_OFF );
    168                MicroWait( 37500 );
    169                MicroWait( 37500 );
    170                if ( !(led >>= 1) )
    171                  led = HAL_LED_4;
    172              }
    173            }
    174          }
    175          

⌨️ 快捷键说明

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