📄 driver0425.lst
字号:
475 3 if(POINTER1==2)
476 3 byte_nums=get_byte_nums(rbuffer[1]);
477 3 if(POINTER1<byte_nums)
478 3 RSUM=RSUM+rbuffer[POINTER1-1]; //生成校验码
479 3 else
480 3 {
481 4 SM2=1;
482 4 if(RSUM==rbuffer[byte_nums-1])
483 4 {
484 5 if(ans==0)
485 5 {
486 6 POINTER1=0;
487 6 RSUM=0;
488 6 }
C51 COMPILER V7.06 DRIVER0425 06/03/2005 15:08:33 PAGE 9
489 5 S_ANSW=OK;
490 5 data_type();
491 5 }
492 4 else
493 4 {
494 5 S_ANSW=FAIL;
495 5 if(resend==0)
496 5 resend=1;
497 5 }
498 4 }
499 3
500 3 }
501 2 else
502 2 POINTER1=0;
503 2 } //开中断
504 1 }
505
506 void S1_int (void) interrupt 5 //I2C
507 {
508 1 if (S1STA==0x00)
509 1 {
510 2 FF=1;
511 2 S1CON=0xD5; //STA=0 STO=1 SI=0 AA=1
512 2 }
513 1 if (S1STA==0x08)
514 1 {
515 2 S1DAT=SLA;
516 2 S1CON=0xC5; //STA=0 STO=0 SI=0 AA=1
517 2 }
518 1 if (S1STA==0x10)
519 1 {
520 2 S1DAT=SLA;
521 2 S1CON=0xC5; //STA=0 STO=0 SI=0 AA=1
522 2 }
523 1 if (S1STA==0x18)
524 1 {
525 2 S1DAT=COMM;
526 2 S1CON=0xC5; //STA=0 STO=0 SI=0 AA=1
527 2 }
528 1 if (S1STA==0x20) // /////////////////////////////////8
529 1 {
530 2 FF=1;
531 2 S1CON=0xD5; //STA=0 STO=1 SI=0 AA=1
532 2 }
533 1 if (S1STA==0x28)
534 1 {
535 2 S1CON=0xD5; //STA=0 STO=1 SI=0 AA=1
536 2 FF=1;
537 2 }
538 1 if (S1STA==0x30) // /////////////////////////////////8
539 1 {
540 2 FF=1;
541 2 S1CON=0xD5; //STA=0 STO=1 SI=0 AA=1
542 2 }
543 1 if (S1STA==0x38)
544 1 {
545 2 S1CON=0xE5; //STA=1 STO=0 SI=0 AA=1
546 2 }
547 1 if (S1STA==0x40)
548 1 {
549 2 S1CON=0xC5; //STA=0 STO=0 SI=0 AA=1
550 2 }
C51 COMPILER V7.06 DRIVER0425 06/03/2005 15:08:33 PAGE 10
551 1 if (S1STA==0x48) // /////////////////////////////////8
552 1 {
553 2 FF=1;
554 2 S1CON=0xD5; //STA=0 STO=1 SI=0 AA=1
555 2 }
556 1 if (S1STA==0x50)
557 1 {
558 2 GET=S1DAT;
559 2 S1CON=0xC1; //STA=0 STO=0 SI=0 AA=0
560 2 }
561 1 if (S1STA==0x58)
562 1 {
563 2 FF=1;
564 2 S1CON=0xD5; //STA=0 STO=1 SI=0 AA=1
565 2 }
566 1 }
567
568 void CT0_int (void) interrupt 6 //横摆中心
569 {
570 1 CTI0=0;
571 1 CTCON=CTCON&0xFC;
572 1 if(pp.k4==OFF)
573 1 {
574 2 IEN1=IEN1&0XFE;
575 2 P4_1=0; //关8254门控信号
576 2 P4_2=1;
577 2 center_excursion=0;
578 2 }
579 1 else
580 1 {
581 2 if(decrease==1)
582 2 {
583 3 P4_1=0;
584 3 if(pp.v41<=200)
585 3 delay(2);
586 3 else if(pp.v41<=400)
587 3 delay(4);
588 3 else if(pp.v41<=600)
589 3 delay(8);
590 3 else if(pp.v41<=800)
591 3 delay(22);
592 3 else if(pp.v41<=1000)
593 3 delay(25);
594 3 else
595 3 delay(60);
596 3 if(pp.v41>=600&&pp.v41<=800)
597 3 delay(20);
598 3 temp_c++;
599 3 if(share+1+osc_adjudge<c_decrease)
600 3 {
601 4 CTCON=CTCON|0x08; //CT1下降沿
602 4 if(temp_c%2==0||first_center==1)
603 4 {
604 5 share++;
605 5 c_t42_l=pp.t42_l*5*(c_decrease-share)/c_decrease;
606 5 c_t42_r=pp.t42_r*5*(c_decrease-share)/c_decrease;
607 5 out1=last_out1*(c_decrease-share)/c_decrease;
608 5 out2=out1;
609 5
610 5 COM=0X76;
611 5 COUNT1=out1%256;
612 5 COUNT1=out1/256;
C51 COMPILER V7.06 DRIVER0425 06/03/2005 15:08:33 PAGE 11
613 5 COM=0XB6;
614 5 COUNT2=out2%256;
615 5 COUNT2=out2/256;
616 5 IEN1=IEN1|0X02;
617 5 P4_1=1;
618 5 temp_c=0;
619 5 if(first_center==1)
620 5 first_center=0;
621 5 }
622 4 else
623 4 {
624 5 IEN1=IEN1|0X02;
625 5 P4_1=1;
626 5 }
627 4 }
628 3 else
629 3 {
630 4 if(temp_c!=2)
631 4 {
632 5 CTCON=CTCON|0x08; //CT1下降沿
633 5 COM=0X76;
634 5 COUNT1=out1%256;
635 5 COUNT1=out1/256;
636 5 COM=0XB6;
637 5 COUNT2=out2%256;
638 5 COUNT2=out2/256;
639 5 IEN1=IEN1|0X02;
640 5 P4_1=1;
641 5 }
642 4 else
643 4 {
644 5 P4_1=0; //关8254门控信号
645 5 CTCON=CTCON&0XF0;
646 5 IEN1=IEN1&0XFC; //禁止CT0,CT1
647 5 decrease_ok=1;
648 5 }
649 4 }
650 3
651 3 if(decreased==0)
652 3 decreased=1;
653 3 }
654 2 else
655 2 {
656 3 if(osc==1)
657 3 {
658 4 P4_1=0;
659 4 delay(15);
660 4 if(osc_change==1)
661 4 {
662 5 out1=out1+pp.da41*10;
663 5 osc_add++;
664 5 }
665 4 else
666 4 {
667 5 out1=out1-pp.da41*10;
668 5 osc_dec++;
669 5 }
670 4 out2=out1;
671 4 CTCON=CTCON|0X08;
672 4 COM=0X76;
673 4 COUNT1=out1%256;
674 4 COUNT1=out1/256;
C51 COMPILER V7.06 DRIVER0425 06/03/2005 15:08:33 PAGE 12
675 4 COM=0XB6;
676 4 COUNT2=out2%256;
677 4 COUNT2=out2/256;
678 4 IEN1=IEN1|0X02;
679 4 P4_1=1;
680 4 osc=0;
681 4 }
682 3 CTCON=CTCON|0x08; //CT1上升沿
683 3 IEN1=IEN1|0X02; //允许CT1
684 3 }
685 2 }
686 1 }
687
688 void CT1_int (void) interrupt 7 //整个摆宽
689 {
690 1 CTI1=0;
691 1 P4_1=0; //out1、out2门控信号
692 1 CTCON=CTCON&0xF3;
693 1 if(osc_ok==0)
694 1 {
695 2 COM=0XB6;
696 2 COUNT2=out2%256;
697 2 COUNT2=out2/256;
698 2 osc_ok=1;
699 2 }
700 1 P4_3=~P4_3; //换横摆方向
701 1 t_edge=~t_edge; //换边缘标志
702 1 P4_6=~P4_6; //横摆输出
703 1 if(decreased==1)
704 1 {
705 2
706 2 if(c_t42_l<1)
707 2 c_t42_l=1;
708 2 if(c_t42_r<1)
709 2 c_t42_r=1;
710 2 IEN1=IEN1|0X10;
711 2 }
712 1 else
713 1 {
714 2 if(center_excursion==1&&judge_ok==0)
715 2 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -