📄 video_4360.lst
字号:
531
532 /**********************IIC总线处理程序**********/
533 /*
534 void I2C_handle_write(void)
535 {
536
537 input_state = 0x09;//测试
538
539 i2c_start(); //发送起始位
540 IICSendByte(0x02);;//发送从器件地址+W
541 //while(i2c_sack()); //应答位检查,正常返回0,不正常返回1
542 //做了修改,防止死机处理,程序如下
543 //IICSendByte(input_state);//发送数据:input_state
544 if(!i2c_sack())
545 {
546 IICSendByte(input_state);
547 OK_i2cflag=1;
548 if(!i2c_sack())
549 {
550 OK_i2cflag=1;
C51 COMPILER V7.05 VIDEO_4360 05/21/2007 16:31:21 PAGE 10
551 }
552 else OK_i2cflag=0;
553 }
554 else OK_i2cflag=0;
555 //while(i2c_sack()); //应答位检查,正常返回0,不正常返回1
556 i2c_stop(); //发送停止位
557
558
559 }
560 */
561 void I2C_handle_read(void)
562 {
563 1 data_i2c = 0;
564 1
565 1 i2c_start(); //发送起始位
566 1 IICSendByte(0x03);//发送从器件地址+R
567 1 //while(i2c_sack()); //应答位检查,正常返回0,不正常返回1
568 1 //做了修改,防止死机处理,程序如下
569 1 if(!i2c_sack())
570 1 {
571 2 data_i2c = IICReceiveByte();//接收从器件发送的数据
572 2 OK_i2cflag=1;//i2C操作成功标志
573 2
574 2 }
575 1 else
576 1 {
577 2 OK_i2cflag=0;
578 2 }
579 1 IICNoAck(); //发送反态应答位
580 1 i2c_stop(); //发送停止位
581 1
582 1 }
583
584 void I2C_cmd_4460(void)
585 {
586 1 if(data_i2c&0x80) //命令接收正确,且发生更新
587 1 {
588 2 data_i2c_bak= data_i2c;//更新备用数据
589 2
590 2 if(data_i2c&0x40) //手动
591 2 {
592 3 //监控频道 D2D1D0(data_i2c)
593 3 data_i2c_test = data_i2c&0x07;
594 3 set_4460_A(data_i2c_test);//打开A0,A1对应输出
595 3
596 3
597 3 //录像频道 D5D4D3(data_i2c)
598 3
599 3 data_i2c_test = (data_i2c>>3)&0x07;//连接Vin?
600 3 set_4460_B(data_i2c_test);//打开A0,A1对应输出
601 3 }
602 2 else //自动
603 2 {
604 3 //监控频道 D2D1D0(data_i2c)
605 3 data_i2c_test = ((data_i2c&0x07)<<4)&0x70;//连接Vin?
606 3 set_4460_A(data_i2c_test);//打开A0,A1对应输出
607 3 //录像频道 靠音频
608 3 }
609 2 }
610 1 }
611
612 void I2C_data_handle(void)
C51 COMPILER V7.05 VIDEO_4360 05/21/2007 16:31:21 PAGE 11
613 {
614 1
615 1 if(OK_i2cflag) //I2C 操作正确
616 1 {
617 2 if(data_i2c != data_i2c_bak)//数据发生更新
618 2 {
619 3 I2C_cmd_4460();
620 3 }
621 2 }
622 1
623 1 }
624
625 /*
626 void I2C_data_handle_new(void)
627 {
628
629 if(OK_i2cflag) //I2C 操作正确
630 {
631 if(data_i2c&0x80) //命令接收正确,数据发生更新
632 {
633
634 if(data_i2c&0x40) //手动
635 {
636 //监控频道 D2D1D0(data_i2c)
637 VA0=0;
638 VA1=0;//定址00
639 //cmd_4460(0xd0); //全关
640 test_4460();
641 cmd_4460(0xB0); //关闭A0,A1对应输出
642 cmd_4460(((data_i2c&0x07)<<4)&0x70); //连接Vin?
643 cmd_4460(0xC0); //打开A0,A1对应输出
644 delay(10);
645 //录像频道 D5D4D3(data_i2c)
646 VA0=1;
647 VA1=0;//定址01
648 cmd_4460(0xB0); //关闭A0,A1对应输出
649 cmd_4460(((data_i2c&0x38)<<1)&0x70); //连接Vin?
650 cmd_4460(0xC0); //打开A0,A1对应输出
651 delay(10);
652 }
653 else //自动
654 {
655 //监控频道 D2D1D0(data_i2c)
656 VA0=0;
657 VA1=0;//定址00
658 cmd_4460(0xB0); //关闭A0,A1对应输出
659 cmd_4460(((data_i2c&0x07)<<4)&0x70); //连接Vin?
660 cmd_4460(0xC0); //打开A0,A1对应输出
661 //录像频道 靠音频
662 }
663 }
664 }
665
666 }
667 */
668
669 void I2C_handle(void)
670 {
671 1
672 1 //I2C_handle_write();
673 1 I2C_handle_read();
674 1 ///data_i2c = 0xC4;//ADDED CODE, FOR DEBUG
C51 COMPILER V7.05 VIDEO_4360 05/21/2007 16:31:21 PAGE 12
675 1 //data_i2c = 0xDC;//ADDED CODE, FOR DEBUG
676 1 I2C_data_handle();
677 1 //I2C_data_handle_new();
678 1
679 1 }
680
681 void ISR_time1(void) interrupt 3
682 {
683 1
684 1 TR1=0;
685 1 TH1=0xD8;
686 1 TL1=0xF0;
687 1 if(count_i2c < I2C_COUNTSUM)
688 1 count_i2c++;
689 1 else
690 1 {
691 2
692 2 EA=0;
693 2 count_i2c = 0;
694 2 I2C_handle();//IIC总线处理程序
695 2 //delay();
696 2 EA=1;
697 2
698 2 }
699 1
700 1 TR1=1;
701 1
702 1 }
703
704
705
706 void init_io(void)
707 {
708 1 WDTCN=0xDE;
709 1 WDTCN=0xAD; //关看门狗
710 1 OSCICN=0x06; //用片内时钟,8M Hz
711 1
712 1 PRT0CF=0x0F0;
713 1 PRT1CF=0x0E0;
714 1 PRT2CF=0x0F0; //P2低4位推挽输出。
715 1
716 1 IT0=1;
717 1 EX0=1;
718 1 PX0=1;
719 1
720 1 TMOD=0x01;
721 1 TH0=-(CHECK_TIME*FOSC/12)/256;
722 1 TL0=-(CHECK_TIME*FOSC/12)%256;
723 1 ET0=0;
724 1 TR0=0; //配置TIME0
725 1
726 1 TMOD=TMOD|0x10;
727 1 TH1=0xD8;
728 1 TL1=0xF0;
729 1 ET1=1;
730 1 TR1=1; //配置TIME1
731 1
732 1
733 1 }
734 void main(void)
735 {
736 1 init_io();
C51 COMPILER V7.05 VIDEO_4360 05/21/2007 16:31:21 PAGE 13
737 1 init_4460();
738 1
739 1 EA=1;
740 1 cmd_4460(0xd0); //全关
741 1
742 1 //test_4460();
743 1 //set_4460_A(3);
744 1 //set_4460_B(4);
745 1
746 1
747 1 while(1);
748 1
749 1 /*
750 1 while(1)
751 1 {
752 1 if(!MID1)
753 1 {
754 1 if(count_mid1!=0xff)count_mid1++;
755 1 }
756 1 if(!MID2)
757 1 {
758 1 if(count_mid2!=0xff)count_mid2++;
759 1 }
760 1 if(!MID3)
761 1 {
762 1 if(count_mid3!=0xff)count_mid3++;
763 1 }
764 1 if(!MID4)
765 1 {
766 1 if(count_mid4!=0xff)count_mid4++;
767 1 }
768 1 if(!MID5)
769 1 {
770 1 if(count_mid5!=0xff)count_mid5++;
771 1 }
772 1 if(!MID6)
773 1 {
774 1 if(count_mid6!=0xff)count_mid6++;
775 1 }
776 1 if(!MID7)
777 1 {
778 1 if(count_mid7!=0xff)count_mid7++;
779 1 }
780 1 // for(i=0;i<254;i++);
781 1 }
782 1
783 1 */
784 1
785 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 842 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 ----
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -