📄 spimgr.lst
字号:
\ 000010 85..82 MOV DPL,?XSP + 0
\ 000013 85..83 MOV DPH,?XSP + 1
\ 000016 F0 MOVX @DPTR,A
93 uartConfig.baudRate = SPI_MGR_DEFAULT_BAUDRATE;
\ 000017 12.... LCALL ?XSTACK_DISP0_8
\ 00001A 7406 MOV A,#0x6
\ 00001C F0 MOVX @DPTR,A
94 uartConfig.flowControl = SPI_MGR_DEFAULT_OVERFLOW;
\ 00001D 7402 MOV A,#0x2
\ 00001F 12.... LCALL ?XSTACK_DISP0_8
\ 000022 E4 CLR A
\ 000023 F0 MOVX @DPTR,A
95 uartConfig.flowControlThreshold = SPI_MGR_DEFAULT_THRESHOLD;
\ 000024 7403 MOV A,#0x3
\ 000026 12.... LCALL ?XSTACK_DISP0_8
\ 000029 7430 MOV A,#0x30
\ 00002B F0 MOVX @DPTR,A
\ 00002C A3 INC DPTR
\ 00002D E4 CLR A
\ 00002E F0 MOVX @DPTR,A
96 uartConfig.rx.maxBufSize = SPI_MGR_DEFAULT_MAX_RX_BUFF;
\ 00002F 740A MOV A,#0xa
\ 000031 12.... LCALL ?XSTACK_DISP0_8
\ 000034 7480 MOV A,#-0x80
\ 000036 F0 MOVX @DPTR,A
\ 000037 A3 INC DPTR
\ 000038 E4 CLR A
\ 000039 F0 MOVX @DPTR,A
97 uartConfig.tx.maxBufSize = SPI_MGR_DEFAULT_MAX_TX_BUFF;
\ 00003A 7412 MOV A,#0x12
\ 00003C 12.... LCALL ?XSTACK_DISP0_8
\ 00003F 7480 MOV A,#-0x80
\ 000041 F0 MOVX @DPTR,A
\ 000042 A3 INC DPTR
\ 000043 E4 CLR A
\ 000044 F0 MOVX @DPTR,A
98 uartConfig.idleTimeout = SPI_MGR_DEFAULT_IDLE_TIMEOUT;
\ 000045 7405 MOV A,#0x5
\ 000047 12.... LCALL ?XSTACK_DISP0_8
\ 00004A 7406 MOV A,#0x6
\ 00004C F0 MOVX @DPTR,A
99 uartConfig.intEnable = TRUE;
\ 00004D 7416 MOV A,#0x16
\ 00004F 12.... LCALL ?XSTACK_DISP0_8
\ 000052 7401 MOV A,#0x1
\ 000054 F0 MOVX @DPTR,A
100 #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
101 uartConfig.callBackFunc = SPIMgr_ProcessZToolData;
\ 000055 741B MOV A,#0x1b
\ 000057 12.... LCALL ?XSTACK_DISP0_8
\ 00005A 74.. MOV A,#(SPIMgr_ProcessZToolData & 0xff)
\ 00005C F0 MOVX @DPTR,A
\ 00005D A3 INC DPTR
\ 00005E 74.. MOV A,#((SPIMgr_ProcessZToolData >> 8) & 0xff)
\ 000060 F0 MOVX @DPTR,A
\ 000061 A3 INC DPTR
\ 000062 74.. MOV A,#((SPIMgr_ProcessZToolData >> 16) & 0xff)
\ 000064 F0 MOVX @DPTR,A
102 #elif defined (ZAPP_P1) || defined (ZAPP_P2)
103 uartConfig.callBackFunc = SPIMgr_ProcessZAppData;
104 #else
105 uartConfig.callBackFunc = NULL;
106 #endif
107
108 /* Start UART */
109 #if defined (SPI_MGR_DEFAULT_PORT)
110 HalUARTOpen (SPI_MGR_DEFAULT_PORT, &uartConfig);
\ 000065 ; Setup parameters for call to function HalUARTOpen
\ 000065 85..82 MOV DPL,?XSP + 0
\ 000068 85..83 MOV DPH,?XSP + 1
\ 00006B AA82 MOV R2,DPL
\ 00006D AB83 MOV R3,DPH
\ 00006F 7900 MOV R1,#0x0
\ 000071 90.... MOV DPTR,#(HalUARTOpen & 0xffff)
\ 000074 74.. MOV A,#((HalUARTOpen >> 16) & 0xff)
\ 000076 12.... LCALL ?BCALL ; Banked call to: DPTR()
111 #else
112 /* Silence IAR compiler warning */
113 (void)uartConfig;
114 #endif
115
116 /* Initialize for ZApp */
117 #if defined (ZAPP_P1) || defined (ZAPP_P2)
118 /* Default max bytes that ZAPP can take */
119 SPIMgr_MaxZAppBufLen = 1;
120 SPIMgr_ZAppRxStatus = SPI_MGR_ZAPP_RX_READY;
121 #endif
122
123
124 }
\ 000079 741E MOV A,#0x1e
\ 00007B 12.... LCALL ?DEALLOC_XSTACK8
\ 00007E REQUIRE ?Subroutine5
\ 00007E ; // Fall through to label ?Subroutine5
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine5:
\ 000000 D083 POP DPH
\ 000002 D082 POP DPL
\ 000004 02.... LJMP ?BRET
125
126 /***************************************************************************************************
127 * @fn MT_SerialRegisterTaskID
128 *
129 * @brief
130 *
131 * This function registers the taskID of the application so it knows
132 * where to send the messages whent they come in.
133 *
134 * @param void
135 *
136 * @return void
137 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
138 void SPIMgr_RegisterTaskID( byte taskID )
\ SPIMgr_RegisterTaskID:
139 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
140 App_TaskID = taskID;
\ 000004 E9 MOV A,R1
\ 000005 90.... MOV DPTR,#App_TaskID
\ 000008 F0 MOVX @DPTR,A
141 }
\ 000009 80.. SJMP ?Subroutine5
142
143 /***************************************************************************************************
144 * @fn SPIMgr_CalcFCS
145 *
146 * @brief
147 *
148 * Calculate the FCS of a message buffer by XOR'ing each byte.
149 * Remember to NOT include SOP and FCS fields, so start at the CMD
150 * field.
151 *
152 * @param byte *msg_ptr - message pointer
153 * @param byte len - length (in bytes) of message
154 *
155 * @return result byte
156 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
157 byte SPIMgr_CalcFCS( uint8 *msg_ptr, uint8 len )
\ SPIMgr_CalcFCS:
158 {
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 0
\ 000005 E9 MOV A,R1
\ 000006 FC MOV R4,A
159 byte x;
160 byte xorResult;
161
162 xorResult = 0;
\ 000007 7900 MOV R1,#0x0
163
164 for ( x = 0; x < len; x++, msg_ptr++ )
\ 000009 7D00 MOV R5,#0x0
\ 00000B 800E SJMP ??SPIMgr_CalcFCS_0
165 xorResult = xorResult ^ *msg_ptr;
\ ??SPIMgr_CalcFCS_1:
\ 00000D 8A82 MOV DPL,R2
\ 00000F 8B83 MOV DPH,R3
\ 000011 E0 MOVX A,@DPTR
\ 000012 C9 XCH A,R1
\ 000013 69 XRL A,R1
\ 000014 F9 MOV R1,A
\ 000015 0D INC R5
\ 000016 A3 INC DPTR
\ 000017 AA82 MOV R2,DPL
\ 000019 AB83 MOV R3,DPH
\ ??SPIMgr_CalcFCS_0:
\ 00001B ED MOV A,R5
\ 00001C C3 CLR C
\ 00001D 9C SUBB A,R4
\ 00001E 40ED JC ??SPIMgr_CalcFCS_1
166
167 return ( xorResult );
\ 000020 7F01 MOV R7,#0x1
\ 000022 02.... LJMP ?BANKED_LEAVE_XDATA
168 }
169
170
171 #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
172 /***************************************************************************************************
173 * @fn SPIMgr_ProcessZToolRxData
174 *
175 * @brief | SOP | CMD | Data Length | FSC |
176 * | 1 | 2 | 1 | 1 |
177 *
178 * Parses the data and determine either is SPI or just simply serial data
179 * then send the data to correct place (MT or APP)
180 *
181 * @param pBuffer - pointer to the buffer that contains the data
182 * length - length of the buffer
183 *
184 *
185 * @return None
186 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
187 void SPIMgr_ProcessZToolData ( uint8 port, uint8 event )
\ SPIMgr_ProcessZToolData:
188 {
\ 000000 74F6 MOV A,#-0xa
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 10
\ 000005 ; Auto size: 5
\ 000005 74FB MOV A,#-0x5
\ 000007 12.... LCALL ?ALLOC_XSTACK8
189 uint8 ch;
190 uint8 temp[5];
191 unsigned int tt;
192 /* Verify events */
193 if (event == HAL_UART_TX_FULL)
\ 00000A 7408 MOV A,#0x8
\ 00000C 6A XRL A,R2
\ 00000D 6005 JZ ??SPIMgr_ProcessZToolData_0
194 {
195 // Do something when TX if full
196 return;
197 }
198 if (event & (HAL_UART_RX_FULL | HAL_UART_RX_ABOUT_FULL | HAL_UART_RX_TIMEOUT))
\ 00000F 7407 MOV A,#0x7
\ 000011 5A ANL A,R2
\ 000012 7015 JNZ ??SPIMgr_ProcessZToolData_1
\ ??SPIMgr_ProcessZToolData_0:
\ 000014 7405 MOV A,#0x5
\ 000016 12.... LCALL ?DEALLOC_XSTACK8
\ 000019 7F02 MOV R7,#0x2
\ 00001B 02.... LJMP ?BANKED_LEAVE_XDATA
199 {
200 while (Hal_UART_RxBufLen(SPI_MGR_DEFAULT_PORT))
201 {
202 HalUARTRead (SPI_MGR_DEFAULT_PORT, temp, 4);
203 tt = (unsigned int)temp[0];
204 tt = (tt<<8)&0xff00;
205 tt |= temp[1];
206 SendData(&temp[2],tt,2);
207 switch (state)
208 {
209 case SOP_STATE:
210 if (ch == SOP_VALUE)
211 state = CMD_STATE1;
212 break;
213
214 case CMD_STATE1:
215 CMD_Token[0] = ch;
\ ??SPIMgr_ProcessZToolData_2:
\ 00001E EE MOV A,R6
\ 00001F 90.... MOV DPTR,#CMD_Token
\ 000022 F0 MOVX @DPTR,A
216 state = CMD_STATE2;
\ 000023 7402 MOV A,#0x2
\ ??SPIMgr_ProcessZToolData_3:
\ 000025 90.... MOV DPTR,#state
\ ??SPIMgr_ProcessZToolData_4:
\ 000028 F0 MOVX @DPTR,A
\ ??SPIMgr_ProcessZToolData_1:
\ 000029 ; Setup parameters for call to function Hal_UART_RxBufLen
\ 000029 7900 MOV R1,#0x0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -