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

📄 zmain.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 4 页
字号:
        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 + -