?? serial.lst
字號(hào):
252 6 UIDataArea.Exam_Buffer.ExamDirtyFlag = 1;
253 6 UISemaphore.ucExamAreaSem = 0xff; //release semaphore
254 6 break;
255 6 }
256 5 UISemaphore.ucExamAreaSem = 0xff; //release semaphore
257 5 DelayCycle(16);
258 5 }
259 4 UISemaphore.ucExamAreaSem = 0xff; //release semaphore
260 4 ConnectFlag = FALSE;
261 4 UARTTransFrame = UARTTransHead;
262 4 ucNoAckCount = 0;
263 4 if( UARTTransHead != UARTTransTail )
264 4 {
265 5 StopTran = FALSE;
266 5 TI = 1;
267 5 }
268 4 else
269 4 {
270 5 StopTran = TRUE;
271 5 }
272 4 }
273 3 }
274 2 }
275 1 else if( ( EnableTran==TRUE ) && (StopTran == TRUE) )
276 1 {
277 2 #ifdef NDS_UI_DEBUG
278 2 P3_5 = ~P3_5;
279 2 #endif
280 2 if (UARTTransHead != UARTTransTail)
281 2 {
282 3 StopTran = FALSE;
283 3 TI = 1;
284 3 }
285 2 }
286 1 TF2 = 0;
287 1 }
288
289
290 /******************************************************************************
291 * *
292 * 處理串口數(shù)據(jù) *
293 * *
294 ******************************************************************************/
295 void ProcSerial(void)
296 {
297 1 unsigned char idata *ip_Tmp;
298 1 unsigned char data ucTmp;
299 1
300 1 #ifdef NDS_UI_DEBUG
301 1 P3_2 = ~P3_2;
302 1 #endif
303 1 if( UARTRcvHead != UARTRcvTail)
C51 COMPILER V6.14 SERIAL 07/15/2005 09:38:51 PAGE 6
304 1 {//Receive buffer not empty
305 2 #ifdef NDS_UI_DEBUG
306 2 P3_3 = ~P3_3;
307 2 #endif
308 2 ucTmp = *UARTRcvHead;
309 2 if(++UARTRcvHead == UART_RcvBuffer+UARTBUFFERLEN_RX)
310 2 {
311 3 UARTRcvHead = UART_RcvBuffer;
312 3 }
313 2 if( ucTmp == STX)
314 2 {//幀起始標(biāo)志
315 3 UARTRcvFrame = UARTRcvHead; //UARTRcvFrame指向STX的下一個(gè)字節(jié),即FRAME_TYPE
316 3 ucRcvCheckSum = ucTmp;
317 3 ucRcvLen = 1;
318 3 }
319 2 else
320 2 {
321 3 ucRcvLen++;
322 3 ucRcvCheckSum ^= ucTmp;
323 3 if( ucTmp == ETX)
324 3 {//幀結(jié)束標(biāo)志
325 4 #ifdef NDS_UI_DEBUG
326 4 P3_4 = ~P3_4;
327 4 #endif
328 4 switch(*UARTRcvFrame)
329 4 {
330 5 case MSG_FRAME:
331 5 if(++UARTRcvFrame == UART_RcvBuffer+UARTBUFFERLEN_RX)
332 5 {
333 6 UARTRcvFrame = UART_RcvBuffer;
334 6 }
335 5 switch(*UARTRcvFrame)
336 5 {
337 6 case EXAM_COMM:
338 6 #ifdef NDS_UI_DEBUG
339 6 P3_4 = ~P3_4;
340 6 #endif
341 6 if(ucRcvLen != EXAM_COMM_LEN)
342 6 {//長(zhǎng)度不正確
343 7 #ifdef NDS_UI_DEBUG
344 7 #ifdef NDS_UI_DEBUG_ENABLEDIS
345 7 SetCursorPos(20);
346 7 DisplayChar( ((ucRcvLen)>>4)+0x30 );
347 7 DisplayChar( ((ucRcvLen)&0x0f)+0x30 );
348 7 #endif
349 7 #endif
350 7 break;
351 7 }
352 6 ip_Tmp = UARTRcvHead - 3;
353 6 if( ip_Tmp < UART_RcvBuffer) ip_Tmp += UARTBUFFERLEN_RX; //指向CHECKSUM
354 6 ucTmp = *ip_Tmp;
355 6 if( ++ip_Tmp == UART_RcvBuffer+UARTBUFFERLEN_RX)
356 6 {
357 7 ip_Tmp = UART_RcvBuffer;
358 7 }
359 6 ucRcvCheckSum ^= ETX^ucTmp^*ip_Tmp;
360 6 if(ucTmp>'a')
361 6 {
362 7 ucTmp -= 'a' +10;
363 7 }
364 6 else if( ucTmp>'A')
365 6 {
C51 COMPILER V6.14 SERIAL 07/15/2005 09:38:51 PAGE 7
366 7 ucTmp -= 'A' +10;
367 7 }
368 6 else
369 6 {
370 7 ucTmp -= '0';
371 7 }
372 6 ucTmp <<= 4;
373 6 if( *ip_Tmp >= 'a' )
374 6 {
375 7 ucTmp += *ip_Tmp - 'a' +10;
376 7 }
377 6 else if( *ip_Tmp >= 'A' )
378 6 {
379 7 ucTmp += *ip_Tmp - 'A' +10;
380 7 }
381 6 else
382 6 {
383 7 ucTmp += *ip_Tmp - '0';
384 7 }
385 6 if( ucTmp != ucRcvCheckSum)
386 6 {//校驗(yàn)錯(cuò)誤
387 7 #ifdef NDS_UI_DEBUG
388 7 #ifdef NDS_UI_DEBUG_ENABLEDIS
389 7 SetCursorPos(22);
390 7 DisplayChar( ((ucTmp)>>4)+0x30 );
391 7 DisplayChar( ((ucTmp)&0x0f)+0x30 );
392 7 DisplayChar( ((ucRcvCheckSum)>>4)+0x30 );
393 7 DisplayChar( ((ucRcvCheckSum)&0x0f)+0x30 );
394 7 #endif
395 7 #endif
396 7 break;
397 7 }
398 6 /* while( 1 )
399 6 //deleted by XuYiBo,2002-Oct-18(沒(méi)必要把所有的檢測(cè)參數(shù)都送到LinkLayer)
400 6 {
401 6 */
402 6 UISemaphore.ucExamAreaSem = 0x00; //request semaphore
403 6 if( UISemaphore.ucExamAreaSem == 0x00)
404 6 {
405 7 if(++UARTRcvFrame == UART_RcvBuffer+UARTBUFFERLEN_RX)
406 7 {
407 8 UARTRcvFrame = UART_RcvBuffer;
408 8 }
409 7 if(ConnectFlag == TRUE)
410 7 {
411 8 UIDataArea.Exam_Buffer.ConnectFlag = TRUE;
412 8 }
413 7 else
414 7 {
415 8 UIDataArea.Exam_Buffer.ConnectFlag = FALSE;
416 8 }
417 7 UARTRcvFrame = AscToHex(UARTRcvFrame,&ucTmp);
418 7 UIDataArea.Exam_Buffer.Current[0] = ucTmp;
419 7 UARTRcvFrame = AscToHex(UARTRcvFrame,&ucTmp);
420 7 UIDataArea.Exam_Buffer.Current[1] = ucTmp;
421 7 UARTRcvFrame = AscToHex(UARTRcvFrame,&ucTmp);
422 7 UIDataArea.Exam_Buffer.ExciterLevel[0] = ucTmp;
423 7 UARTRcvFrame = AscToHex(UARTRcvFrame,&ucTmp);
424 7 UIDataArea.Exam_Buffer.ExciterLevel[1] = ucTmp;
425 7 UARTRcvFrame = AscToHex(UARTRcvFrame,&ucTmp);
426 7 UIDataArea.Exam_Buffer.TravelPow = ucTmp;
427 7 UARTRcvFrame = AscToHex(UARTRcvFrame,&ucTmp);
C51 COMPILER V6.14 SERIAL 07/15/2005 09:38:51 PAGE 8
428 7 UIDataArea.Exam_Buffer.ReflectPow = ucTmp;
429 7 UARTRcvFrame = AscToHex(UARTRcvFrame,&ucTmp);
430 7 UIDataArea.Exam_Buffer.AmpTemp = ucTmp;
431 7 UARTRcvFrame = AscToHex(UARTRcvFrame,&ucTmp);
432 7 UIDataArea.Exam_Buffer.RxTemp = ucTmp;
433 7 UARTRcvFrame = AscToHex(UARTRcvFrame,&ucTmp);
434 7 UIDataArea.Exam_Buffer.TxTemp = ucTmp;
435 7
436 7 UIDataArea.Exam_Buffer.RXIF_LOCK = (*UARTRcvFrame)&0xf;
437 7 if(++UARTRcvFrame == UART_RcvBuffer+UARTBUFFERLEN_RX)
438 7 {
439 8 UARTRcvFrame = UART_RcvBuffer;
440 8 }
441 7 UIDataArea.Exam_Buffer.RXRF_LOCK = (*UARTRcvFrame)&0xf;
442 7 if(++UARTRcvFrame == UART_RcvBuffer+UARTBUFFERLEN_RX)
443 7 {
444 8 UARTRcvFrame = UART_RcvBuffer;
445 8 }
446 7 UIDataArea.Exam_Buffer.TXIF_LOCK = (*UARTRcvFrame)&0xf;
447 7 if(++UARTRcvFrame == UART_RcvBuffer+UARTBUFFERLEN_RX)
448 7 {
449 8 UARTRcvFrame = UART_RcvBuffer;
450 8 }
451 7 UIDataArea.Exam_Buffer.TXRF_LOCK = (*UARTRcvFrame)&0xf;
452 7
453 7 UIDataArea.Exam_Buffer.ExamDirtyFlag = 1;
454 7
455 7 UISemaphore.ucExamAreaSem = 0xff; //release semaphore
456 7 // break; //deleted by XuYiBo,2002-Oct-18(沒(méi)必要把所有的檢測(cè)參數(shù)都送到LinkLayer)
457 7 }
458 6 /* deleted by XuYiBo,2002-Oct-18(沒(méi)必要把所有的檢測(cè)參數(shù)都送到LinkLayer)
459 6 UISemaphore.ucExamAreaSem = 0xff; //release semaphore
460 6 DelayCycle(16);
461 6 }
462 6 */
463 6 break;
464 6 default:
465 6 #ifdef NDS_UI_DEBUG
466 6 #ifdef NDS_UI_DEBUG_ENABLEDIS
467 6 SetCursorPos(2);
468 6 DisplayChar( ((*UARTRcvFrame)>>4)+0x30 );
469 6 DisplayChar( ((*UARTRcvFrame)&0x0f)+0x30 );
470 6 #endif
471 6 #endif
472 6 break;
473 6 }
474 5 break;
475 5
476 5 case ACK_FRAME:
477 5 if(ucRcvLen == ACK_FRAME_LEN)
478 5 {//Length OK
479 6 ET2 = 0; //disable timer2
480 6 ucAckTimeout= 0;
481 6 EnableTran = TRUE;
482 6 ConnectFlag = TRUE;
483 6 ucNoAckCount= 0;
484 6 ET2 = 1; //enable timer2
485 6 }
486 5 break;
487 5 case NAK_FRAME:
488 5 if(ucRcvLen == NAK_FRAME_LEN)
489 5 {//Length OK
C51 COMPILER V6.14 SERIAL 07/15/2005 09:38:51 PAGE 9
490 6 ET2 = 0; //disable timer2
491 6 ucAckTimeout = 0;
492 6 EnableTran = TRUE;
493 6 if( ++ucNoAckCount < MAX_REP)
494 6 {
495 7 UARTTransHead = UARTTransFrame;
496 7 StopTran = FALSE;
497 7 TI = 1;
498 7 }
499 6 else
500 6 {//重發(fā)次數(shù)超過(guò)“最大允許重發(fā)次數(shù)”
501 7 ucTmp = 255;
502 7 while( --ucTmp )
503 7 {
504 8 UISemaphore.ucExamAreaSem = 0x00; //request semaphore
505 8 if( UISemaphore.ucExamAreaSem == 0x00)
506 8 {
507 9 UIDataArea.Exam_Buffer.ConnectFlag = FALSE;
508 9 UIDataArea.Exam_Buffer.ExamDirtyFlag = 1;
509 9 UISemaphore.ucExamAreaSem = 0xff; //release semaphore
510 9 break;
511 9 }
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -