📄 comm232.lst
字号:
154 ** 日 期:
155 **-------------------------------------------------------------------------------------------------------
156 ********************************************************************************************************/
157 void Comm(void) interrupt 4
158 {
159 1 uint8 ea_time;
160 1 ea_time = EA;
161 1 EA = 0;
162 1 if(RI == 1)
163 1 {
164 2 CommTemp0 = SBUF;
165 2 if(CommRxPointer > 10)CommRxPointer = 0;
166 2 if(CommTemp0 == 0x7e)
167 2 {
168 3 CommState = 0;
169 3 CommAscii = 0;
170 3 CommBytehilow = 0;
171 3 }
172 2 if(CommState != 0 && CommState != 5 && CommState != 6)
173 2 {
174 3 ComCalculChkSum = ComCalculChkSum + CommTemp0;
175 3 }
176 2 if(CommState != 0 && CommState != 5)
177 2 {
178 3 if(CommAscii == 0)
C51 COMPILER V7.06 COMM232 12/15/2008 11:13:24 PAGE 4
179 3 {
180 4 CommAscii = 1;
181 4 CommTemp1 = CommTemp0;
182 4 if(CommTemp1 < 0x3a)
183 4 CommTemp1 -= 0x30;
184 4 else
185 4 CommTemp1 -= 0x37;
186 4 }
187 3 else
188 3 {
189 4 CommAscii = 0;
190 4 if(CommTemp0 < 0x3a)
191 4 CommTemp0 -= 0x30;
192 4 else
193 4 CommTemp0 -= 0x37;
194 4 CommTemp1 <<= 4;
195 4 CommTemp1 |= CommTemp0;
196 4 }
197 3 }
198 2 if(CommAscii == 0)
199 2 {
200 3 switch(CommState)
201 3 {
202 4 case 0: /*SOI*/
203 4 {
204 5 if(CommTemp0 == 0x7e)
205 5 {
206 6 CommState++;
207 6 ComCalculChkSum = 0;
208 6 }
209 5 }break;
210 4 case 1: /*ADD*/
211 4 {
212 5 if(CommTemp1 == BoardAddress)
213 5 {
214 6 CommState++;
215 6 }
216 5 else
217 5 {
218 6 CommState = 0;
219 6 }
220 5 }break;
221 4 case 2: /*CID*/
222 4 {
223 5 CommCid = CommTemp1;
224 5 CommState++;
225 5 if(CommCid > 0x10) CommState = 0;
226 5
227 5 }break;
228 4 case 3: /*LENGTH*/
229 4 {
230 5 if(CommBytehilow == 0 )
231 5 {
232 6 CommLengthH = CommTemp1;
233 6 CommBytehilow = 1;
234 6 }
235 5 else
236 5 {
237 6 CommState++;
238 6 CommLengthL = CommTemp1;
239 6 CommBytehilow = 0;
240 6 if(CommLengthL > 100)CommState = 0;
C51 COMPILER V7.06 COMM232 12/15/2008 11:13:24 PAGE 5
241 6 CommRxPointer = 0; //RxBufPointer
242 6 if(CommLengthL == 0)CommState++;
243 6 }
244 5 }break;
245 4 case 4: /*INFO*/
246 4 {
247 5 if(CommLengthL != 0)
248 5 {
249 6 CommRxBuf[CommRxPointer] = CommTemp1;
250 6 CommRxPointer++;
251 6 CommLengthL--;
252 6 CommLengthL--;
253 6 if(CommLengthL == 0)CommState++;
254 6 }
255 5 else
256 5 CommState++;
257 5 }break;
258 4 case 5: /*chksum*/
259 4 {
260 5 if(CommBytehilow == 0)
261 5 {
262 6 CommLengthH = CommTemp1;
263 6 CommBytehilow = 1;
264 6 }
265 5 else
266 5 {
267 6 CommBytehilow = 0;
268 6 CommChksumL = CommTemp1;
269 6 ReComCalculChkSum = CommChksumH;
270 6 ReComCalculChkSum = ReComCalculChkSum << 8;
271 6 ReComCalculChkSum |= CommChksumL;
272 6 ComCalculChkSum= (~ComCalculChkSum)+1;
273 6 if(ReComCalculChkSum == ComCalculChkSum)CommState++;
274 6 else
275 6 {
276 7 goto comrxend;
277 7 }
278 6 }
279 5 }break;
280 4 case 6: /*EOI */
281 4 {
282 5 if(CommTemp0 == 0x0D)
283 5 {
284 6 Massageflag = 1;
285 6 }
286 5 CommState = 0;
287 5 }break;
288 4 }
289 3 comrxend:
290 3 ;
291 3 }
292 2 }
293 1 RI = 0;
294 1 EA = ea_time;
295 1 }
296 /********************************************************************************************************
297 End of file
298 ********************************************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 601 ----
C51 COMPILER V7.06 COMM232 12/15/2008 11:13:24 PAGE 6
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -