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

📄 hal_assert.s51

📁 用IAR开发的ZIGBEE网络路由例子
💻 S51
📖 第 1 页 / 共 3 页
字号:
//   20  * ------------------------------------------------------------------------------------------------
//   21  */
//   22 #include "hal_assert.h"
//   23 #include "hal_types.h"
//   24 #include "hal_board.h"

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

        ASEGN SFR_AN:DATA:NOROOT,0f7H
// unsigned char volatile __sfr P2INP
P2INP:
        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,#0x1
        ORL	0xfe,#0x2
        ORL	0xf7,#0x1
        ORL	0xfe,#0x4
        CLR	0x90.2
//   94 
//   95   HAL_TURN_OFF_LED1();
        SETB	0x90.0
//   96   HAL_TURN_OFF_LED2();
        SETB	0x90.1
//   97   HAL_TURN_OFF_LED3();
        SETB	0x90.1
        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.0
        JNC	??halAssertHazardLights_6
        CLR	0x90.0
        SJMP	??halAssertHazardLights_7
??halAssertHazardLights_6:
        SETB	0x90.0
??halAssertHazardLights_7:
        MOV	C,0x90.1
        JNC	??halAssertHazardLights_8
        CLR	0x90.1
        SJMP	??halAssertHazardLights_9
??halAssertHazardLights_8:
        SETB	0x90.1
??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.0
//  156     HAL_TURN_OFF_LED2();
        SETB	0x90.1
//  157     HAL_TURN_OFF_LED3();
        SETB	0x90.1
//  158     HAL_TURN_OFF_LED4();
        SETB	0x90.0
//  159 
//  160     /* wait for button release */
//  161     HAL_DEBOUNCE(!HAL_PUSH_BUTTON1());
        MOV	R0,#0x0
        MOV	R1,#0x0
??halAssertHazardLights_12:
        MOV	C,0x80.1
        JC	??halAssertHazardLights_13
        MOV	R0,#0x0
        MOV	R1,#0x0
??halAssertHazardLights_13:
        LCALL	?Subroutine0 & 0xFFFF
??CrossCallReturnLabel_0:
        JC	??halAssertHazardLights_12
//  162 
//  163     /*-------------------------------------------------------------------------------
//  164      *  Load debug data into memory.
//  165      */
//  166 #ifdef HAL_MCU_AVR
//  167     {
//  168       uint8 * pStack;
//  169       pStack = (uint8 *) SP;
//  170       pStack++; /* point to return address on stack */
//  171       debugData[DEBUG_DATA_RSTACK_HIGH_OFS] = *pStack;
//  172       pStack++;
//  173       debugData[DEBUG_DATA_RSTACK_LOW_OFS] = *pStack;

⌨️ 快捷键说明

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