📄 hal_assert.s51
字号:
// 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;
// 174 }
// 175 debugData[DEBUG_DATA_INT_MASK_OFS] = EIMSK;
// 176 #endif
// 177
// 178 #ifdef HAL_MCU_CC2430
// 179 debugData[DEBUG_DATA_INT_MASK_OFS] = RFIM;
MOV A,0x91
PUSH A
CFI CFA_SP SP+-1
MOV A,#0x4
LCALL ?XSTACK_DISP0_8
POP A
CFI CFA_SP SP+0
MOVX @DPTR,A
// 180 #endif
// 181
// 182 debugData[DEBUG_DATA_TX_ACTIVE_OFS] = macTxActive;
MOV DPTR,#macTxActive
MOVX A,@DPTR
PUSH A
CFI CFA_SP SP+-1
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
POP A
CFI CFA_SP SP+0
MOVX @DPTR,A
// 183 debugData[DEBUG_DATA_RX_ACTIVE_OFS] = macRxActive;
MOV DPTR,#macRxActive
MOVX A,@DPTR
PUSH A
CFI CFA_SP SP+-1
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
POP A
CFI CFA_SP SP+0
MOVX @DPTR,A
// 184
// 185 /* initialize for data dump loop */
// 186 {
// 187 uint8 iBit;
// 188 uint8 iByte;
// 189
// 190 iBit = 0;
MOV R4,#0x0
// 191 iByte = 0;
MOV R3,#0x0
// 192
// 193 /*-------------------------------------------------------------------------------
// 194 * Data dump loop. A button press cycles data bits to an LED.
// 195 */
// 196 while (iByte < DEBUG_DATA_SIZE)
// 197 {
// 198 /* wait for key press */
// 199 while(!HAL_PUSH_BUTTON1());
??halAssertHazardLights_14:
MOV C,0x80.1
JC ??halAssertHazardLights_14
// 200
// 201 /* turn on all LEDs for first bit of byte, turn on three LEDs if not first bit */
// 202 HAL_TURN_ON_LED1();
CLR 0x90.0
// 203 HAL_TURN_ON_LED2();
CLR 0x90.1
// 204 HAL_TURN_ON_LED3();
CLR 0x90.1
// 205 if (iBit == 0)
MOV A,R4
JNZ ??halAssertHazardLights_15
// 206 {
// 207 HAL_TURN_ON_LED4();
CLR 0x90.0
SJMP ??halAssertHazardLights_16
// 208 }
// 209 else
// 210 {
// 211 HAL_TURN_OFF_LED4();
??halAssertHazardLights_15:
SETB 0x90.0
// 212 }
// 213
// 214 /* wait for debounced key release */
// 215 HAL_DEBOUNCE(!HAL_PUSH_BUTTON1());
??halAssertHazardLights_16:
MOV R0,#0x0
MOV R1,#0x0
??halAssertHazardLights_17:
MOV C,0x80.1
JC ??halAssertHazardLights_18
MOV R0,#0x0
MOV R1,#0x0
??halAssertHazardLights_18:
LCALL ?Subroutine0 & 0xFFFF
??CrossCallReturnLabel_1:
JC ??halAssertHazardLights_17
// 216
// 217 /* turn off all LEDs */
// 218 HAL_TURN_OFF_LED1();
SETB 0x90.0
// 219 HAL_TURN_OFF_LED2();
SETB 0x90.1
// 220 HAL_TURN_OFF_LED3();
SETB 0x90.1
// 221 HAL_TURN_OFF_LED4();
SETB 0x90.0
// 222
// 223 /* output value of data bit to LED1 */
// 224 if (debugData[iByte] & (1 << (7 - iBit)))
MOV ?V0 + 0,#0x1
MOV ?V0 + 1,#0x0
MOV A,#0x7
CLR C
SUBB A,R4
MOV R0,#?V0 + 0
LCALL ?S_SHL
PUSH ?V0 + 0
CFI CFA_SP SP+-1
MOV ?V0 + 0,R3
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,DPL
ADD A,?V0 + 0
MOV DPL,A
MOV A,DPH
ADDC A,#0x0
MOV DPH,A
POP A
CFI CFA_SP SP+0
MOV R2,A
MOVX A,@DPTR
ANL A,R2
JZ ??halAssertHazardLights_19
// 225 {
// 226 HAL_TURN_ON_LED1();
CLR 0x90.0
SJMP ??halAssertHazardLights_20
// 227 }
// 228 else
// 229 {
// 230 HAL_TURN_OFF_LED1();
??halAssertHazardLights_19:
SETB 0x90.0
// 231 }
// 232
// 233 /* advance to next bit */
// 234 iBit++;
??halAssertHazardLights_20:
INC R4
// 235 if (iBit == 8)
MOV A,#0x8
XRL A,R4
JNZ ??halAssertHazardLights_14
// 236 {
// 237 iBit = 0;
MOV R4,#0x0
// 238 iByte++;
INC R3
// 239 }
// 240 }
MOV A,R3
CLR C
SUBB A,#0x5
JC ??halAssertHazardLights_14
// 241 }
// 242
// 243 /*
// 244 * About to enter "hazard lights" loop again. Turn off LED1 in case the last bit
// 245 * displayed happened to be one. This guarantees all LEDs are off at the start of
// 246 * the flashing loop which uses a toggle operation to change LED states.
// 247 */
// 248 HAL_TURN_OFF_LED1();
??halAssertHazardLights_0:
SETB 0x90.0
LJMP ??halAssertHazardLights_11 & 0xFFFF
CFI EndBlock cfiBlock1
// 249 }
// 250 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
CFI Block cfiCond2 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_1
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 21)
CFI Block cfiCond3 Using cfiCommon0
CFI (cfiCond3) NoFunction
CFI (cfiCond3) Conditional ??CrossCallReturnLabel_0
CFI (cfiCond3) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond3) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond3) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond3) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond3) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond3) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond3) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond3) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond3) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond3) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond3) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond3) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond3) CFA_SP SP+0
CFI (cfiCond3) CFA_XSP16 add(XSP16, 21)
CFI Block cfiPicker4 Using cfiCommon1
CFI (cfiPicker4) NoFunction
CFI (cfiPicker4) Picker
MOV A,R0
ADD A,#0x1
INC R0
MOV A,R1
ADDC A,#0x0
MOV R1,A
CLR C
MOV A,R0
SUBB A,#-0xc
MOV A,R1
SUBB A,#0x1
MOV C,0xD0 /* PSW */.2
XRL A,PSW
RLC A
RET
CFI EndBlock cfiCond2
CFI EndBlock cfiCond3
CFI EndBlock cfiPicker4
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
??escape:
DS 1
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_0:
DS 4
REQUIRE `?<Initializer for __Constant_0>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for __Constant_0>`:
DD 0
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_1:
DS 4
REQUIRE `?<Initializer for __Constant_1>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for __Constant_1>`:
DD 1
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_5800:
DS 4
REQUIRE `?<Initializer for __Constant_5800>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for __Constant_5800>`:
DD 22528
ASEGN SFR_AN:DATA:NOROOT,080H
// union <unnamed> volatile __sfr _A_P0
_A_P0:
DS 1
ASEGN SFR_AN:DATA:NOROOT,090H
// union <unnamed> volatile __sfr _A_P1
_A_P1:
DS 1
ASEGN SFR_AN:DATA:NOROOT,0a8H
// union <unnamed> volatile __sfr _A_IEN0
_A_IEN0:
DS 1
END
// 251
// 252
// 253 /* ------------------------------------------------------------------------------------------------
// 254 * Compile Time Assertions
// 255 * ------------------------------------------------------------------------------------------------
// 256 */
// 257
// 258 /* integrity check of type sizes */
// 259 HAL_ASSERT_SIZE( int8, 1);
// 260 HAL_ASSERT_SIZE( uint8, 1);
// 261 HAL_ASSERT_SIZE( int16, 2);
// 262 HAL_ASSERT_SIZE(uint16, 2);
// 263 HAL_ASSERT_SIZE( int32, 4);
// 264 HAL_ASSERT_SIZE(uint32, 4);
// 265
// 266
// 267 /**************************************************************************************************
// 268 */
//
// 376 bytes in segment BANKED_CODE
// 6 bytes in segment SFR_AN
// 12 bytes in segment XDATA_I
// 12 bytes in segment XDATA_ID
// 1 byte in segment XDATA_Z
//
// 376 bytes of CODE memory (+ 12 bytes shared)
// 0 bytes of DATA memory (+ 6 bytes shared)
// 1 byte of XDATA memory (+ 12 bytes shared)
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -