📄 zmain.lst
字号:
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:
\ 000019 0E INC R6
202 MicroWait (10000); // Wait 10ms to try again
\ 00001A ; Setup parameters for call to function Onboard_wait
\ 00001A 7A10 MOV R2,#0x10
\ 00001C 7B27 MOV R3,#0x27
\ 00001E 90.... MOV DPTR,#(Onboard_wait & 0xffff)
\ 000021 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 000023 12.... 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)
\ 000026 EE MOV A,R6
\ 000027 6029 JZ ??zmain_vdd_check_3
\ 000029 C3 CLR C
\ 00002A 9403 SUBB A,#0x3
\ 00002C 5043 JNC ??zmain_vdd_check_4
\ ??zmain_vdd_check_1:
\ 00002E ; Setup parameters for call to function HalAdcCheckVdd
\ 00002E 7904 MOV R1,#0x4
\ 000030 90.... MOV DPTR,#(HalAdcCheckVdd & 0xffff)
\ 000033 74.. MOV A,#((HalAdcCheckVdd >> 16) & 0xff)
\ 000035 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000038 E9 MOV A,R1
\ 000039 70DE JNZ ??zmain_vdd_check_2
\ 00003B 7E00 MOV R6,#0x0
\ 00003D ; Setup parameters for call to function Onboard_wait
\ 00003D 7A50 MOV R2,#0x50
\ 00003F 7BC3 MOV R3,#-0x3d
\ 000041 90.... MOV DPTR,#(Onboard_wait & 0xffff)
\ 000044 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 000046 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000049 ; Setup parameters for call to function Onboard_wait
\ 000049 7A50 MOV R2,#0x50
\ 00004B 7BC3 MOV R3,#-0x3d
\ 00004D 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 00004F 12.... LCALL ?BCALL ; Banked call to: DPTR()
213 {
214 if ((toggle = !(toggle)))
\ ??zmain_vdd_check_3:
\ 000052 EF MOV A,R7
\ 000053 700A JNZ ??zmain_vdd_check_5
\ 000055 7F01 MOV R7,#0x1
215 HAL_TOGGLE_LED1();
\ 000057 A290 MOV C,0x90.0
\ 000059 400E JC ??zmain_vdd_check_6
\ 00005B D290 SETB 0x90.0
\ 00005D 80CF SJMP ??zmain_vdd_check_1
\ ??zmain_vdd_check_5:
\ 00005F 7F00 MOV R7,#0x0
216 else
217 HAL_TOGGLE_LED2();
\ 000061 A291 MOV C,0x90.1
\ 000063 4008 JC ??zmain_vdd_check_7
\ 000065 D291 SETB 0x90.1
\ 000067 80C5 SJMP ??zmain_vdd_check_1
\ ??zmain_vdd_check_6:
\ 000069 C290 CLR 0x90.0
\ 00006B 80C1 SJMP ??zmain_vdd_check_1
\ ??zmain_vdd_check_7:
\ 00006D C291 CLR 0x90.1
\ 00006F 80BD SJMP ??zmain_vdd_check_1
218 }
219 }
220
221 /* turn off LED1 */
222 HAL_TURN_OFF_LED1();
\ ??zmain_vdd_check_4:
\ 000071 D290 SETB 0x90.0
223 HAL_TURN_OFF_LED2();
\ 000073 D291 SETB 0x90.1
224 }
\ 000075 7F01 MOV R7,#0x1
\ 000077 02.... LJMP ?FUNC_LEAVE_XDATA
225
226 /*********************************************************************
227 * @fn zmain_ext_addr
228 * @brief Makes extended address if none exists.
229 * @return none
230 *********************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
231 static ZSEG void zmain_ext_addr( void )
\ ??zmain_ext_addr:
232 {
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; 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 );
\ 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
241 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
242
243 // Check for uninitialized value (erased EEPROM = 0xFF)
244 xad = (uint8*)&aExtendedAddress;
\ 000050 78.. MOV R0,#(aExtendedAddress & 0xff)
\ 000052 79.. MOV R1,#((aExtendedAddress >> 8) & 0xff)
245 for ( i = 0; i < Z_EXTADDR_LEN; i++ )
\ 000054 7C00 MOV R4,#0x0
246 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 6003 JZ $+5
\ 00006C 02.... LJMP ??zmain_ext_addr_2
\ 00006F 0C INC R4
\ 000070 EC MOV A,R4
\ 000071 C3 CLR C
\ 000072 9408 SUBB A,#0x8
\ 000074 40E0 JC ??zmain_ext_addr_1
247
248 #ifdef ZDO_COORDINATOR
249 tmp = 0x10;
\ 000076 7B10 MOV R3,#0x10
250 #else
251 tmp = 0x20;
252 #endif
253 // Initialize with a simple pattern
254 xad = (uint8*)&aExtendedAddress;
\ 000078 78.. MOV R0,#(aExtendedAddress & 0xff)
\ 00007A 79.. MOV R1,#((aExtendedAddress >> 8) & 0xff)
255 for ( i = 0; i < Z_EXTADDR_LEN; i++ )
\ 00007C 7A08 MOV R2,#0x8
256 *xad++ = tmp++;
\ ??zmain_ext_addr_3:
\ 00007E EB MOV A,R3
\ 00007F 8882 MOV DPL,R0
\ 000081 8983 MOV DPH,R1
\ 000083 F0 MOVX @DPTR,A
\ 000084 0B INC R3
\ 000085 A3 INC DPTR
\ 000086 A882 MOV R0,DPL
\ 000088 A983 MOV R1,DPH
\ 00008A 1A DEC R2
\ 00008B EA MOV A,R2
\ 00008C 70F0 JNZ ??zmain_ext_addr_3
257
258 // Flash LED1 until user hits SW5
259 led = HAL_LED_MODE_OFF;
\ 00008E 75..00 MOV ?V0 + 0,#0x0
\ 000091 8027 SJMP ??zmain_ext_addr_4
260 while ( HAL_KEY_SW_5 != HalKeyRead() )
261 {
262 MicroWait( 62500 );
\ ??zmain_ext_addr_5:
\ 000093 ; Setup parameters for call to function Onboard_wait
\ 000093 7A24 MOV R2,#0x24
\ 000095 7BF4 MOV R3,#-0xc
\ 000097 90.... MOV DPTR,#(Onboard_wait & 0xffff)
\ 00009A 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 00009C 12.... LCALL ?BCALL ; Banked call to: DPTR()
263 HalLedSet( HAL_LED_1, led^=HAL_LED_MODE_ON ); // Toggle the LED
\ 00009F 63..01 XRL ?V0 + 0,#0x1
\ 0000A2 ; Setup parameters for call to function HalLedSet
\ 0000A2 AA.. MOV R2,?V0 + 0
\ 0000A4 7901 MOV R1,#0x1
\ 0000A6 90.... MOV DPTR,#(HalLedSet & 0xffff)
\ 0000A9 74.. MOV A,#((HalLedSet >> 16) & 0xff)
\ 0000AB 12.... LCALL ?BCALL ; Banked call to: DPTR()
264 MicroWait( 62500 );
\ 0000AE ; Setup parameters for call to function Onboard_wait
\ 0000AE 7A24 MOV R2,#0x24
\ 0000B0 7BF4 MOV R3,#-0xc
\ 0000B2 90.... MOV DPTR,#(Onboard_wait & 0xffff)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -