📄 zmain.lst
字号:
132 * @brief First function called after startup.
133 * @return don't care
134 *********************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
135 ZSEG int main( void )
\ main:
136 {
\ 000000 ; Auto size: 0
137 // Turn off interrupts
138 osal_int_disable( INTS_ALL );
\ 000000 ; Setup parameters for call to function osal_int_disable
\ 000000 79FF MOV R1,#-0x1
\ 000002 90.... MOV DPTR,#(osal_int_disable & 0xffff)
\ 000005 74.. MOV A,#((osal_int_disable >> 16) & 0xff)
\ 000007 12.... LCALL ?BCALL ; Banked call to: DPTR()
139
140 // Make sure supply voltage is high enough to run
141 zmain_vdd_check();
\ 00000A ; Setup parameters for call to function zmain_vdd_check
\ 00000A 12.... LCALL ??zmain_vdd_check
142
143 // Initialize stack memory
144 zmain_ram_init();
\ 00000D 78.. MOV R0,#(SFB(XSP) & 0xff)
\ 00000F 8682 MOV DPL,@R0
\ 000011 08 INC R0
\ 000012 8683 MOV DPH,@R0
\ 000014 8003 SJMP ??main_0
\ ??main_1:
\ 000016 74A5 MOV A,#-0x5b
\ 000018 F0 MOVX @DPTR,A
\ ??main_0:
\ 000019 12.... LCALL ?Subroutine0
\ ??CrossCallReturnLabel_0:
\ 00001C C3 CLR C
\ 00001D 74.. MOV A,#(SFB(XSTACK) & 0xff)
\ 00001F 9582 SUBB A,DPL
\ 000021 74.. MOV A,#((SFB(XSTACK) >> 8) & 0xff)
\ 000023 9583 SUBB A,DPH
\ 000025 40EF JC ??main_1
\ 000027 7582.. MOV DPL,#((SFE(ISTACK) + 255) & 0xff)
\ 00002A 7583.. MOV DPH,#(((SFE(ISTACK) - 1) >> 8) & 0xff)
\ 00002D 8004 SJMP ??main_2
\ ??main_3:
\ 00002F A882 MOV R0,DPL
\ 000031 76A5 MOV @R0,#-0x5b
\ ??main_2:
\ 000033 E581 MOV A,0x81
\ 000035 F5.. MOV ?V0 + 0,A
\ 000037 12.... LCALL ?Subroutine0
\ ??CrossCallReturnLabel_1:
\ 00003A 75..00 MOV ?V0 + 1,#0x0
\ 00003D C3 CLR C
\ 00003E E5.. MOV A,?V0 + 0
\ 000040 9582 SUBB A,DPL
\ 000042 E4 CLR A
\ 000043 9583 SUBB A,DPH
\ 000045 40E8 JC ??main_3
145
146 // Initialize board I/O
147 InitBoard( OB_COLD );
\ 000047 ; Setup parameters for call to function InitBoard
\ 000047 7900 MOV R1,#0x0
\ 000049 90.... MOV DPTR,#(InitBoard & 0xffff)
\ 00004C 74.. MOV A,#((InitBoard >> 16) & 0xff)
\ 00004E 12.... LCALL ?BCALL ; Banked call to: DPTR()
148
149 // Initialze HAL drivers
150 HalDriverInit();
\ 000051 ; Setup parameters for call to function HalDriverInit
\ 000051 90.... MOV DPTR,#(HalDriverInit & 0xffff)
\ 000054 74.. MOV A,#((HalDriverInit >> 16) & 0xff)
\ 000056 12.... LCALL ?BCALL ; Banked call to: DPTR()
151
152 // Initialize NV System
153 osal_nv_init( NULL );
\ 000059 ; Setup parameters for call to function osal_nv_init
\ 000059 7A00 MOV R2,#0x0
\ 00005B 7B00 MOV R3,#0x0
\ 00005D 90.... MOV DPTR,#(osal_nv_init & 0xffff)
\ 000060 74.. MOV A,#((osal_nv_init >> 16) & 0xff)
\ 000062 12.... LCALL ?BCALL ; Banked call to: DPTR()
154
155 // Determine the extended address
156 zmain_ext_addr();
\ 000065 ; Setup parameters for call to function zmain_ext_addr
\ 000065 12.... LCALL ??zmain_ext_addr
157
158 // Initialize basic NV items
159 zgInit();
\ 000068 ; Setup parameters for call to function zgInit
\ 000068 90.... MOV DPTR,#(zgInit & 0xffff)
\ 00006B 74.. MOV A,#((zgInit >> 16) & 0xff)
\ 00006D 12.... LCALL ?BCALL ; Banked call to: DPTR()
160
161 // Initialize the MAC
162 ZMacInit();
\ 000070 ; Setup parameters for call to function ZMacInit
\ 000070 12.... LCALL ZMacInit
163
164 #ifndef NONWK
165 // Since the AF isn't a task, call it's initialization routine
166 afInit();
\ 000073 ; Setup parameters for call to function afInit
\ 000073 90.... MOV DPTR,#(afInit & 0xffff)
\ 000076 74.. MOV A,#((afInit >> 16) & 0xff)
\ 000078 12.... LCALL ?BCALL ; Banked call to: DPTR()
167 #endif
168
169 // Initialize the operating system
170 osal_init_system();
\ 00007B ; Setup parameters for call to function osal_init_system
\ 00007B 90.... MOV DPTR,#(osal_init_system & 0xffff)
\ 00007E 74.. MOV A,#((osal_init_system >> 16) & 0xff)
\ 000080 12.... LCALL ?BCALL ; Banked call to: DPTR()
171
172 // Allow interrupts
173 osal_int_enable( INTS_ALL );
\ 000083 ; Setup parameters for call to function osal_int_enable
\ 000083 79FF MOV R1,#-0x1
\ 000085 90.... MOV DPTR,#(osal_int_enable & 0xffff)
\ 000088 74.. MOV A,#((osal_int_enable >> 16) & 0xff)
\ 00008A 12.... LCALL ?BCALL ; Banked call to: DPTR()
174
175 // Final board initialization
176 InitBoard( OB_READY );
\ 00008D ; Setup parameters for call to function InitBoard
\ 00008D 7902 MOV R1,#0x2
\ 00008F 90.... MOV DPTR,#(InitBoard & 0xffff)
\ 000092 74.. MOV A,#((InitBoard >> 16) & 0xff)
\ 000094 12.... 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
\ 000097 ; Setup parameters for call to function osal_start_system
\ 000097 90.... MOV DPTR,#(osal_start_system & 0xffff)
\ 00009A 74.. MOV A,#((osal_start_system >> 16) & 0xff)
\ 00009C 12.... LCALL ?BCALL ; Banked call to: DPTR()
188 } // main()
\ 00009F 7A00 MOV R2,#0x0
\ 0000A1 7B00 MOV R3,#0x0
\ 0000A3 22 RET
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 *********************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
195 static ZSEG void zmain_vdd_check( void )
\ ??zmain_vdd_check:
196 {
\ 000000 74F8 MOV A,#-0x8
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 8
\ 000005 ; Auto size: 0
197 uint8 vdd_passed_count = 0;
\ 000005 7E00 MOV R6,#0x0
198 bool toggle = 0;
\ 000007 7F00 MOV R7,#0x0
199
200 // Initialization for board related stuff such as LEDs
201 HAL_BOARD_INIT();
\ 000009 43FE01 ORL 0xfe,#0x1
\ 00000C 43FE08 ORL 0xfe,#0x8
\ 00000F 438F20 ORL 0x8f,#0x20
\ 000012 8027 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:
\ 000014 5004 JNC ??zmain_vdd_check_3
\ 000016 C290 CLR 0x90.0
\ 000018 8002 SJMP ??zmain_vdd_check_4
\ ??zmain_vdd_check_3:
\ 00001A D290 SETB 0x90.0
210 vdd_passed_count++; // Keep track # times Vdd passes in a row
\ ??zmain_vdd_check_4:
\ 00001C 0E INC R6
211 MicroWait (10000); // Wait 10ms to try again
\ 00001D ; Setup parameters for call to function Onboard_wait
\ 00001D 7A10 MOV R2,#0x10
\ 00001F 7B27 MOV R3,#0x27
\ 000021 90.... MOV DPTR,#(Onboard_wait & 0xffff)
\ 000024 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 000026 12.... LCALL ?BCALL ; Banked call to: DPTR()
212 MicroWait (50000);
\ 000029 ; Setup parameters for call to function Onboard_wait
\ 000029 7A50 MOV R2,#0x50
\ 00002B 7BC3 MOV R3,#-0x3d
\ 00002D 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 00002F 12.... 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)
\ 000032 EE MOV A,R6
\ 000033 6034 JZ ??zmain_vdd_check_5
\ ??zmain_vdd_check_6:
\ 000035 EE MOV A,R6
\ 000036 C3 CLR C
\ 000037 9403 SUBB A,#0x3
\ 000039 5043 JNC ??zmain_vdd_check_7
\ ??zmain_vdd_check_1:
\ 00003B ; Setup parameters for call to function HalAdcCheckVdd
\ 00003B 7904 MOV R1,#0x4
\ 00003D 90.... MOV DPTR,#(HalAdcCheckVdd & 0xffff)
\ 000040 74.. MOV A,#((HalAdcCheckVdd >> 16) & 0xff)
\ 000042 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000045 E9 MOV A,R1
\ 000046 A290 MOV C,0x90.0
\ 000048 70CA JNZ ??zmain_vdd_check_2
\ 00004A 5004 JNC ??zmain_vdd_check_8
\ 00004C C290 CLR 0x90.0
\ 00004E 8002 SJMP ??zmain_vdd_check_9
\ ??zmain_vdd_check_8:
\ 000050 D290 SETB 0x90.0
\ ??zmain_vdd_check_9:
\ 000052 7E00 MOV R6,#0x0
\ 000054 ; Setup parameters for call to function Onboard_wait
\ 000054 7A50 MOV R2,#0x50
\ 000056 7BC3 MOV R3,#-0x3d
\ 000058 90.... MOV DPTR,#(Onboard_wait & 0xffff)
\ 00005B 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 00005D 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000060 ; Setup parameters for call to function Onboard_wait
\ 000060 7A50 MOV R2,#0x50
\ 000062 7BC3 MOV R3,#-0x3d
\ 000064 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 000066 12.... LCALL ?BCALL ; Banked call to: DPTR()
224 {
225 if ((toggle = !(toggle)))
\ ??zmain_vdd_check_5:
\ 000069 EF MOV A,R7
\ 00006A 700A JNZ ??zmain_vdd_check_10
\ 00006C 7F01 MOV R7,#0x1
226 HAL_TOGGLE_LED1();
\ 00006E A290 MOV C,0x90.0
\ 000070 4008 JC ??zmain_vdd_check_11
\ 000072 D290 SETB 0x90.0
\ 000074 80C5 SJMP ??zmain_vdd_check_1
\ ??zmain_vdd_check_10:
\ 000076 7F00 MOV R7,#0x0
\ 000078 80BB SJMP ??zmain_vdd_check_6
\ ??zmain_vdd_check_11:
\ 00007A C290 CLR 0x90.0
\ 00007C 80BD SJMP ??zmain_vdd_check_1
227 else;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -