📄 debugtrace.lst
字号:
68 */
69
70 /*********************************************************************
71 * @fn debug_msg
72 *
73 * @brief
74 *
75 * This feature allows modules to display debug information as
76 * applications execute in real-time. This feature will work similar
77 * to "printf()" but will output to the serial port for display in
78 * the Z-Test tool.
79 *
80 * This feature will most likely be compiled out in the production code
81 * to save code space.
82 *
83 * @param byte compID - Component ID
84 * @param byte severity - CRITICAL(0x01), ERROR(0x02), INFORMATION(0x03)
85 * or TRACE(0x04)
86 * @param byte numParams - number of parameter fields (param1-3)
87 * @param UINT16 param1 - user defined data
88 * @param UINT16 param2 - user defined data
89 * @param UINT16 param3 - user defined data
90 *
91 * @return void
92 */
\ In segment BANKED_CODE, align 1, keep-with-next
93 void debug_msg( byte compID, byte severity, byte numParams, UINT16 param1,
\ debug_msg:
94 UINT16 param2, UINT16 param3 )
95 {
\ 000000 74F0 MOV A,#-0x10
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 16
\ 000005 ; Auto size: 2
\ 000005 74FE MOV A,#-0x2
\ 000007 12.... LCALL ?ALLOC_XSTACK8
\ 00000A 85..82 MOV DPL,?XSP + 0
\ 00000D 85..83 MOV DPH,?XSP + 1
\ 000010 EC MOV A,R4
\ 000011 F0 MOVX @DPTR,A
\ 000012 A3 INC DPTR
\ 000013 ED MOV A,R5
\ 000014 F0 MOVX @DPTR,A
\ 000015 89.. MOV ?V0 + 2,R1
\ 000017 8A.. MOV ?V0 + 3,R2
\ 000019 8B.. MOV ?V0 + 4,R3
\ 00001B 7412 MOV A,#0x12
\ 00001D 12.... LCALL ?XSTACK_DISP0_8
\ 000020 E0 MOVX A,@DPTR
\ 000021 F5.. MOV ?V0 + 6,A
\ 000023 A3 INC DPTR
\ 000024 E0 MOVX A,@DPTR
\ 000025 F5.. MOV ?V0 + 7,A
\ 000027 7414 MOV A,#0x14
\ 000029 12.... LCALL ?XSTACK_DISP0_8
\ 00002C E0 MOVX A,@DPTR
\ 00002D FE MOV R6,A
\ 00002E A3 INC DPTR
\ 00002F E0 MOVX A,@DPTR
\ 000030 FF MOV R7,A
96
97 mtDebugMsg_t *mtDebugMsg;
98 UINT16 timestamp;
99
100 #if defined ( APP_DEBUG ) && !defined (ZDO_COORDINATOR)
101 DebugApp_BuildMsg( compID, severity, numParams, param1, param2, param3 );
102 return;
103 #endif
104
105 if ( debugThreshold == 0 || debugCompId != compID )
\ 000031 90.... MOV DPTR,#debugThreshold
\ 000034 E0 MOVX A,@DPTR
\ 000035 6077 JZ ??debug_msg_0
\ 000037 90.... MOV DPTR,#debugCompId
\ 00003A E0 MOVX A,@DPTR
\ 00003B 65.. XRL A,?V0 + 2
\ 00003D 706F JNZ ??debug_msg_0
106 return;
107
108 // Fill in the timestamp
109 timestamp = 0;
110
111 // Get a message buffer to build the debug message
112 mtDebugMsg = (mtDebugMsg_t *)osal_msg_allocate( sizeof( mtDebugMsg_t ) );
\ 00003F ; Setup parameters for call to function osal_msg_allocate
\ 00003F 7A0D MOV R2,#0xd
\ 000041 7B00 MOV R3,#0x0
\ 000043 90.... MOV DPTR,#(osal_msg_allocate & 0xffff)
\ 000046 74.. MOV A,#((osal_msg_allocate >> 16) & 0xff)
\ 000048 12.... LCALL ?BCALL ; Banked call to: DPTR()
113 if ( mtDebugMsg )
\ 00004B EA MOV A,R2
\ 00004C 7001 JNZ ??debug_msg_1
\ 00004E EB MOV A,R3
\ ??debug_msg_1:
\ 00004F 605D JZ ??debug_msg_0
114 {
115 mtDebugMsg->hdr.event = CMD_DEBUG_MSG;
\ 000051 7402 MOV A,#0x2
\ 000053 8A82 MOV DPL,R2
\ 000055 8B83 MOV DPH,R3
\ 000057 F0 MOVX @DPTR,A
116 mtDebugMsg->compID = compID;
\ 000058 A3 INC DPTR
\ 000059 A3 INC DPTR
\ 00005A E5.. MOV A,?V0 + 2
\ 00005C 12.... LCALL ?Subroutine1 & 0xFFFF
117 mtDebugMsg->severity = severity;
\ ??CrossCallReturnLabel_2:
\ 00005F E5.. MOV A,?V0 + 3
\ 000061 12.... LCALL ?Subroutine1 & 0xFFFF
118 mtDebugMsg->numParams = numParams;
\ ??CrossCallReturnLabel_3:
\ 000064 A3 INC DPTR
\ 000065 E5.. MOV A,?V0 + 4
\ 000067 F0 MOVX @DPTR,A
119
120 mtDebugMsg->param1 = param1;
\ 000068 85..82 MOV DPL,?XSP + 0
\ 00006B 85..83 MOV DPH,?XSP + 1
\ 00006E E0 MOVX A,@DPTR
\ 00006F F8 MOV R0,A
\ 000070 A3 INC DPTR
\ 000071 E0 MOVX A,@DPTR
\ 000072 F9 MOV R1,A
\ 000073 8A82 MOV DPL,R2
\ 000075 8B83 MOV DPH,R3
\ 000077 A3 INC DPTR
\ 000078 A3 INC DPTR
\ 000079 A3 INC DPTR
\ 00007A A3 INC DPTR
\ 00007B A3 INC DPTR
\ 00007C E8 MOV A,R0
\ 00007D F0 MOVX @DPTR,A
\ 00007E A3 INC DPTR
\ 00007F E9 MOV A,R1
\ 000080 12.... LCALL ?Subroutine0 & 0xFFFF
121 mtDebugMsg->param2 = param2;
\ ??CrossCallReturnLabel_0:
\ 000083 E5.. MOV A,?V0 + 6
\ 000085 F0 MOVX @DPTR,A
\ 000086 A3 INC DPTR
\ 000087 E5.. MOV A,?V0 + 7
\ 000089 12.... LCALL ?Subroutine0 & 0xFFFF
122 mtDebugMsg->param3 = param3;
\ ??CrossCallReturnLabel_1:
\ 00008C A3 INC DPTR
\ 00008D A3 INC DPTR
\ 00008E EE MOV A,R6
\ 00008F F0 MOVX @DPTR,A
\ 000090 A3 INC DPTR
\ 000091 EF MOV A,R7
\ 000092 F0 MOVX @DPTR,A
123 mtDebugMsg->timestamp = timestamp;
\ 000093 EA MOV A,R2
\ 000094 240B ADD A,#0xb
\ 000096 F582 MOV DPL,A
\ 000098 EB MOV A,R3
\ 000099 3400 ADDC A,#0x0
\ 00009B F583 MOV DPH,A
\ 00009D E4 CLR A
\ 00009E F0 MOVX @DPTR,A
\ 00009F A3 INC DPTR
\ 0000A0 F0 MOVX @DPTR,A
124
125 osal_msg_send( MT_TaskID, (uint8 *)mtDebugMsg );
\ 0000A1 ; Setup parameters for call to function osal_msg_send
\ 0000A1 90.... MOV DPTR,#MT_TaskID
\ 0000A4 E0 MOVX A,@DPTR
\ 0000A5 F9 MOV R1,A
\ 0000A6 90.... MOV DPTR,#(osal_msg_send & 0xffff)
\ 0000A9 74.. MOV A,#((osal_msg_send >> 16) & 0xff)
\ 0000AB 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ ??debug_msg_0:
\ 0000AE 7402 MOV A,#0x2
\ 0000B0 12.... LCALL ?DEALLOC_XSTACK8
\ 0000B3 7F08 MOV R7,#0x8
\ 0000B5 02.... LJMP ?BANKED_LEAVE_XDATA
126 }
127
128 } /* debug_msg() */
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine1:
\ 000000 12.... LCALL ?Subroutine2 & 0xFFFF
\ ??CrossCallReturnLabel_4:
\ 000003 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine2:
\ 000000 F0 MOVX @DPTR,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -