hal_assert.s51

来自「TI的基于ZIGBEE2006的协议栈」· S51 代码 · 共 1,013 行 · 第 1/3 页

S51
1,013
字号
        CFI V1 SameValue
        CFI V2 SameValue
        CFI V3 SameValue
        CFI V4 SameValue
        CFI V5 SameValue
        CFI V6 SameValue
        CFI V7 SameValue
        CFI PSPH Undefined
        CFI PSPL Undefined
        CFI XSPH Undefined
        CFI XSPL Undefined
        CFI ?RET Concat
        CFI ?BRET_EXT SameValue
        CFI ?RET_HIGH Frame(CFA_SP, 2)
        CFI ?RET_LOW Frame(CFA_SP, 1)
        CFI EndCommon cfiCommon1
        
        EXTERN macRxActive
        EXTERN macTxActive

// C:\Texas Instruments\ZStack-1.4.2\Components\hal\common\hal_assert.c
//    1 /**************************************************************************************************
//    2     Filename:
//    3     Revised:        $Date: 2007-03-29 11:10:56 -0700 (Thu, 29 Mar 2007) $
//    4     Revision:       $Revision: 13891 $
//    5 
//    6     Description:
//    7 
//    8     Describe the purpose and contents of the file.
//    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 
//   18 /* ------------------------------------------------------------------------------------------------
//   19  *                                          Includes
//   20  * ------------------------------------------------------------------------------------------------
//   21  */
//   22 #include "hal_assert.h"
//   23 #include "hal_types.h"
//   24 #include "hal_board.h"

        ASEGN SFR_AN:DATA:NOROOT,08fH
// unsigned char volatile __sfr P0INP
P0INP:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,091H
// unsigned char volatile __sfr RFIM
RFIM:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0feH
// unsigned char volatile __sfr P1DIR
P1DIR:
        DS 1
//   25 #include "hal_defs.h"
//   26 #include "hal_mcu.h"
//   27 
//   28 /* for access to debug data */
//   29 #include "mac_rx.h"
//   30 #include "mac_tx.h"
//   31 
//   32 
//   33 /* ------------------------------------------------------------------------------------------------
//   34  *                                       Local Prototypes
//   35  * ------------------------------------------------------------------------------------------------
//   36  */
//   37 void halAssertHazardLights(void);
//   38 
//   39 
//   40 /**************************************************************************************************
//   41  * @fn          halAssertHandler
//   42  *
//   43  * @brief       Logic to handle an assert.
//   44  *
//   45  * @param       none
//   46  *
//   47  * @return      none
//   48  **************************************************************************************************
//   49  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//   50 void halAssertHandler(void)
halAssertHandler:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function halAssertHandler
//   51 {
        FUNCALL halAssertHandler, halAssertHazardLights
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 0
//   52   /* execute code that handles asserts */
//   53 #ifdef ASSERT_RESET
//   54   HAL_SYSTEM_RESET();
//   55 #else
//   56   halAssertHazardLights();
        ; Setup parameters for call to function halAssertHazardLights
        MOV	DPTR,#(halAssertHazardLights & 0xffff)
        MOV	A,#((halAssertHazardLights >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//   57 #endif
//   58   
//   59 }
        POP	DPH
        CFI DPH0 SameValue
        CFI CFA_SP SP+-4
        POP	DPL
        CFI DPL0 SameValue
        CFI CFA_SP SP+-3
        LJMP	?BRET
        CFI EndBlock cfiBlock0
//   60 
//   61 
//   62 /**************************************************************************************************
//   63  * @fn          halAssertHazardLights
//   64  *
//   65  * @brief       Blink LEDs to indicate an error.
//   66  *
//   67  * @param       none
//   68  *
//   69  * @return      none
//   70  **************************************************************************************************
//   71  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//   72 void halAssertHazardLights(void)
halAssertHazardLights:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function halAssertHazardLights
//   73 {
        MOV	A,#-0xc
        LCALL	?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 12)
        ; Saved register size: 12
        ; Auto size: 9
        MOV	A,#-0x9
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 21)
//   74   enum
//   75   {
//   76     DEBUG_DATA_RSTACK_HIGH_OFS,
//   77     DEBUG_DATA_RSTACK_LOW_OFS,
//   78     DEBUG_DATA_TX_ACTIVE_OFS,
//   79     DEBUG_DATA_RX_ACTIVE_OFS,
//   80     DEBUG_DATA_INT_MASK_OFS,
//   81     DEBUG_DATA_SIZE
//   82   };
//   83 
//   84   uint8 buttonHeld;
//   85   uint8 debugData[DEBUG_DATA_SIZE];
//   86 
//   87   /* disable all interrupts before anything else */
//   88   HAL_DISABLE_INTERRUPTS();
        CLR	0xa8.7
//   89     
//   90   /*-------------------------------------------------------------------------------
//   91    *  Initialize LEDs and turn them off.
//   92    */
//   93   HAL_BOARD_INIT();
        ORL	0xfe,#0x2
        ORL	0xfe,#0x1
        ORL	0x8f,#0x20
//   94 
//   95   HAL_TURN_OFF_LED1();
        SETB	0x90.1
//   96   HAL_TURN_OFF_LED2();
        SETB	0x90.0
//   97   HAL_TURN_OFF_LED3();
        SETB	0x90.0
        LJMP	??halAssertHazardLights_0 & 0xFFFF
//   98   HAL_TURN_OFF_LED4();
//   99 
//  100   /*-------------------------------------------------------------------------------
//  101    *  Master infinite loop.
//  102    */
//  103   for (;;)
//  104   {
//  105     buttonHeld = 0;
//  106 
//  107     /*-------------------------------------------------------------------------------
//  108      *  "Hazard lights" loop.  A held keypress will exit this loop.
//  109      */
//  110     do
//  111     {
//  112       HAL_LED_BLINK_DELAY();
//  113 
//  114       /* toggle LEDS, the #ifdefs are in case HAL has logically remapped non-existent LEDs */
//  115 #if (HAL_NUM_LEDS >= 1)
//  116       HAL_TOGGLE_LED1();
//  117 #if (HAL_NUM_LEDS >= 2)
//  118       HAL_TOGGLE_LED2();
//  119 #if (HAL_NUM_LEDS >= 3)
//  120       HAL_TOGGLE_LED3();
//  121 #if (HAL_NUM_LEDS >= 4)
//  122       HAL_TOGGLE_LED4();
//  123 #endif
//  124 #endif
//  125 #endif
//  126 #endif
//  127 
//  128       /* escape hatch to continue execution, set escape to '1' to continue execution */
//  129       {
//  130         static uint8 escape = 0;
//  131         if (escape)
//  132         {
//  133           escape = 0;
//  134           return;
//  135         }
//  136       }
//  137 
//  138       /* break out of loop if button is held long enough */
//  139       if (HAL_PUSH_BUTTON1())
//  140       {
//  141         buttonHeld++;
??halAssertHazardLights_1:
        INC	R2
//  142       }
//  143       else
//  144       {
//  145         buttonHeld = 0;
//  146       }
//  147     }
//  148     while (buttonHeld != 10);  /* loop until button is held specified number of loops */
        MOV	A,#0xa
        XRL	A,R2
        JZ	??halAssertHazardLights_2
??halAssertHazardLights_3:
        MOV	DPTR,#__Constant_0
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_TO_X
        SJMP	??halAssertHazardLights_4
??halAssertHazardLights_5:
        MOV	DPTR,#__Constant_1
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        MOV	R0,#?V0 + 0
        LCALL	?L_ADD_TO_X
??halAssertHazardLights_4:
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        PUSH	DPL
        CFI CFA_SP SP+-1
        PUSH	DPH
        CFI CFA_SP SP+-2
        MOV	DPTR,#__Constant_5800
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        POP	DPH
        CFI CFA_SP SP+-1
        POP	DPL
        CFI CFA_SP SP+0
        MOV	R0,#?V0 + 0
        LCALL	?UL_GT_X
        JC	??halAssertHazardLights_5
        MOV	C,0x90.1
        JNC	??halAssertHazardLights_6
        CLR	0x90.1
        SJMP	??halAssertHazardLights_7
??halAssertHazardLights_6:
        SETB	0x90.1
??halAssertHazardLights_7:
        MOV	C,0x90.0
        JNC	??halAssertHazardLights_8
        CLR	0x90.0
        SJMP	??halAssertHazardLights_9
??halAssertHazardLights_8:
        SETB	0x90.0
??halAssertHazardLights_9:
        MOV	DPTR,#??escape
        MOVX	A,@DPTR
        JZ	??halAssertHazardLights_10
        CLR	A
        MOVX	@DPTR,A
        MOV	A,#0x9
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 12)
        MOV	R7,#0x4
        LJMP	?BANKED_LEAVE_XDATA
        CFI CFA_XSP16 add(XSP16, 21)
??halAssertHazardLights_10:
        MOV	C,0x80.1
        JNC	??halAssertHazardLights_1
??halAssertHazardLights_11:
        MOV	R2,#0x0
        SJMP	??halAssertHazardLights_3
//  149 
//  150     /*-------------------------------------------------------------------------------
//  151      *  Just exited from "hazard lights" loop.
//  152      */
//  153 
//  154     /* turn off all LEDs */
//  155     HAL_TURN_OFF_LED1();
??halAssertHazardLights_2:
        SETB	0x90.1
//  156     HAL_TURN_OFF_LED2();
        SETB	0x90.0
//  157     HAL_TURN_OFF_LED3();
        SETB	0x90.0
//  158     HAL_TURN_OFF_LED4();
        SETB	0x90.1
//  159 
//  160     /* wait for button release */
//  161     HAL_DEBOUNCE(!HAL_PUSH_BUTTON1());
        MOV	R0,#0x0
        MOV	R1,#0x0
??halAssertHazardLights_12:
        MOV	C,0x80.1

⌨️ 快捷键说明

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