📄 t100.lst
字号:
515 3 {
516 4 cINC = *pString++;
517 4 cNum1 -= 1;
518 4 }
519 3 while(cNum1--)
520 3 {
521 4 I2CWriteByte(cAddr,cReg,*pString++);
522 4 cReg+=cINC;
523 4 }
524 3 }
525 2 }
526 1 }
527
528 bit Filter13(bit le)
529 {
530 1 bit r;
531 1 r=INT1;
532 1 if(le==1)
533 1 {
534 2 _nop_();
535 2 _nop_();
536 2 _nop_();
537 2 r&=INT1;
538 2 _nop_();
539 2 _nop_();
540 2 _nop_();
541 2 r&=INT1;
542 2 }
543 1 else
544 1 {
545 2 _nop_();
546 2 _nop_();
547 2 _nop_();
548 2 r|=INT1;
C51 COMPILER V7.06 T100 10/30/2005 21:46:44 PAGE 10
549 2 _nop_();
550 2 _nop_();
551 2 _nop_();
552 2 r|=INT1;
553 2 }
554 1 if(r==le)
555 1 return 1;
556 1 else
557 1 return 0;
558 1 }
559 /*遥控接收在此中断程序内完成
560 数据放在ir_data内*/
561 /************************************/
562 /* Interrupt for IR subroutine */
563 /* external interrupt source INT0 */
564 /************************************/
565 void int1Remote(void) interrupt 2
566 {
567 1 register BYTE i;
568 1 unsigned int count; /*计时变量*/
569 1 unsigned int temp0,temp1,ir_code=0;
570 1 ir_enable=TRUE;
571 1 TMOD=0x11; /*timer 0 operate in 16 bit mode*/
572 1 EX1=0;
573 1 TL0=0;
574 1 TH0=0;
575 1 TR0=1;
576 1 /************************************/
577 1 /* Detect IR Head */
578 1 /************************************/
579 1 do /*Detect IR head 9mS*/
580 1 {
581 2 count=(TL0+TH0*256); /*count :us unit */
582 2 if(Filter13(1)==1) break;
583 2 }while(count<=(IR_HEAD+DELTA));
584 1 TR0=0; /*停止计时*/
585 1
586 1 if(Filter13(0)==1||count<(IR_HEAD-DELTA*25)) /*for some noise disturb IR*/
587 1 {
588 2 ir_enable=FALSE; /* no IR head or not suitable for Ir head*/
589 2 EX1=1;
590 2 TR0=1;
591 2 return;
592 2 }
593 1 /************************************/
594 1 /* Detect OFF CODE 4.5mS */
595 1 /************************************/
596 1 while(Filter13(0)==1);
597 1 TR0=0;
598 1 TL0=0;
599 1 TH0=0;
600 1 TR0=1;
601 1 do /*Detect IR OFF CODE*/
602 1 {
603 2 count=(TL0+TH0*256); /*count :us unit */
604 2 if(Filter13(0)==1) break;
605 2 }while(count<(OFF_CODE+DELTA));
606 1 TR0=0;
607 1 count=(TL0+TH0*256); /*count :us unit */
608 1 if(count<=(OFF_CODE-DELTA*4))
609 1 {
610 2 /*重复码OFF=2.25*/
C51 COMPILER V7.06 T100 10/30/2005 21:46:44 PAGE 11
611 2 if((count>(OFF_REP-DELTA)&&count<(OFF_REP+DELTA)))
612 2 { TR0=0;
613 3 TL0=0;
614 3 TH0=0;
615 3 TR0=1;
616 3
617 3 do
618 3 {
619 4 count=(TL0+TH0*256); /*count :us unit */
620 4 if(Filter13(1)==1) break;
621 4 }while(count<=(REP_CODE+DELTA));
622 3 TR0=0;
623 3 count=(TL0+TH0*256); /*count :us unit */
624 3 if(INT1==1)
625 3 {
626 4 TR0=0;
627 4 if(
628 4 //#ifdef SINAI_REMOTE
629 4 ir_data==REMOTE_KEY_VO_DEC||ir_data==REMOTE_KEY_VO_INC||
630 4 //#endif
631 4 ir_data==REMOTE_KEY_DECR||ir_data==REMOTE_KEY_INCR )
632 4
633 4 {
634 5
635 5 ir_enable=TRUE; /*注意:ir_data不变*/
636 5 EX1=0;
637 5 }
638 4 else
639 4 {
640 5 ir_data=0;
641 5 ir_enable=FALSE;
642 5 EX1=1;
643 5 TR0=1;
644 5 }
645 4 return;
646 4 }
647 3 }
648 2 else if(count>(OFF_REP+DELTA))
649 2 {
650 3
651 3 ir_enable=TRUE; /*注意:ir_data不变*/
652 3 EX1=0;
653 3
654 3 }
655 2 else
656 2 {
657 3 ir_enable=FALSE; /*not suitable for off code*/
658 3 EX1=1;
659 3 TR0=1;
660 3 return;
661 3 }
662 2 }
663 1
664 1 /************************************/
665 1 /* Detect 16 bit address code */
666 1 /************************************/
667 1 if(ir_enable==TRUE)
668 1 {
669 2 TMOD=0x11; /*counter start with INT0 and TR0*/
670 2 ir_code=0; /*初始化变量*/
671 2 for(i=0;i<16;i++)
672 2 {
C51 COMPILER V7.06 T100 10/30/2005 21:46:44 PAGE 12
673 3 while(INT1==0);
674 3 TL0=0;
675 3 TH0=0;
676 3 TR0=1;
677 3 do
678 3 {
679 4 count=(TL0+TH0*256); /*count :us unit */
680 4 if(Filter13(0)==1) break;
681 4 }while(count<=(CODE_1_TIME+DELTA)); /*INT0为高电平时计时*/
682 3 TR0=0;
683 3 ir_code<<=1;
684 3 if((count>(CODE_1_TIME-DELTA))&&(count<=(CODE_1_TIME+DELTA))) /*detect 1 code 2.24mS-0.56mS=1.68mS*/
685 3 ir_code++;
686 3 else if((count>(CODE_0_TIME-DELTA))&&(count<=(CODE_0_TIME+DELTA))); /*detect 0 code 1.12mS-0.56mS=0.56
-mS*/
687 3 else
688 3 {
689 4 ir_enable=FALSE;
690 4 TR0=1;
691 4 break; /*not suitable for address code */
692 4 }
693 3 } /*end for*/
694 2 }
695 1 /************************************/
696 1 /* Detect 16 bit data code */
697 1 /************************************/
698 1 if(ir_enable==TRUE&&ir_code==IR_SYSTEM_CODE)/**/
699 1 {
700 2 TMOD=0x11; /*counter start with INT0 and TR0*/
701 2 ir_code=0;
702 2 for(i=0;i<16;i++)
703 2 {
704 3 while(INT1==0);
705 3 TL0=0;
706 3 TH0=0;
707 3 TR0=1;
708 3 do
709 3 {
710 4 count=(TL0+TH0*256);
711 4 if(Filter13(0)==1) break;
712 4 }while(count<=(CODE_1_TIME+DELTA)); /*INT0为高电平时计时*/
713 3 TR0=0;
714 3 //count=(TL0+TH0*256); /*count :us unit */
715 3 ir_code<<=1;
716 3 if((count>(CODE_1_TIME-DELTA))&&(count<=(CODE_1_TIME+DELTA))) /*detect 1 code 1.68mS*/
717 3 ir_code++;
718 3 else if((count>(CODE_0_TIME-DELTA)&&count<=(CODE_0_TIME+DELTA))); /*detect 0 code 0.56mS*/
719 3 else
720 3 {
721 4 ir_enable=FALSE;
722 4 TR0=1;
723 4 break; /*not suitable for address code */
724 4 }
725 3 } /*end for*/
726 2 if(ir_enable==TRUE)
727 2 {
728 3
729 3 temp0=ir_code&0xff00;
730 3 temp0=~temp0;
731 3 temp0>>=8;
732 3 temp1=ir_code&0x00ff;
733 3 if(temp0!=temp1)
C51 COMPILER V7.06 T100 10/30/2005 21:46:44 PAGE 13
734 3 ir_enable=FALSE;
735 3 else
736 3 {
737 4 ir_data=(BYTE)(temp1); /*true code effective*/
738 4 ir_enable=TRUE; /*set ir flag*/
739 4 EX1=0;
740 4 return;
741 4 }
742 3 }
743 2 }
744 1 else
745 1 { ir_enable=FALSE;
746 2 EX1=1;}
747 1 }
748 void RemoteEvent(void)
749 {
750 1 bit bTemp=0;
751 1 switch(ir_data)
752 1 {
753 2 // case REMOTE_KEY_POWER:
754 2 // bTemp=kyPOWEREvent();
755 2 // break;
756 2 case REMOTE_KEY_SOURCE:
757 2 IRSourceSelCtrl();
758 2 break;
759 2 case REMOTE_KEY_SCALER:
760 2 IRSCALEREvent();
761 2 break;
762 2 case REMOTE_KEY_AIRCABLE:
763 2 IRDismodeEvent();
764 2 break;
765 2
766 2 /* case REMOTE_KEY_DECR:
767 2 bTemp=kyDECREASEEvent();
768 2 break;
769 2 case REMOTE_KEY_INCR:
770 2 bTemp=kyINCREASEEvent();
771 2 break;
772 2 case REMOTE_KEY_MENU:
773 2 bTemp=kyMENUEvent();
774 2 break;
775 2 case REMOTE_KEY_VO_INC:
776 2 bTemp=IRVolDownKeyCtrl();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -