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

📄 zmain.s51

📁 cc2430讀取短地址程式
💻 S51
📖 第 1 页 / 共 3 页
字号:
// unsigned char volatile __sfr P0INP
P0INP:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0feH
// unsigned char volatile __sfr P1DIR
P1DIR:
        DS 1
//   25 #include "ZMAC.h"
//   26 #include "MTEL.h"
//   27 
//   28 #include "nwk_globals.h"
//   29 #include "ZDApp.h"
//   30 #include "ssp.h"
//   31 #include "ZGlobals.h"
//   32 
//   33 #ifndef NONWK
//   34   #include "AF.h"
//   35 #endif
//   36 
//   37 /* Hal */
//   38 #include "hal_lcd.h"
//   39 #include "hal_key.h"
//   40 #include "hal_led.h"
//   41 #include "hal_adc.h"
//   42 #include "hal_drivers.h"
//   43 #include "hal_assert.h"
//   44 
//   45 #include "ioCC2430.h"
//   46 
//   47 /* temperture */
//   48 #include "Temp.h"
//   49 
//   50 /*********************************************************************
//   51  * MACROS
//   52  */
//   53 
//   54 /*********************************************************************
//   55  * CONSTANTS
//   56  */
//   57 
//   58 // LED Flash counter, waiting for default 64-bit address
//   59 #define FLASH_COUNT 20000
//   60 
//   61 // Maximun number of Vdd samples checked before go on
//   62 #define MAX_VDD_SAMPLES  3
//   63 #define ZMAIN_VDD_LIMIT  HAL_ADC_VDD_LIMIT_4
//   64 
//   65 #define TIMER3_INTERRUPT() _Pragma("vector=T3_VECTOR")  __near_func __interrupt void Timer3ISR(void)
//   66 
//   67 
//   68 /*********************************************************************
//   69  * TYPEDEFS
//   70  */
//   71 
//   72 /*********************************************************************
//   73  * GLOBAL VARIABLES
//   74  */
//   75 
//   76 /*********************************************************************
//   77  * EXTERNAL VARIABLES
//   78  */
//   79 
//   80 /*********************************************************************
//   81  * EXTERNAL FUNCTIONS
//   82  */
//   83 
//   84 extern __near_func uint8 GetCodeByte(uint32);
//   85 
//   86 extern bool HalAdcCheckVdd (uint8 limit);
//   87 
//   88 /*********************************************************************
//   89  * LOCAL VARIABLES
//   90  */
//   91 
//   92 /*********************************************************************
//   93  * ZMAIN API JUMP FUNCTIONS
//   94  *
//   95  * If the MINIMIZE_ROOT compile flag is defined, ZMAIN API functions
//   96  * are implemented as "jump functions" located in the ROOT segment,
//   97  * as expected by the NWK object libraries. This allows the actual
//   98  * ZMAIN function bodies to locate outside ROOT memory, increasing
//   99  * space for user defined constants, strings, etc in ROOT memory.
//  100  *
//  101  * If the MINIMIZE_ROOT compile flag in not defined, the ZMAIN API
//  102  * functions are aliased to the similarly-named function bodies and
//  103  * located in the ROOT segment with no "jump function" overhead.
//  104  * This is the default behavior which produces smaller overall code
//  105  * size and maximizes available code space in BANK1...BANK3.
//  106  *
//  107  */
//  108 
//  109 #ifdef MINIMIZE_ROOT
//  110   // ZMAIN functions are not forced into ROOT segment
//  111   #define ZSEG
//  112 #else
//  113   // ZMAIN functions are forced into ROOT segment
//  114   #define ZSEG ROOT
//  115 #endif
//  116 
//  117 /*********************************************************************
//  118  * LOCAL FUNCTIONS
//  119  */
//  120 
//  121 static ZSEG void zmain_dev_info( void );
//  122 static ZSEG void zmain_ext_addr( void );
//  123 static ZSEG void zmain_ram_init( void );
//  124 static ZSEG void zmain_vdd_check( void );
//  125 
//  126 #ifdef LCD_SUPPORTED
//  127 static ZSEG void zmain_lcd_init( void );
//  128 #endif
//  129 
//  130 /*********************************************************************
//  131  * @fn      main
//  132  * @brief   First function called after startup.
//  133  * @return  don't care
//  134  *********************************************************************/

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  135 ZSEG int main( void )
main:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function main
//  136 {
        FUNCALL main, osal_int_disable
        FUNCALL main, ??zmain_vdd_check
        FUNCALL main, InitBoard
        FUNCALL main, HalDriverInit
        FUNCALL main, osal_nv_init
        FUNCALL main, ??zmain_ext_addr
        FUNCALL main, zgInit
        FUNCALL main, ZMacInit
        FUNCALL main, afInit
        FUNCALL main, osal_init_system
        FUNCALL main, osal_int_enable
        FUNCALL main, InitBoard
        FUNCALL main, osal_start_system
        ; Auto size: 0
//  137   // Turn off interrupts
//  138   osal_int_disable( INTS_ALL );
        ; Setup parameters for call to function osal_int_disable
        MOV	R1,#-0x1
        MOV	DPTR,#(osal_int_disable & 0xffff)
        MOV	A,#((osal_int_disable >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  139 
//  140   // Make sure supply voltage is high enough to run
//  141   zmain_vdd_check();
        ; Setup parameters for call to function zmain_vdd_check
        LCALL	??zmain_vdd_check
//  142 
//  143   // Initialize stack memory
//  144   zmain_ram_init();
        MOV	R0,#(SFB(XSP) & 0xff)
        MOV	DPL,@R0
        INC	R0
        MOV	DPH,@R0
        SJMP	??main_0
??main_1:
        MOV	A,#-0x5b
        MOVX	@DPTR,A
??main_0:
        LCALL	?Subroutine0
??CrossCallReturnLabel_0:
        CLR	C
        MOV	A,#(SFB(XSTACK) & 0xff)
        SUBB	A,DPL
        MOV	A,#((SFB(XSTACK) >> 8) & 0xff)
        SUBB	A,DPH
        JC	??main_1
        MOV	DPL,#((SFE(ISTACK) + 255) & 0xff)
        MOV	DPH,#(((SFE(ISTACK) - 1) >> 8) & 0xff)
        SJMP	??main_2
??main_3:
        MOV	R0,DPL
        MOV	@R0,#-0x5b
??main_2:
        MOV	A,0x81
        MOV	?V0 + 0,A
        LCALL	?Subroutine0
??CrossCallReturnLabel_1:
        MOV	?V0 + 1,#0x0
        CLR	C
        MOV	A,?V0 + 0
        SUBB	A,DPL
        CLR	A
        SUBB	A,DPH
        JC	??main_3
//  145 
//  146   // Initialize board I/O
//  147   InitBoard( OB_COLD );
        ; Setup parameters for call to function InitBoard
        MOV	R1,#0x0
        MOV	DPTR,#(InitBoard & 0xffff)
        MOV	A,#((InitBoard >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  148 
//  149   // Initialze HAL drivers
//  150   HalDriverInit();
        ; Setup parameters for call to function HalDriverInit
        MOV	DPTR,#(HalDriverInit & 0xffff)
        MOV	A,#((HalDriverInit >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  151 
//  152   // Initialize NV System
//  153   osal_nv_init( NULL );
        ; Setup parameters for call to function osal_nv_init
        MOV	R2,#0x0
        MOV	R3,#0x0
        MOV	DPTR,#(osal_nv_init & 0xffff)
        MOV	A,#((osal_nv_init >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  154 
//  155   // Determine the extended address
//  156   zmain_ext_addr();
        ; Setup parameters for call to function zmain_ext_addr
        LCALL	??zmain_ext_addr
//  157 
//  158   // Initialize basic NV items
//  159   zgInit();
        ; Setup parameters for call to function zgInit
        MOV	DPTR,#(zgInit & 0xffff)
        MOV	A,#((zgInit >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  160 
//  161   // Initialize the MAC
//  162   ZMacInit();
        ; Setup parameters for call to function ZMacInit
        LCALL	ZMacInit
//  163 
//  164 #ifndef NONWK
//  165   // Since the AF isn't a task, call it's initialization routine
//  166   afInit();
        ; Setup parameters for call to function afInit
        MOV	DPTR,#(afInit & 0xffff)
        MOV	A,#((afInit >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  167 #endif
//  168 
//  169   // Initialize the operating system
//  170   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()
//  171 
//  172   // Allow interrupts
//  173   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()
//  174 
//  175   // Final board initialization
//  176   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()
//  177 
//  178   // Display information about this device
//  179   zmain_dev_info();
//  180 
//  181   /* Display the device info on the LCD */
//  182 #ifdef LCD_SUPPORTED
//  183   zmain_lcd_init();
//  184 #endif
//  185 
//  186   //while(1);
//  187   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()
//  188 } // 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_0
        CFI Block cfiCond2 Using cfiCommon0
        CFI (cfiCond2) NoFunction
        CFI (cfiCond2) Conditional ??CrossCallReturnLabel_1
        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
//  189 
//  190 /*********************************************************************
//  191  * @fn      zmain_vdd_check
//  192  * @brief   Check if the Vdd is OK to run the processor.
//  193  * @return  Return if Vdd is ok; otherwise, flash LED, then reset
//  194  *********************************************************************/

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  195 static ZSEG void zmain_vdd_check( void )
??zmain_vdd_check:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function ??zmain_vdd_check
//  196 {
        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
        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
//  197   uint8 vdd_passed_count = 0;
        MOV	R6,#0x0
//  198   bool toggle = 0;
        MOV	R7,#0x0
//  199 
//  200   // Initialization for board related stuff such as LEDs
//  201   HAL_BOARD_INIT();
        ORL	0xfe,#0x1
        ORL	0xfe,#0x8
        ORL	0x8f,#0x20
        SJMP	??zmain_vdd_check_1
//  202 
//  203   // Repeat getting the sample until number of failures or successes hits MAX
//  204   // then based on the count value, determine if the device is ready or not
//  205   while ( vdd_passed_count < MAX_VDD_SAMPLES )
//  206   {
//  207     if ( HalAdcCheckVdd (ZMAIN_VDD_LIMIT) )
//  208     {
//  209       HAL_TOGGLE_LED1();
??zmain_vdd_check_2:
        JNC	??zmain_vdd_check_3
        CLR	0x90.0
        SJMP	??zmain_vdd_check_4
??zmain_vdd_check_3:
        SETB	0x90.0
//  210       vdd_passed_count++;    // Keep track # times Vdd passes in a row

⌨️ 快捷键说明

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