📄 mtel.s51
字号:
// 142 extern void MACSIM_TranslateMsg( byte *buf, byte bLen );
// 143 #endif
// 144
// 145 /*********************************************************************
// 146 * LOCAL VARIABLES
// 147 */
// 148
// 149 /*********************************************************************
// 150 * LOCAL FUNCTIONS
// 151 */
// 152 void MT_MsgQueueInit( void );
// 153 void MT_ProcessCommand( mtOSALSerialData_t *msg );
// 154 void MT_ProcessSerialCommand( byte *msg );
// 155 byte MT_RAMRead( UINT16 addr, byte *pData );
// 156 byte MT_RAMWrite( UINT16 addr , byte val );
// 157 void MT_ProcessDebugMsg( mtDebugMsg_t *pData );
// 158 void MT_ProcessDebugStr( mtDebugStr_t *pData );
// 159 byte MT_SetDebugThreshold( byte comp_id, byte threshold );
// 160 void MT_SendErrorNotification( byte err );
// 161 void MT_ResetMsgQueue( void );
// 162 byte MT_QueueMsg( byte *msg , byte len );
// 163 void MT_ProcessQueue( void );
// 164 void MT_SendSPIRespMsg( byte ret, uint16 cmd_id, byte msgLen, byte respLen);
// 165 void MT_Reset(byte typID);
// 166 byte MT_ProcessSetNV( byte *pData );
// 167 void MT_ProcessGetNV( byte *pData );
// 168 void MT_ProcessGetNvInfo( void );
// 169 void MT_ProcessGetDeviceInfo( void );
// 170 byte MTProcessAppMsg( byte *pData, byte len );
// 171 void MTProcessAppRspMsg( byte *pData, byte len );
// 172
// 173 #if (defined HAL_LED) && (HAL_LED == TRUE)
// 174 byte MTProcessLedControl( byte *pData );
// 175 #endif
// 176
// 177 #if defined ( MT_USER_TEST_FUNC )
// 178 void MT_ProcessAppUserCmd( byte *pData );
// 179 #endif
// 180
// 181 /*********************************************************************
// 182 * @fn MT_TaskInit
// 183 *
// 184 * @brief
// 185 *
// 186 * MonitorTest Task Initialization. This function is put into the
// 187 * task table.
// 188 *
// 189 * @param byte task_id - task ID of the MT Task
// 190 *
// 191 * @return void
// 192 *
// 193 *********************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 194 void MT_TaskInit( byte task_id )
MT_TaskInit:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function MT_TaskInit
// 195 {
FUNCALL MT_TaskInit, SPIMgr_Init
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 196 MT_TaskID = task_id;
MOV A,R1
MOV DPTR,#MT_TaskID
MOVX @DPTR,A
// 197
// 198 debugThreshold = 0;
CLR A
MOV DPTR,#debugThreshold
MOVX @DPTR,A
// 199 debugCompId = 0;
MOV DPTR,#debugCompId
MOVX @DPTR,A
// 200
// 201 // Initialize the Serial port
// 202 SPIMgr_Init();
; Setup parameters for call to function SPIMgr_Init
MOV DPTR,#(SPIMgr_Init & 0xffff)
MOV A,#((SPIMgr_Init >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 203
// 204 } /* MT_TaskInit() */
LJMP ?Subroutine16 & 0xFFFF
CFI EndBlock cfiBlock0
// 205
// 206 #ifdef ZTOOL_PORT
// 207 /*********************************************************************
// 208 * @fn MT_IndReset()
// 209 *
// 210 * @brief Sends a ZTOOL "reset response" message.
// 211 *
// 212 * @param None
// 213 *
// 214 * @return None
// 215 *
// 216 *********************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 217 void MT_IndReset( void )
MT_IndReset:
CFI Block cfiBlock1 Using cfiCommon0
CFI Function MT_IndReset
// 218 {
FUNCALL MT_IndReset, MT_BuildAndSendZToolResponse
LOCFRAME XSTACK, 13, STACK
ARGFRAME XSTACK, 13, STACK
MOV A,#-0xa
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
; Saved register size: 10
; Auto size: 1
MOV A,#-0x1
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 11)
// 219
// 220 byte rsp = 0; // Reset type==0 indicates Z-Stack reset
CLR A
LCALL ?Subroutine2 & 0xFFFF
// 221
// 222 // Send out Reset Response message
// 223 MT_BuildAndSendZToolResponse( (SPI_0DATA_MSG_LEN + sizeof( rsp )),
// 224 (SPI_RESPONSE_BIT | SPI_CMD_SYS_RESET),
// 225 sizeof( rsp ), &rsp );
??CrossCallReturnLabel_8:
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 13)
MOV R4,#0x1
MOV R2,#0x5
LJMP ?Subroutine17 & 0xFFFF
CFI EndBlock cfiBlock1
// 226 }
// 227 #endif
// 228
// 229 /*********************************************************************
// 230 * @fn MT_ProcessEvent
// 231 *
// 232 * @brief
// 233 *
// 234 * MonitorTest Task Event Processor. This task is put into the
// 235 * task table.
// 236 *
// 237 * @param byte task_id - task ID of the MT Task
// 238 * @param UINT16 events - event(s) for the MT Task
// 239 *
// 240 * @return void
// 241 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 242 UINT16 MT_ProcessEvent( byte task_id, UINT16 events )
MT_ProcessEvent:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function MT_ProcessEvent
// 243 {
FUNCALL MT_ProcessEvent, MT_SendErrorNotification
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL MT_ProcessEvent, MT_ProcessCommand
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL MT_ProcessEvent, osal_msg_receive
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
MOV A,#-0xa
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
; Saved register size: 10
; Auto size: 0
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
// 244 uint8 *msg_ptr;
// 245
// 246 // Could be multiple events, so switch won't work
// 247
// 248 if ( events & SYS_EVENT_MSG )
MOV A,#-0x80
ANL A,R7
MOV R1,A
CLR A
JNZ ??MT_ProcessEvent_0
MOV A,R1
??MT_ProcessEvent_0:
JNZ ??MT_ProcessEvent_1
// 249 {
// 250 while ( (msg_ptr = osal_msg_receive( MT_TaskID )) )
// 251 {
// 252 MT_ProcessCommand( (mtOSALSerialData_t *)msg_ptr );
// 253 }
// 254
// 255 // Return unproccessed events
// 256 return (events ^ SYS_EVENT_MSG);
// 257 }
// 258
// 259 #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
// 260 if ( events & MT_ZTOOL_SERIAL_RCV_BUFFER_FULL )
MOV A,R6
ANL A,#0x4
JZ ??MT_ProcessEvent_2
// 261 {
// 262 // Do sometype of error processing
// 263 MT_SendErrorNotification(RECEIVE_BUFFER_FULL);
; Setup parameters for call to function MT_SendErrorNotification
MOV R1,#0x2
MOV DPTR,#(MT_SendErrorNotification & 0xffff)
MOV A,#((MT_SendErrorNotification >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 264
// 265 // Return unproccessed events
// 266 return (events ^ MT_ZTOOL_SERIAL_RCV_BUFFER_FULL);
MOV A,#0x4
XRL A,R6
MOV R2,A
MOV A,R7
??MT_ProcessEvent_3:
MOV R3,A
SJMP ??MT_ProcessEvent_4
// 267 }
??MT_ProcessEvent_5:
; Setup parameters for call to function MT_ProcessCommand
MOV DPTR,#(MT_ProcessCommand & 0xffff)
MOV A,#((MT_ProcessCommand >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
??MT_ProcessEvent_1:
; Setup parameters for call to function osal_msg_receive
MOV DPTR,#MT_TaskID
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(osal_msg_receive & 0xffff)
MOV A,#((osal_msg_receive >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R2
JNZ ??MT_ProcessEvent_6
MOV A,R3
??MT_ProcessEvent_6:
JNZ ??MT_ProcessEvent_5
MOV A,R6
MOV R2,A
MOV A,#-0x80
XRL A,R7
SJMP ??MT_ProcessEvent_3
// 268 #endif
// 269
// 270 // Discard or make more handlers
// 271 return 0;
??MT_ProcessEvent_2:
MOV R2,#0x0
MOV R3,#0x0
??MT_ProcessEvent_4:
LJMP ??Subroutine17_1 & 0xFFFF
CFI EndBlock cfiBlock2
// 272
// 273 } /* MT_ProcessEvent() */
// 274
// 275 #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
// 276 /*********************************************************************
// 277 * @fn MT_BuildSPIMsg
// 278 *
// 279 * @brief
// 280 *
// 281 * Format an SPI message.
// 282 *
// 283 * @param UINT16 cmd - command id
// 284 * @param byte *msg - pointer to message buffer
// 285 * @param byte dataLen - length of data field
// 286 * @param byte *pData - pointer to data field
// 287 *
// 288 * @return void
// 289 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 290 void MT_BuildSPIMsg( UINT16 cmd, byte *msg, byte dataLen, byte *pData )
MT_BuildSPIMsg:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function MT_BuildSPIMsg
// 291 {
FUNCALL MT_BuildSPIMsg, osal_memcpy
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL MT_BuildSPIMsg, SPIMgr_CalcFCS
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
MOV A,#-0xe
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 14)
; Saved register size: 14
; Auto size: 0
MOV A,R4
MOV R6,A
MOV A,R5
MOV R7,A
MOV ?V0 + 3,R1
MOV A,#0xe
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0 + 0,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 1,A
// 292 byte *msgPtr;
// 293
// 294 *msg++ = SOP_VALUE;
MOV A,#0x2
MOV DPL,R6
MOV DPH,R7
MOVX @DPTR,A
INC DPTR
MOV R6,DPL
MOV R7,DPH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -