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

📄 zmain.s51

📁 用IAR开发的ZIGBEE网络路由例子
💻 S51
📖 第 1 页 / 共 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 
//  239   // Initialize extended address in NV
//  240   osal_nv_item_init( ZCD_NV_EXTADDR, Z_EXTADDR_LEN, NULL );
        ; Setup parameters for call to function osal_nv_item_init
        MOV	?V0 + 0,#0x0
        MOV	?V0 + 1,#0x0
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 11)
        MOV	R4,#0x8
        MOV	R5,#0x0
        MOV	R2,#0x1
        MOV	R3,#0x0
        MOV	DPTR,#(osal_nv_item_init & 0xffff)
        MOV	A,#((osal_nv_item_init >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x2
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 9)
//  241   osal_nv_read( ZCD_NV_EXTADDR, 0, Z_EXTADDR_LEN, &aExtendedAddress );
        ; Setup parameters for call to function osal_nv_read
        MOV	?V0 + 0,#(aExtendedAddress & 0xff)
        MOV	?V0 + 1,#((aExtendedAddress >> 8) & 0xff)
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 11)
        MOV	?V0 + 0,#0x8
        MOV	?V0 + 1,#0x0
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 13)
        MOV	R4,#0x0
        MOV	R5,#0x0
        MOV	R2,#0x1
        MOV	R3,#0x0
        MOV	DPTR,#(osal_nv_read & 0xffff)
        MOV	A,#((osal_nv_read >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x4
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 9)
//  242 
//  243   // Check for uninitialized value (erased EEPROM = 0xFF)
//  244   xad = (uint8*)&aExtendedAddress;
        MOV	R0,#(aExtendedAddress & 0xff)
        MOV	R1,#((aExtendedAddress >> 8) & 0xff)
//  245   for ( i = 0; i < Z_EXTADDR_LEN; i++ )
        MOV	R4,#0x0
//  246     if ( *xad++ != 0xFF ) return;
??zmain_ext_addr_1:
        MOV	A,R0
        MOV	R2,A
        MOV	A,R1
        MOV	R3,A
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        MOV	R0,DPL
        MOV	R1,DPH
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	A,@DPTR
        XRL	A,#0xff
        JZ	$+5
        LJMP	??zmain_ext_addr_2
        INC	R4
        MOV	A,R4
        CLR	C
        SUBB	A,#0x8
        JC	??zmain_ext_addr_1
//  247 
//  248 #ifdef ZDO_COORDINATOR
//  249   tmp = 0x10;
//  250 #else
//  251   tmp = 0x20;
        MOV	R3,#0x20
//  252 #endif
//  253   // Initialize with a simple pattern
//  254   xad = (uint8*)&aExtendedAddress;
        MOV	R0,#(aExtendedAddress & 0xff)
        MOV	R1,#((aExtendedAddress >> 8) & 0xff)
//  255   for ( i = 0; i < Z_EXTADDR_LEN; i++ )
        MOV	R2,#0x8
//  256     *xad++ = tmp++;
??zmain_ext_addr_3:
        MOV	A,R3
        MOV	DPL,R0
        MOV	DPH,R1
        MOVX	@DPTR,A
        INC	R3
        INC	DPTR
        MOV	R0,DPL
        MOV	R1,DPH
        DEC	R2
        MOV	A,R2
        JNZ	??zmain_ext_addr_3
//  257 
//  258   // Flash LED1 until user hits SW5
//  259   led = HAL_LED_MODE_OFF;
        MOV	?V0 + 0,#0x0
        SJMP	??zmain_ext_addr_4
//  260   while ( HAL_KEY_SW_5 != HalKeyRead() )
//  261   {
//  262     MicroWait( 62500 );
??zmain_ext_addr_5:
        ; Setup parameters for call to function Onboard_wait
        MOV	R2,#0x24
        MOV	R3,#-0xc
        MOV	DPTR,#(Onboard_wait & 0xffff)
        MOV	A,#((Onboard_wait >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  263     HalLedSet( HAL_LED_1, led^=HAL_LED_MODE_ON );  // Toggle the LED
        XRL	?V0 + 0,#0x1
        ; Setup parameters for call to function HalLedSet
        MOV	R2,?V0 + 0
        MOV	R1,#0x1
        MOV	DPTR,#(HalLedSet & 0xffff)
        MOV	A,#((HalLedSet >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  264     MicroWait( 62500 );
        ; Setup parameters for call to function Onboard_wait
        MOV	R2,#0x24
        MOV	R3,#-0xc
        MOV	DPTR,#(Onboard_wait & 0xffff)
        MOV	A,#((Onboard_wait >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  265   }
??zmain_ext_addr_4:
        ; Setup parameters for call to function HalKeyRead
        MOV	DPTR,#(HalKeyRead & 0xffff)
        MOV	A,#((HalKeyRead >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R1
        XRL	A,#0x4
        JNZ	??zmain_ext_addr_5
//  266   HalLedSet( HAL_LED_1, HAL_LED_MODE_OFF );
        ; Setup parameters for call to function HalLedSet
        MOV	R2,#0x0
        MOV	R1,#0x1
        MOV	DPTR,#(HalLedSet & 0xffff)
        MOV	A,#((HalLedSet >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  267 
//  268   // Plug AtoD data into lower bytes
//  269   AtoD = HalAdcRead (HAL_ADC_CHANNEL_7, HAL_ADC_RESOLUTION_10);
        ; Setup parameters for call to function HalAdcRead
        MOV	R2,#0x2
        MOV	R1,#0x7
        MOV	DPTR,#(HalAdcRead & 0xffff)
        MOV	A,#((HalAdcRead >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  270   xad = (uint8*)&aExtendedAddress;
//  271   *xad++ = LO_UINT16( AtoD );
        MOV	A,R2
        MOV	DPTR,#aExtendedAddress
        MOVX	@DPTR,A
//  272   *xad = HI_UINT16( AtoD );
        MOV	A,R3
        MOV	DPTR,#(aExtendedAddress + 1)
        MOVX	@DPTR,A
//  273 
//  274 #if !defined( ZTOOL_PORT ) || defined( ZPORT ) || defined( NV_RESTORE )
//  275   // If no support for Z-Tool serial I/O,
//  276   // Write temporary 64-bit address to NV
//  277   osal_nv_write( ZCD_NV_EXTADDR, 0, Z_EXTADDR_LEN, &aExtendedAddress );
        ; Setup parameters for call to function osal_nv_write
        MOV	?V0 + 0,#(aExtendedAddress & 0xff)
        MOV	?V0 + 1,#((aExtendedAddress >> 8) & 0xff)
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 11)
        MOV	?V0 + 0,#0x8
        MOV	?V0 + 1,#0x0
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 13)
        MOV	R4,#0x0
        MOV	R5,#0x0
        MOV	R2,#0x1
        MOV	R3,#0x0
        MOV	DPTR,#(osal_nv_write & 0xffff)
        MOV	A,#((osal_nv_write >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x4
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 9)
//  278 #endif
//  279 }
??zmain_ext_addr_2:
        MOV	R7,#0x2
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock5

        RSEG XSP:DATA:REORDER:NOROOT(0)

        ASEGN SFR_AN:DATA:NOROOT,090H
// union <unnamed> volatile __sfr _A_P1
_A_P1:
        DS 1

        END
//  280 
//  281 /*********************************************************************
//  282  * @fn      zmain_dev_info
//  283  * @brief   Gets or makes extended address.
//  284  * @return  none
//  285  *********************************************************************/
//  286 static ZSEG void zmain_dev_info ( void )
//  287 {
//  288 #ifdef LCD_SUPPORTED
//  289   uint8 i;
//  290   uint8 ch;
//  291   uint8 *xad;
//  292   unsigned char lcd_buf[18];
//  293 
//  294   // Display the extended address
//  295   xad = (uint8*)&aExtendedAddress + Z_EXTADDR_LEN - 1;
//  296   for ( i = 0; i < Z_EXTADDR_LEN*2; xad-- ) {
//  297     ch = (*xad >> 4) & 0x0F;
//  298     lcd_buf[i++] = ch + (( ch < 10 ) ? '0' : '7');
//  299     ch = *xad & 0x0F;
//  300     lcd_buf[i++] = ch + (( ch < 10 ) ? '0' : '7');
//  301   }
//  302   lcd_buf[Z_EXTADDR_LEN*2] = '\0';
//  303   HalLcdWriteString( "IEEE Address:", HAL_LCD_LINE_1 );
//  304   HalLcdWriteString( (char*)lcd_buf, HAL_LCD_LINE_2 );
//  305 #endif // LCD
//  306 }
//  307 
//  308 /*********************************************************************
//  309  * @fn      zmain_ram_init
//  310  * @brief   Initialize ram for stack "high-water-mark" observations.
//  311  * @return  none
//  312  *********************************************************************/
//  313 static ZSEG void zmain_ram_init( void )
//  314 {
//  315   uint8 *end;
//  316   uint8 *ptr;
//  317 
//  318   // Initialize the call (parameter) stack
//  319   end = (uint8*)CSTK_BEG;  // Lower end
//  320   ptr = (uint8*)(*( __idata uint16*)(CSTK_PTR));  // Upper end
//  321   while ( --ptr > end )
//  322     *ptr = STACK_INIT_VALUE;
//  323 
//  324   // Initialize the return (address) stack
//  325   ptr = (uint8*)RSTK_END - 1;  // Upper end
//  326   while ( --ptr > (uint8*)SP )
//  327     *(__idata uint8*)ptr = STACK_INIT_VALUE;
//  328 }
//  329 
//  330 #ifdef LCD_SUPPORTED
//  331 /*********************************************************************
//  332  * @fn      zmain_lcd_init
//  333  * @brief   Initialize LCD at start up.
//  334  * @return  none
//  335  *********************************************************************/
//  336 static ZSEG void zmain_lcd_init ( void )
//  337 {
//  338 #ifdef LCD_SD
//  339  // if ( LcdLine1 == NULL )
//  340   {
//  341     HalLcdWriteString( "Figure8 Wireless", HAL_LCD_LINE_1 );
//  342 
//  343 #if defined( MT_MAC_FUNC )
//  344 #if defined( ZDO_COORDINATOR )
//  345       HalLcdWriteString( "MAC-MT Coord", HAL_LCD_LINE_2 );
//  346 #else
//  347       HalLcdWriteString( "MAC-MT Device", HAL_LCD_LINE_2 );
//  348 #endif // ZDO
//  349 #elif defined( MT_NWK_FUNC )
//  350 #if defined( ZDO_COORDINATOR )
//  351       HalLcdWriteString( "NWK Coordinator", HAL_LCD_LINE_2 );
//  352 #else
//  353       HalLcdWriteString( "NWK Device", HAL_LCD_LINE_2 );
//  354 #endif // ZDO
//  355 #endif // MT_FUNC
//  356   }
//  357 #endif // LCD_SD
//  358 }
//  359 #endif
//  360 
//  361 /*********************************************************************
//  362 *********************************************************************/
// 
// 580 bytes in segment NEAR_CODE
//   4 bytes in segment SFR_AN
// 
// 580 bytes of CODE memory
//   0 bytes of DATA memory (+ 4 bytes shared)
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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