📄 spimgr.lst
字号:
\ SPIMgr_Init:
84 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 30
\ 000004 74E2 MOV A,#-0x1e
\ 000006 12.... LCALL ?ALLOC_XSTACK8
85 halUARTCfg_t uartConfig;
86
87 /* Initialize APP ID */
88 App_TaskID = 0;
\ 000009 E4 CLR A
\ 00000A 90.... MOV DPTR,#App_TaskID
\ 00000D F0 MOVX @DPTR,A
89
90 /* UART Configuration */
91 uartConfig.configured = TRUE;
\ 00000E 7401 MOV A,#0x1
\ 000010 85..82 MOV DPL,?XSP + 0
\ 000013 85..83 MOV DPH,?XSP + 1
\ 000016 F0 MOVX @DPTR,A
92 uartConfig.baudRate = SPI_MGR_DEFAULT_BAUDRATE;
\ 000017 12.... LCALL ?XSTACK_DISP0_8
\ 00001A 7406 MOV A,#0x6
\ 00001C F0 MOVX @DPTR,A
93 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
94 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
95 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
96 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
97 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
98 uartConfig.intEnable = TRUE;
\ 00004D 7416 MOV A,#0x16
\ 00004F 12.... LCALL ?XSTACK_DISP0_8
\ 000052 7401 MOV A,#0x1
\ 000054 F0 MOVX @DPTR,A
99 #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
100 uartConfig.callBackFunc = SPIMgr_ProcessZToolData;
101 #elif defined (ZAPP_P1) || defined (ZAPP_P2)
102 uartConfig.callBackFunc = SPIMgr_ProcessZAppData;
\ 000055 741B MOV A,#0x1b
\ 000057 12.... LCALL ?XSTACK_DISP0_8
\ 00005A 74.. MOV A,#(SPIMgr_ProcessZAppData & 0xff)
\ 00005C F0 MOVX @DPTR,A
\ 00005D A3 INC DPTR
\ 00005E 74.. MOV A,#((SPIMgr_ProcessZAppData >> 8) & 0xff)
\ 000060 F0 MOVX @DPTR,A
\ 000061 A3 INC DPTR
\ 000062 74.. MOV A,#((SPIMgr_ProcessZAppData >> 16) & 0xff)
\ 000064 F0 MOVX @DPTR,A
103 #else
104 uartConfig.callBackFunc = NULL;
105 #endif
106
107 /* Start UART */
108 #if defined (SPI_MGR_DEFAULT_PORT)
109 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 7901 MOV R1,#0x1
\ 000071 90.... MOV DPTR,#(HalUARTOpen & 0xffff)
\ 000074 74.. MOV A,#((HalUARTOpen >> 16) & 0xff)
\ 000076 12.... LCALL ?BCALL ; Banked call to: DPTR()
110 #else
111 /* Silence IAR compiler warning */
112 (void)uartConfig;
113 #endif
114
115 /* Initialize for ZApp */
116 #if defined (ZAPP_P1) || defined (ZAPP_P2)
117 /* Default max bytes that ZAPP can take */
118 SPIMgr_MaxZAppBufLen = 1;
\ 000079 90.... MOV DPTR,#SPIMgr_MaxZAppBufLen
\ 00007C 7401 MOV A,#0x1
\ 00007E F0 MOVX @DPTR,A
\ 00007F A3 INC DPTR
\ 000080 E4 CLR A
\ 000081 F0 MOVX @DPTR,A
119 SPIMgr_ZAppRxStatus = SPI_MGR_ZAPP_RX_READY;
\ 000082 7401 MOV A,#0x1
\ 000084 90.... MOV DPTR,#SPIMgr_ZAppRxStatus
\ 000087 F0 MOVX @DPTR,A
120 #endif
121
122
123 }
\ 000088 741E MOV A,#0x1e
\ 00008A 12.... LCALL ?DEALLOC_XSTACK8
\ 00008D 80.. SJMP ??Subroutine0_0
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 F0 MOVX @DPTR,A
\ ??Subroutine0_0:
\ 000001 D083 POP DPH
\ 000003 D082 POP DPL
\ 000005 02.... LJMP ?BRET
124
125 /***************************************************************************************************
126 * @fn MT_SerialRegisterTaskID
127 *
128 * @brief
129 *
130 * This function registers the taskID of the application so it knows
131 * where to send the messages whent they come in.
132 *
133 * @param void
134 *
135 * @return void
136 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
137 void SPIMgr_RegisterTaskID( byte taskID )
\ SPIMgr_RegisterTaskID:
138 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
139 App_TaskID = taskID;
\ 000004 E9 MOV A,R1
\ 000005 90.... MOV DPTR,#App_TaskID
\ 000008 80.. SJMP ?Subroutine0
140 }
141
142 /***************************************************************************************************
143 * @fn SPIMgr_CalcFCS
144 *
145 * @brief
146 *
147 * Calculate the FCS of a message buffer by XOR'ing each byte.
148 * Remember to NOT include SOP and FCS fields, so start at the CMD
149 * field.
150 *
151 * @param byte *msg_ptr - message pointer
152 * @param byte len - length (in bytes) of message
153 *
154 * @return result byte
155 ***************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
156 byte SPIMgr_CalcFCS( uint8 *msg_ptr, uint8 len )
\ SPIMgr_CalcFCS:
157 {
\ 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
158 byte x;
159 byte xorResult;
160
161 xorResult = 0;
\ 000007 7900 MOV R1,#0x0
162
163 for ( x = 0; x < len; x++, msg_ptr++ )
\ 000009 7D00 MOV R5,#0x0
\ 00000B 800E SJMP ??SPIMgr_CalcFCS_0
164 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
165
166 return ( xorResult );
\ 000020 7F01 MOV R7,#0x1
\ 000022 02.... LJMP ?BANKED_LEAVE_XDATA
167 }
168
169
170 #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
171 /***************************************************************************************************
172 * @fn SPIMgr_ProcessZToolRxData
173 *
174 * @brief | SOP | CMD | Data Length | FSC |
175 * | 1 | 2 | 1 | 1 |
176 *
177 * Parses the data and determine either is SPI or just simply serial data
178 * then send the data to correct place (MT or APP)
179 *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -