📄 hal_assert.s51
字号:
// 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 + -