zmain.s51
来自「cc2430讀取短地址程式」· S51 代码 · 共 1,116 行 · 第 1/3 页
S51
1,116 行
??zmain_vdd_check_4:
INC R6
// 211 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()
// 212 MicroWait (50000);
; 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 else
// 215 {
// 216 HAL_TOGGLE_LED1();
// 217 vdd_passed_count = 0; // Reset passed counter
// 218 MicroWait (50000); // Wait 50ms
// 219 MicroWait (50000); // Wait another 50ms to try again
// 220 }
// 221
// 222 /* toggle LED1 and LED2 */
// 223 if (vdd_passed_count == 0)
MOV A,R6
JZ ??zmain_vdd_check_5
??zmain_vdd_check_6:
MOV A,R6
CLR C
SUBB A,#0x3
JNC ??zmain_vdd_check_7
??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
MOV C,0x90.0
JNZ ??zmain_vdd_check_2
JNC ??zmain_vdd_check_8
CLR 0x90.0
SJMP ??zmain_vdd_check_9
??zmain_vdd_check_8:
SETB 0x90.0
??zmain_vdd_check_9:
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()
// 224 {
// 225 if ((toggle = !(toggle)))
??zmain_vdd_check_5:
MOV A,R7
JNZ ??zmain_vdd_check_10
MOV R7,#0x1
// 226 HAL_TOGGLE_LED1();
MOV C,0x90.0
JC ??zmain_vdd_check_11
SETB 0x90.0
SJMP ??zmain_vdd_check_1
??zmain_vdd_check_10:
MOV R7,#0x0
SJMP ??zmain_vdd_check_6
??zmain_vdd_check_11:
CLR 0x90.0
SJMP ??zmain_vdd_check_1
// 227 else;
// 228 //HAL_TOGGLE_LED2();
// 229 }
// 230 }
// 231
// 232 /* turn off LED1 */
// 233 HAL_TURN_OFF_LED1();
??zmain_vdd_check_7:
SETB 0x90.0
// 234 HAL_TURN_OFF_LED2();
SETB 0x90.3
// 235 }
MOV R7,#0x1
LJMP ?FUNC_LEAVE_XDATA
CFI EndBlock cfiBlock4
// 236
// 237 /*********************************************************************
// 238 * @fn zmain_ext_addr
// 239 * @brief Makes extended address if none exists.
// 240 * @return none
// 241 *********************************************************************/
RSEG NEAR_CODE:CODE:NOROOT(0)
// 242 static ZSEG void zmain_ext_addr( void )
??zmain_ext_addr:
CFI Block cfiBlock5 Using cfiCommon0
CFI Function ??zmain_ext_addr
// 243 {
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, HalLedSet
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL ??zmain_ext_addr, HalAdcRead
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, 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
// 244 uint8 i;
// 245 uint8 led;
// 246 uint8 tmp;
// 247 uint8 *xad;
// 248 uint16 AtoD;
// 249
// 250 // Initialize extended address in NV
// 251 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)
// 252 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)
// 253
// 254 // Check for uninitialized value (erased EEPROM = 0xFF)
// 255 xad = (uint8*)&aExtendedAddress;
MOV R0,#(aExtendedAddress & 0xff)
MOV R1,#((aExtendedAddress >> 8) & 0xff)
// 256 for ( i = 0; i < Z_EXTADDR_LEN; i++ )
MOV R4,#0x0
// 257 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
JNZ ??zmain_ext_addr_2
INC R4
MOV A,R4
CLR C
SUBB A,#0x8
JC ??zmain_ext_addr_1
// 258
// 259 #ifdef ZDO_COORDINATOR
// 260 tmp = 0x10;
// 261 #else
// 262 tmp = 0x20;
MOV R3,#0x20
// 263 #endif
// 264 // Initialize with a simple pattern
// 265 xad = (uint8*)&aExtendedAddress;
MOV R0,#(aExtendedAddress & 0xff)
MOV R1,#((aExtendedAddress >> 8) & 0xff)
// 266 for ( i = 0; i < Z_EXTADDR_LEN; i++ )
MOV R2,#0x8
// 267 *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
// 268
// 269 // Flash LED1 until user hits SW5
// 270 led = HAL_LED_MODE_OFF;
// 271 /*while ( HAL_KEY_SW_5 != HalKeyRead() )
// 272 {
// 273 MicroWait( 62500 );
// 274 HalLedSet( HAL_LED_1, led^=HAL_LED_MODE_ON ); // Toggle the LED
// 275 MicroWait( 62500 );
// 276 }*/
// 277 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()
// 278
// 279 // Plug AtoD data into lower bytes
// 280 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()
// 281 xad = (uint8*)&aExtendedAddress;
// 282 *xad++ = LO_UINT16( AtoD );
MOV A,R2
MOV DPTR,#aExtendedAddress
MOVX @DPTR,A
// 283 *xad = HI_UINT16( AtoD );
MOV A,R3
MOV DPTR,#(aExtendedAddress + 1)
MOVX @DPTR,A
// 284
// 285 #if !defined( ZTOOL_PORT ) || defined( ZPORT ) || defined( NV_RESTORE )
// 286 // If no support for Z-Tool serial I/O,
// 287 // Write temporary 64-bit address to NV
// 288 osal_nv_write( ZCD_NV_EXTADDR, 0, Z_EXTADDR_LEN, &aExtendedAddress );
// 289 #endif
// 290 }
??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
// 291
// 292 /*********************************************************************
// 293 * @fn zmain_dev_info
// 294 * @brief Gets or makes extended address.
// 295 * @return none
// 296 *********************************************************************/
// 297 static ZSEG void zmain_dev_info ( void )
// 298 {
// 299 #ifdef LCD_SUPPORTED
// 300 uint8 i;
// 301 uint8 ch;
// 302 uint8 *xad;
// 303 unsigned char lcd_buf[18];
// 304
// 305 // Display the extended address
// 306 xad = (uint8*)&aExtendedAddress + Z_EXTADDR_LEN - 1;
// 307 for ( i = 0; i < Z_EXTADDR_LEN*2; xad-- ) {
// 308 ch = (*xad >> 4) & 0x0F;
// 309 lcd_buf[i++] = ch + (( ch < 10 ) ? '0' : '7');
// 310 ch = *xad & 0x0F;
// 311 lcd_buf[i++] = ch + (( ch < 10 ) ? '0' : '7');
// 312 }
// 313 lcd_buf[Z_EXTADDR_LEN*2] = '\0';
// 314 HalLcdWriteString( "IEEE Address:", HAL_LCD_LINE_1 );
// 315 HalLcdWriteString( (char*)lcd_buf, HAL_LCD_LINE_2 );
// 316 #endif // LCD
// 317 }
// 318
// 319 /*********************************************************************
// 320 * @fn zmain_ram_init
// 321 * @brief Initialize ram for stack "high-water-mark" observations.
// 322 * @return none
// 323 *********************************************************************/
// 324 static ZSEG void zmain_ram_init( void )
// 325 {
// 326 uint8 *end;
// 327 uint8 *ptr;
// 328
// 329 // Initialize the call (parameter) stack
// 330 end = (uint8*)CSTK_BEG; // Lower end
// 331 ptr = (uint8*)(*( __idata uint16*)(CSTK_PTR)); // Upper end
// 332 while ( --ptr > end )
// 333 *ptr = STACK_INIT_VALUE;
// 334
// 335 // Initialize the return (address) stack
// 336 ptr = (uint8*)RSTK_END - 1; // Upper end
// 337 while ( --ptr > (uint8*)SP )
// 338 *(__idata uint8*)ptr = STACK_INIT_VALUE;
// 339 }
// 340
// 341 #ifdef LCD_SUPPORTED
// 342 /*********************************************************************
// 343 * @fn zmain_lcd_init
// 344 * @brief Initialize LCD at start up.
// 345 * @return none
// 346 *********************************************************************/
// 347 static ZSEG void zmain_lcd_init ( void )
// 348 {
// 349 #ifdef LCD_SD
// 350 // if ( LcdLine1 == NULL )
// 351 {
// 352 HalLcdWriteString( "Figure8 Wireless", HAL_LCD_LINE_1 );
// 353
// 354 #if defined( MT_MAC_FUNC )
// 355 #if defined( ZDO_COORDINATOR )
// 356 HalLcdWriteString( "MAC-MT Coord", HAL_LCD_LINE_2 );
// 357 #else
// 358 HalLcdWriteString( "MAC-MT Device", HAL_LCD_LINE_2 );
// 359 #endif // ZDO
// 360 #elif defined( MT_NWK_FUNC )
// 361 #if defined( ZDO_COORDINATOR )
// 362 HalLcdWriteString( "NWK Coordinator", HAL_LCD_LINE_2 );
// 363 #else
// 364 HalLcdWriteString( "NWK Device", HAL_LCD_LINE_2 );
// 365 #endif // ZDO
// 366 #endif // MT_FUNC
// 367 }
// 368 #endif // LCD_SD
// 369 }
// 370
// 371 #endif
// 372
// 373 /*TIMER3_INTERRUPT()
// 374 {
// 375 EA = 0;
// 376 P1_2 = 1; //2430狾
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?