📄 onboard.lst
字号:
192 if ( registeredKeysTaskID == NO_TASK_ID )
\ 000004 90.... MOV DPTR,#??registeredKeysTaskID
\ 000007 E0 MOVX A,@DPTR
\ 000008 64FF XRL A,#0xff
\ 00000A 7006 JNZ ??RegisterForKeys_0
193 {
194 registeredKeysTaskID = task_id;
\ 00000C E9 MOV A,R1
\ 00000D F0 MOVX @DPTR,A
195 return ( true );
\ 00000E 7901 MOV R1,#0x1
\ 000010 8002 SJMP ??RegisterForKeys_1
196 }
197 else
198 return ( false );
\ ??RegisterForKeys_0:
\ 000012 7900 MOV R1,#0x0
\ ??RegisterForKeys_1:
\ 000014 02.... LJMP ?Subroutine0 & 0xFFFF
199 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 D083 POP DPH
\ 000002 D082 POP DPL
\ 000004 02.... LJMP ?BRET
200
201 /*********************************************************************
202 * @fn OnBoard_SendKeys
203 *
204 * @brief Send "Key Pressed" message to application.
205 *
206 * @param keys - keys that were pressed
207 * state - shifted
208 *
209 * @return status
210 *********************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
211 byte OnBoard_SendKeys( byte keys, byte state )
\ OnBoard_SendKeys:
212 {
\ 000000 74F6 MOV A,#-0xa
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 10
\ 000005 ; Auto size: 0
\ 000005 E9 MOV A,R1
\ 000006 FE MOV R6,A
\ 000007 EA MOV A,R2
\ 000008 FF MOV R7,A
213 keyChange_t *msgPtr;
214
215 if ( registeredKeysTaskID != NO_TASK_ID )
\ 000009 90.... MOV DPTR,#??registeredKeysTaskID
\ 00000C E0 MOVX A,@DPTR
\ 00000D 64FF XRL A,#0xff
\ 00000F 6037 JZ ??OnBoard_SendKeys_0
216 {
217 // Send the address to the task
218 msgPtr = (keyChange_t *)osal_msg_allocate( sizeof(keyChange_t) );
\ 000011 ; Setup parameters for call to function osal_msg_allocate
\ 000011 7A04 MOV R2,#0x4
\ 000013 7B00 MOV R3,#0x0
\ 000015 90.... MOV DPTR,#(osal_msg_allocate & 0xffff)
\ 000018 74.. MOV A,#((osal_msg_allocate >> 16) & 0xff)
\ 00001A 12.... LCALL ?BCALL ; Banked call to: DPTR()
219 if ( msgPtr )
\ 00001D EA MOV A,R2
\ 00001E 7001 JNZ ??OnBoard_SendKeys_1
\ 000020 EB MOV A,R3
\ ??OnBoard_SendKeys_1:
\ 000021 6021 JZ ??OnBoard_SendKeys_2
220 {
221 msgPtr->hdr.event = KEY_CHANGE;
\ 000023 74C0 MOV A,#-0x40
\ 000025 8A82 MOV DPL,R2
\ 000027 8B83 MOV DPH,R3
\ 000029 F0 MOVX @DPTR,A
222 msgPtr->state = state;
\ 00002A EF MOV A,R7
\ 00002B A3 INC DPTR
\ 00002C A3 INC DPTR
\ 00002D F0 MOVX @DPTR,A
223 msgPtr->keys = keys;
\ 00002E EE MOV A,R6
\ 00002F 8A82 MOV DPL,R2
\ 000031 8B83 MOV DPH,R3
\ 000033 A3 INC DPTR
\ 000034 A3 INC DPTR
\ 000035 A3 INC DPTR
\ 000036 F0 MOVX @DPTR,A
224
225 osal_msg_send( registeredKeysTaskID, (uint8 *)msgPtr );
\ 000037 ; Setup parameters for call to function osal_msg_send
\ 000037 90.... MOV DPTR,#??registeredKeysTaskID
\ 00003A E0 MOVX A,@DPTR
\ 00003B F9 MOV R1,A
\ 00003C 90.... MOV DPTR,#(osal_msg_send & 0xffff)
\ 00003F 74.. MOV A,#((osal_msg_send >> 16) & 0xff)
\ 000041 12.... LCALL ?BCALL ; Banked call to: DPTR()
226 }
227 return ( ZSuccess );
\ ??OnBoard_SendKeys_2:
\ 000044 7900 MOV R1,#0x0
\ 000046 8002 SJMP ??OnBoard_SendKeys_3
228 }
229 else
230 return ( ZFailure );
\ ??OnBoard_SendKeys_0:
\ 000048 7901 MOV R1,#0x1
\ ??OnBoard_SendKeys_3:
\ 00004A 7F02 MOV R7,#0x2
\ 00004C 02.... LJMP ?BANKED_LEAVE_XDATA
231 }
232
233 /*********************************************************************
234 * @fn OnBoard_KeyCallback
235 *
236 * @brief Callback service for keys
237 *
238 * @param keys - keys that were pressed
239 * state - shifted
240 *
241 * @return void
242 *********************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
243 void OnBoard_KeyCallback ( uint8 keys, uint8 state )
\ OnBoard_KeyCallback:
244 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
245 uint8 shift;
246
247 // shift key (S1) is used to generate key interrupt
248 // applications should not use S1 when key interrupt is enabled
249 shift = (OnboardKeyIntEnable == HAL_KEY_INTERRUPT_ENABLE) ? false : ((keys & HAL_KEY_SW_6) ? true : false);
\ 000004 90.... MOV DPTR,#OnboardKeyIntEnable
\ 000007 E0 MOVX A,@DPTR
\ 000008 6401 XRL A,#0x1
\ 00000A 7004 JNZ ??OnBoard_KeyCallback_0
\ 00000C 7A00 MOV R2,#0x0
\ 00000E 8011 SJMP ??OnBoard_KeyCallback_1
\ ??OnBoard_KeyCallback_0:
\ 000010 E9 MOV A,R1
\ 000011 A2E5 MOV C,0xE0 /* A */.5
\ 000013 5004 JNC ??OnBoard_KeyCallback_2
\ 000015 D2F0 SETB B.0
\ 000017 8002 SJMP ??OnBoard_KeyCallback_3
\ ??OnBoard_KeyCallback_2:
\ 000019 C2F0 CLR B.0
\ ??OnBoard_KeyCallback_3:
\ 00001B A2F0 MOV C,B.0
\ 00001D E4 CLR A
\ 00001E 92E0 MOV 0xE0 /* A */.0,C
\ 000020 FA MOV R2,A
250
251 if ( OnBoard_SendKeys( keys, shift ) != ZSuccess )
\ ??OnBoard_KeyCallback_1:
\ 000021 ; Setup parameters for call to function OnBoard_SendKeys
\ 000021 90.... MOV DPTR,#(OnBoard_SendKeys & 0xffff)
\ 000024 74.. MOV A,#((OnBoard_SendKeys >> 16) & 0xff)
\ 000026 12.... LCALL ?BCALL ; Banked call to: DPTR()
252 {
253 // Process SW1 here
254 if ( keys & HAL_KEY_SW_1 ) // Switch 1
255 {
256 }
257 // Process SW2 here
258 if ( keys & HAL_KEY_SW_2 ) // Switch 2
259 {
260 }
261 // Process SW3 here
262 if ( keys & HAL_KEY_SW_3 ) // Switch 3
263 {
264 }
265 // Process SW4 here
266 if ( keys & HAL_KEY_SW_4 ) // Switch 4
267 {
268 }
269 // Process SW5 here
270 if ( keys & HAL_KEY_SW_5 ) // Switch 5
271 {
272 }
273 // Process SW6 here
274 if ( keys & HAL_KEY_SW_6 ) // Switch 6
275 {
276 }
277 }
278 }
\ 000029 80.. SJMP ?Subroutine0
279
280 /*********************************************************************
281 * SLEEP MANAGEMENT FUNCTIONS
282 *
283 * These functions support processing of MAC and ZStack power mode
284 * transitions, used when the system goes into or awakes from sleep.
285 */
286
287 /*********************************************************************
288 * @fn OnBoard_stack_used()
289 *
290 * @brief
291 *
292 * Runs through the stack looking for touched memory.
293 *
294 * @param none
295 *
296 * @return number of bytes used by the stack
297 *********************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
298 uint16 OnBoard_stack_used( void )
\ OnBoard_stack_used:
299 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
300 byte *pStack = (byte*)MCU_RAM_END;
\ 000004 78FF MOV R0,#-0x1
\ 000006 79FF MOV R1,#-0x1
301 byte *pHold;
302 byte found = false;
303 byte x;
304
305 // Look from the end of RAM for MIN_RAM_INIT number of "pattern" bytes
306 // This should be the high water stack mark.
307 while ( !found && pStack )
308 {
309 // Found an init value?
310 if ( *pStack == STACK_INIT_VALUE )
\ ??OnBoard_stack_used_0:
\ 000008 8882 MOV DPL,R0
\ 00000A 8983 MOV DPH,R1
\ 00000C E0 MOVX A,@DPTR
\ 00000D 64A5 XRL A,#0xa5
\ 00000F 701C JNZ ??OnBoard_stack_used_1
311 {
312 // Look for a bunch in a row
313 pHold = pStack;
314 for ( x = 0; x < MIN_RAM_INIT; x++ )
\ 000011 7A00 MOV R2,#0x0
\ 000013 8013 SJMP ??OnBoard_stack_used_2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -