📄 anayserial_1.lst
字号:
398 4 {
399 5 cnt_sound=0;
400 5 f_wrramover=0;
401 5 }
402 4 }
403 3 }
404 2 }
405 1 }
406 void WDFeed(void)
407 {
408 1 wdi=1;
409 1 wdi=0;
410 1 }
411 void serial(void) interrupt 4
412 {
413 1 uchr tp=0;
414 1 if(RI==1)
415 1 {
416 2 RI=0;
417 2 if(f_rerx==1)
418 2 {
419 3 if(SBUF==start)
420 3 {
421 4 f_rerx=0;
422 4 cnt_rx=0;
423 4 }
424 3 }
425 2 else
426 2 {
427 3 cnt_rx++; //rxbuff[cnt_rx-1]=SBUF;
C51 COMPILER V7.09 ANAYSERIAL_1 07/20/2007 17:27:17 PAGE 8
428 3
429 3 if(cnt_rx==1)
430 3 {
431 4 dispstyle=SBUF;
432 4 }
433 3 if(cnt_rx==2)//显示数据会大于256,所以用两个字节来表示数据长度
434 3 {
435 4 displength_h=SBUF;
436 4 }
437 3 if(cnt_rx==3)
438 3 {
439 4 //tp=SBUF;
440 4 displength_l=SBUF;
441 4 lengthdisp=displength_h*256+displength_l;
442 4 if(lengthdisp>384)
443 4 {
444 5 f_rerx=1;
445 5 f_transerr=1;
446 5 Tx();
447 5 }
448 4 if(lengthdisp>127)
449 4 {
450 5 f_over128=1;
451 5 }
452 4 else
453 4 {
454 5 f_over128=0;
455 5 }
456 4 }
457 3 if((cnt_rx>3)&&(cnt_rx<(lengthdisp+4)))
458 3 {
459 4 if(cnt_rx<132)
460 4 {
461 5 rxbuff[cnt_rx-4]=SBUF; //0->127
462 5 }
463 4
464 4 else
465 4 {
466 5 CHPCON|=0x10;
467 5 rxbuff2[cnt_rx-132]=SBUF; //128->384
468 5 CHPCON=0x00;
469 5 }
470 4 }
471 3 if(cnt_rx==lengthdisp+4)
472 3 {
473 4 lengthsound=SBUF;
474 4 CHPCON|=0x10;
475 4 }
476 3 if((cnt_rx>(lengthdisp+4))&&(cnt_rx<(lengthdisp+lengthsound+5)))
477 3 {
478 4 soundbuff[cnt_rx-lengthdisp-5]=SBUF;
479 4 }
480 3 if(cnt_rx==(lengthsound+lengthdisp+5))
481 3 {
482 4 rx_check=SBUF;
483 4 }
484 3 if(cnt_rx==(lengthsound+lengthdisp+6))
485 3 {
486 4 f_rerx=1;
487 4 if(SBUF==end)
488 4 {
489 5 f_anayrx=1;
C51 COMPILER V7.09 ANAYSERIAL_1 07/20/2007 17:27:17 PAGE 9
490 5 }
491 4 else
492 4 {
493 5 f_transerr=1;
494 5 Tx();
495 5 }
496 4 }
497 3 }
498 2 }
499 1 if(TI==1)
500 1 {
501 2 TI=0;
502 2 if(cnt_tx==1)
503 2 {
504 3 SBUF=end;
505 3 cnt_tx=0;
506 3 f_transerr=0;
507 3 f_transsuc=0;
508 3 }
509 2 if(cnt_tx==2)
510 2 {
511 3 cnt_tx--;
512 3 if(f_transerr==1)
513 3 {
514 4 SBUF=txerr;
515 4 }
516 3 if(f_transsuc==1)
517 3 {
518 4 SBUF=txsuc;
519 4 }
520 3 }
521 2 }
522 1 }
523 void timer0(void) interrupt 1
524 {
525 1 TH0=0xfc;//定时1ms
526 1 TL0=0x66;
527 1 TR0=1;
528 1 if(f_t_delaywr==1)
529 1 {
530 2 cnt_delaywr++;
531 2 if(cnt_delaywr==10)
532 2 {
533 3 cnt_delaywr=0;
534 3 f_t_delaywr=0;
535 3 f_delaywr=1;
536 3 }
537 2 }
538 1 if(f_t_delayisd==1)
539 1 {
540 2 cnt_delayisd++;
541 2 if(cnt_delayisd==150)
542 2 {
543 3 cnt_delayisd=0;
544 3 f_t_delayisd=0;
545 3 //f_delayisd=1;
546 3 f_handlesound=1;
547 3 }
548 2 }
549 1 }
550 void int0(void) interrupt 0
551 {
C51 COMPILER V7.09 ANAYSERIAL_1 07/20/2007 17:27:17 PAGE 10
552 1 if(isd_ce==0)
553 1 {
554 2 f_t_delayisd=1;
555 2 }
556 1 isd_ce=1;
557 1 }
558 void Tx(void)
559 {
560 1 cnt_tx=2;
561 1 SBUF=0x10;
562 1 }
563
564 void rom2ram_ascii(uchr x,uchr y)
565 {
566 1 uint tp=0;
567 1 uchr i=0;
568 1 ram_ce=0;
569 1 if(x<13)
570 1 {
571 2 for(i=0;i<16;i++)
572 2 {
573 3 tp=12*i+x-1;
574 3 nDispRam[tp]=ascii[y*16+i];
575 3 if(f_fixdisp==1)
576 3 {
577 4 if((tp==151)||(tp==163))
578 4 {
579 5 nDispRam[tp]=ascii[y*16+i]|0x03;
580 5 }
581 4 }
582 3 }
583 2 }
584 1 else
585 1 {
586 2 for(i=0;i<16;i++)
587 2 {
588 3 tp=12*(i+16)+x-1-12;
589 3 nDispRam[tp]=ascii[y*16+i];
590 3 if(f_fixdisp==1)
591 3 {
592 4 if((tp==343)||(tp==355))
593 4 {
594 5 nDispRam[tp]=ascii[y*16+i]|0x03;
595 5 }
596 4 }
597 3 }
598 2 }
599 1 ram_ce=1;
600 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -