📄 zmain.s51
字号:
MOV A,#((osal_nv_init >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 147
// 148 // Determine the extended address
// 149 zmain_ext_addr();
; Setup parameters for call to function zmain_ext_addr
LCALL ??zmain_ext_addr
// 150
// 151 // Initialize basic NV items
// 152 zgInit();
; Setup parameters for call to function zgInit
MOV DPTR,#(zgInit & 0xffff)
MOV A,#((zgInit >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 153
// 154 // Initialize the MAC
// 155 ZMacInit();
; Setup parameters for call to function ZMacInit
LCALL ZMacInit
// 156
// 157 #ifndef NONWK
// 158 // Since the AF isn't a task, call it's initialization routine
// 159 afInit();
; Setup parameters for call to function afInit
MOV DPTR,#(afInit & 0xffff)
MOV A,#((afInit >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 160 #endif
// 161
// 162 // Initialize the operating system
// 163 osal_init_system();
; Setup parameters for call to function osal_init_system
MOV DPTR,#(osal_init_system & 0xffff)
MOV A,#((osal_init_system >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 164
// 165 // Allow interrupts
// 166 osal_int_enable( INTS_ALL );
; Setup parameters for call to function osal_int_enable
MOV R1,#-0x1
MOV DPTR,#(osal_int_enable & 0xffff)
MOV A,#((osal_int_enable >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 167
// 168 // Final board initialization
// 169 InitBoard( OB_READY );
; Setup parameters for call to function InitBoard
MOV R1,#0x2
MOV DPTR,#(InitBoard & 0xffff)
MOV A,#((InitBoard >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 170
// 171 // Display information about this device
// 172 zmain_dev_info();
// 173
// 174 /* Display the device info on the LCD */
// 175 #ifdef LCD_SUPPORTED
// 176 zmain_lcd_init();
// 177 #endif
// 178
// 179 osal_start_system(); // No Return from here
; Setup parameters for call to function osal_start_system
MOV DPTR,#(osal_start_system & 0xffff)
MOV A,#((osal_start_system >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 180 } // main()
MOV R2,#0x0
MOV R3,#0x0
RET
CFI EndBlock cfiBlock0
RSEG NEAR_CODE:CODE:NOROOT(0)
?Subroutine0:
CFI Block cfiCond1 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_1
CFI Block cfiCond2 Using cfiCommon0
CFI (cfiCond2) NoFunction
CFI (cfiCond2) Conditional ??CrossCallReturnLabel_0
CFI Block cfiPicker3 Using cfiCommon1
CFI (cfiPicker3) NoFunction
CFI (cfiPicker3) Picker
MOV A,DPL
ADD A,#-0x1
MOV DPL,A
MOV A,DPH
ADDC A,#-0x1
MOV DPH,A
RET
CFI EndBlock cfiCond1
CFI EndBlock cfiCond2
CFI EndBlock cfiPicker3
// 181
// 182 /*********************************************************************
// 183 * @fn zmain_vdd_check
// 184 * @brief Check if the Vdd is OK to run the processor.
// 185 * @return Return if Vdd is ok; otherwise, flash LED, then reset
// 186 *********************************************************************/
RSEG NEAR_CODE:CODE:NOROOT(0)
// 187 static ZSEG void zmain_vdd_check( void )
??zmain_vdd_check:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function ??zmain_vdd_check
// 188 {
FUNCALL ??zmain_vdd_check, Onboard_wait
LOCFRAME XSTACK, 8, STACK
ARGFRAME XSTACK, 8, STACK
FUNCALL ??zmain_vdd_check, HalAdcCheckVdd
LOCFRAME XSTACK, 8, STACK
ARGFRAME XSTACK, 8, STACK
FUNCALL ??zmain_vdd_check, Onboard_wait
LOCFRAME XSTACK, 8, STACK
ARGFRAME XSTACK, 8, STACK
FUNCALL ??zmain_vdd_check, Onboard_wait
LOCFRAME XSTACK, 8, STACK
ARGFRAME XSTACK, 8, STACK
MOV A,#-0x8
LCALL ?FUNC_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 8)
; Saved register size: 8
; Auto size: 0
// 189 uint8 vdd_passed_count = 0;
MOV R6,#0x0
// 190 bool toggle = 0;
MOV R7,#0x0
// 191
// 192 // Initialization for board related stuff such as LEDs
// 193 HAL_BOARD_INIT();
ORL 0xfe,#0x1
ORL 0xfe,#0x2
ORL 0xf7,#0x1
ORL 0xfe,#0x4
CLR 0x90.2
SJMP ??zmain_vdd_check_1
// 194
// 195 // Repeat getting the sample until number of failures or successes hits MAX
// 196 // then based on the count value, determine if the device is ready or not
// 197 while ( vdd_passed_count < MAX_VDD_SAMPLES )
// 198 {
// 199 if ( HalAdcCheckVdd (ZMAIN_VDD_LIMIT) )
// 200 {
// 201 vdd_passed_count++; // Keep track # times Vdd passes in a row
??zmain_vdd_check_2:
INC R6
// 202 MicroWait (10000); // Wait 10ms to try again
; Setup parameters for call to function Onboard_wait
MOV R2,#0x10
MOV R3,#0x27
MOV DPTR,#(Onboard_wait & 0xffff)
MOV A,#((Onboard_wait >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 203 }
// 204 else
// 205 {
// 206 vdd_passed_count = 0; // Reset passed counter
// 207 MicroWait (50000); // Wait 50ms
// 208 MicroWait (50000); // Wait another 50ms to try again
// 209 }
// 210
// 211 /* toggle LED1 and LED2 */
// 212 if (vdd_passed_count == 0)
MOV A,R6
JZ ??zmain_vdd_check_3
CLR C
SUBB A,#0x3
JNC ??zmain_vdd_check_4
??zmain_vdd_check_1:
; Setup parameters for call to function HalAdcCheckVdd
MOV R1,#0x4
MOV DPTR,#(HalAdcCheckVdd & 0xffff)
MOV A,#((HalAdcCheckVdd >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R1
JNZ ??zmain_vdd_check_2
MOV R6,#0x0
; Setup parameters for call to function Onboard_wait
MOV R2,#0x50
MOV R3,#-0x3d
MOV DPTR,#(Onboard_wait & 0xffff)
MOV A,#((Onboard_wait >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
; Setup parameters for call to function Onboard_wait
MOV R2,#0x50
MOV R3,#-0x3d
MOV A,#((Onboard_wait >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 213 {
// 214 if ((toggle = !(toggle)))
??zmain_vdd_check_3:
MOV A,R7
JNZ ??zmain_vdd_check_5
MOV R7,#0x1
// 215 HAL_TOGGLE_LED1();
MOV C,0x90.0
JC ??zmain_vdd_check_6
SETB 0x90.0
SJMP ??zmain_vdd_check_1
??zmain_vdd_check_5:
MOV R7,#0x0
// 216 else
// 217 HAL_TOGGLE_LED2();
MOV C,0x90.1
JC ??zmain_vdd_check_7
SETB 0x90.1
SJMP ??zmain_vdd_check_1
??zmain_vdd_check_6:
CLR 0x90.0
SJMP ??zmain_vdd_check_1
??zmain_vdd_check_7:
CLR 0x90.1
SJMP ??zmain_vdd_check_1
// 218 }
// 219 }
// 220
// 221 /* turn off LED1 */
// 222 HAL_TURN_OFF_LED1();
??zmain_vdd_check_4:
SETB 0x90.0
// 223 HAL_TURN_OFF_LED2();
SETB 0x90.1
// 224 }
MOV R7,#0x1
LJMP ?FUNC_LEAVE_XDATA
CFI EndBlock cfiBlock4
// 225
// 226 /*********************************************************************
// 227 * @fn zmain_ext_addr
// 228 * @brief Makes extended address if none exists.
// 229 * @return none
// 230 *********************************************************************/
RSEG NEAR_CODE:CODE:NOROOT(0)
// 231 static ZSEG void zmain_ext_addr( void )
??zmain_ext_addr:
CFI Block cfiBlock5 Using cfiCommon0
CFI Function ??zmain_ext_addr
// 232 {
FUNCALL ??zmain_ext_addr, osal_nv_item_init
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL ??zmain_ext_addr, osal_nv_read
LOCFRAME XSTACK, 13, STACK
ARGFRAME XSTACK, 13, STACK
FUNCALL ??zmain_ext_addr, Onboard_wait
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL ??zmain_ext_addr, HalLedSet
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL ??zmain_ext_addr, Onboard_wait
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL ??zmain_ext_addr, HalKeyRead
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL ??zmain_ext_addr, HalLedSet
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL ??zmain_ext_addr, HalAdcRead
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL ??zmain_ext_addr, osal_nv_write
LOCFRAME XSTACK, 13, STACK
ARGFRAME XSTACK, 13, STACK
MOV A,#-0x9
LCALL ?FUNC_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 0
// 233 uint8 i;
// 234 uint8 led;
// 235 uint8 tmp;
// 236 uint8 *xad;
// 237 uint16 AtoD;
// 238
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -