📄 zmain.lst
字号:
228 //HAL_TOGGLE_LED2();
229 }
230 }
231
232 /* turn off LED1 */
233 HAL_TURN_OFF_LED1();
\ ??zmain_vdd_check_7:
\ 00007E D290 SETB 0x90.0
234 HAL_TURN_OFF_LED2();
\ 000080 D293 SETB 0x90.3
235 }
\ 000082 7F01 MOV R7,#0x1
\ 000084 02.... LJMP ?FUNC_LEAVE_XDATA
236
237 /*********************************************************************
238 * @fn zmain_ext_addr
239 * @brief Makes extended address if none exists.
240 * @return none
241 *********************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
242 static ZSEG void zmain_ext_addr( void )
\ ??zmain_ext_addr:
243 {
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; 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 );
\ 000005 ; Setup parameters for call to function osal_nv_item_init
\ 000005 75..00 MOV ?V0 + 0,#0x0
\ 000008 75..00 MOV ?V0 + 1,#0x0
\ 00000B 78.. MOV R0,#?V0 + 0
\ 00000D 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000010 7C08 MOV R4,#0x8
\ 000012 7D00 MOV R5,#0x0
\ 000014 7A01 MOV R2,#0x1
\ 000016 7B00 MOV R3,#0x0
\ 000018 90.... MOV DPTR,#(osal_nv_item_init & 0xffff)
\ 00001B 74.. MOV A,#((osal_nv_item_init >> 16) & 0xff)
\ 00001D 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000020 7402 MOV A,#0x2
\ 000022 12.... LCALL ?DEALLOC_XSTACK8
252 osal_nv_read( ZCD_NV_EXTADDR, 0, Z_EXTADDR_LEN, &aExtendedAddress );
\ 000025 ; Setup parameters for call to function osal_nv_read
\ 000025 75.... MOV ?V0 + 0,#(aExtendedAddress & 0xff)
\ 000028 75.... MOV ?V0 + 1,#((aExtendedAddress >> 8) & 0xff)
\ 00002B 78.. MOV R0,#?V0 + 0
\ 00002D 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000030 75..08 MOV ?V0 + 0,#0x8
\ 000033 75..00 MOV ?V0 + 1,#0x0
\ 000036 78.. MOV R0,#?V0 + 0
\ 000038 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 00003B 7C00 MOV R4,#0x0
\ 00003D 7D00 MOV R5,#0x0
\ 00003F 7A01 MOV R2,#0x1
\ 000041 7B00 MOV R3,#0x0
\ 000043 90.... MOV DPTR,#(osal_nv_read & 0xffff)
\ 000046 74.. MOV A,#((osal_nv_read >> 16) & 0xff)
\ 000048 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00004B 7404 MOV A,#0x4
\ 00004D 12.... LCALL ?DEALLOC_XSTACK8
253
254 // Check for uninitialized value (erased EEPROM = 0xFF)
255 xad = (uint8*)&aExtendedAddress;
\ 000050 78.. MOV R0,#(aExtendedAddress & 0xff)
\ 000052 79.. MOV R1,#((aExtendedAddress >> 8) & 0xff)
256 for ( i = 0; i < Z_EXTADDR_LEN; i++ )
\ 000054 7C00 MOV R4,#0x0
257 if ( *xad++ != 0xFF ) return;
\ ??zmain_ext_addr_1:
\ 000056 E8 MOV A,R0
\ 000057 FA MOV R2,A
\ 000058 E9 MOV A,R1
\ 000059 FB MOV R3,A
\ 00005A 8A82 MOV DPL,R2
\ 00005C 8B83 MOV DPH,R3
\ 00005E A3 INC DPTR
\ 00005F A882 MOV R0,DPL
\ 000061 A983 MOV R1,DPH
\ 000063 8A82 MOV DPL,R2
\ 000065 8B83 MOV DPH,R3
\ 000067 E0 MOVX A,@DPTR
\ 000068 64FF XRL A,#0xff
\ 00006A 7041 JNZ ??zmain_ext_addr_2
\ 00006C 0C INC R4
\ 00006D EC MOV A,R4
\ 00006E C3 CLR C
\ 00006F 9408 SUBB A,#0x8
\ 000071 40E3 JC ??zmain_ext_addr_1
258
259 #ifdef ZDO_COORDINATOR
260 tmp = 0x10;
261 #else
262 tmp = 0x20;
\ 000073 7B20 MOV R3,#0x20
263 #endif
264 // Initialize with a simple pattern
265 xad = (uint8*)&aExtendedAddress;
\ 000075 78.. MOV R0,#(aExtendedAddress & 0xff)
\ 000077 79.. MOV R1,#((aExtendedAddress >> 8) & 0xff)
266 for ( i = 0; i < Z_EXTADDR_LEN; i++ )
\ 000079 7A08 MOV R2,#0x8
267 *xad++ = tmp++;
\ ??zmain_ext_addr_3:
\ 00007B EB MOV A,R3
\ 00007C 8882 MOV DPL,R0
\ 00007E 8983 MOV DPH,R1
\ 000080 F0 MOVX @DPTR,A
\ 000081 0B INC R3
\ 000082 A3 INC DPTR
\ 000083 A882 MOV R0,DPL
\ 000085 A983 MOV R1,DPH
\ 000087 1A DEC R2
\ 000088 EA MOV A,R2
\ 000089 70F0 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 );
\ 00008B ; Setup parameters for call to function HalLedSet
\ 00008B 7A00 MOV R2,#0x0
\ 00008D 7901 MOV R1,#0x1
\ 00008F 90.... MOV DPTR,#(HalLedSet & 0xffff)
\ 000092 74.. MOV A,#((HalLedSet >> 16) & 0xff)
\ 000094 12.... 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);
\ 000097 ; Setup parameters for call to function HalAdcRead
\ 000097 7A02 MOV R2,#0x2
\ 000099 7907 MOV R1,#0x7
\ 00009B 90.... MOV DPTR,#(HalAdcRead & 0xffff)
\ 00009E 74.. MOV A,#((HalAdcRead >> 16) & 0xff)
\ 0000A0 12.... LCALL ?BCALL ; Banked call to: DPTR()
281 xad = (uint8*)&aExtendedAddress;
282 *xad++ = LO_UINT16( AtoD );
\ 0000A3 EA MOV A,R2
\ 0000A4 90.... MOV DPTR,#aExtendedAddress
\ 0000A7 F0 MOVX @DPTR,A
283 *xad = HI_UINT16( AtoD );
\ 0000A8 EB MOV A,R3
\ 0000A9 90.... MOV DPTR,#(aExtendedAddress + 1)
\ 0000AC F0 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:
\ 0000AD 7F02 MOV R7,#0x2
\ 0000AF 02.... LJMP ?FUNC_LEAVE_XDATA
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 E582 MOV A,DPL
\ 000002 24FF ADD A,#-0x1
\ 000004 F582 MOV DPL,A
\ 000006 E583 MOV A,DPH
\ 000008 34FF ADDC A,#-0x1
\ 00000A F583 MOV DPH,A
\ 00000C 22 RET
\ In segment XSP, align 1
\ In segment SFR_AN, at 0x90
\ union <unnamed> volatile __sfr _A_P1
\ _A_P1:
\ 000000 DS 1
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -