⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 video_4360.lst

📁 4360音频切换
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -