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

📄 iic.lst

📁 NT68521源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 295   1      }
 296          
 297          void WriteIICV_HW(unsigned char device,unsigned char addr,unsigned char ch)
 298          {
 299   1      /* start bit */
 300   1      /* transmit device */
 301   1              INTIIC1_FLG = 0xff;
C51 COMPILER V7.50   IIC                                                                   03/18/2008 22:04:55 PAGE 6   

 302   1              IIC1_DATA = device;
 303   1              IIC1_CLK = 0x20 | IIC_BaudRate;
 304   1              IIC1_CON = 0x00;
 305   1      /* transmit addr */
 306   1              MasterSendByte(addr);
 307   1      /* transmit data */
 308   1              MasterSendByteV(ch);
 309   1      /* transmit dumy data for stop bit */
 310   1              WaitTx();
 311   1      /* stop bit */
 312   1              IIC1_CLK = 0xA0|IIC_BaudRate;
 313   1      //      IIC1_CON = 0x00;
 314   1              WaitStop();
 315   1      }
 316          
 317          void MasterSendByteV(unsigned char i)
 318          {
 319   1              Timer1 = 100;
 320   1              while((INTIIC1_FLG & INTTX) == 0){
 321   2                      if(Timer1 == 0){
 322   3                              if((flag3 & BIT_2) != 0x00){
 323   4                                      printf("ACK Fail6\r\n");
 324   4                              }
 325   3                              EA = 0;
 326   3                              break;
 327   3                      }
 328   2              } 
 329   1              INTHV_FLG |= INT_V;
 330   1              Timer1 = 40;
 331   1              while(Timer1 != 0){
 332   2                      if((INTHV_FLG & INT_V) != 0)
 333   2                              break;
 334   2              }
 335   1              INTIIC1_FLG = INTTX;
 336   1              IIC1_DATA = i;
 337   1              if(Timer1 == 0){
 338   2                      BackLightOff();
 339   2                      flag2 |= BIT_0;
 340   2                      H_SYNC_Temp = 0xffff;
 341   2                      V_SYNC_Temp = 0xffff;
 342   2                      if((flag3 & BIT_2) != 0x00){
 343   3                              printf("Mode change\r\n");
 344   3                      }
 345   2              }
 346   1      }
 347          
 348          unsigned short ReadWordIIC_HW(unsigned char device,unsigned char addr)
 349          {
 350   1      unsigned char ch;
 351   1      unsigned short value;
 352   1      /* start bit */
 353   1      /* transmit device */
 354   1              INTIIC1_FLG = 0xff;
 355   1              IIC1_DATA = device;
 356   1              IIC1_CLK = 0x20 | IIC_BaudRate;
 357   1      /* transmit addr */
 358   1              MasterSendByte(addr);
 359   1      /* transmit dumy data for restart bit */
 360   1              WaitTx();
 361   1      /* stop bit */
 362   1              IIC1_CLK = 0xA0|IIC_BaudRate;
 363   1      //      IIC1_CON = 0x00;
C51 COMPILER V7.50   IIC                                                                   03/18/2008 22:04:55 PAGE 7   

 364   1      /* restart bit */
 365   1              WaitStop();
 366   1      /* transmit device */
 367   1              IIC1_DATA = device+1;
 368   1              IIC1_CLK = 0x60 | IIC_BaudRate;
 369   1              WaitTx();
 370   1      /* read data */
 371   1              IIC1_CON = 0x00;
 372   1              ch = MasterReadByte();
 373   1              IIC1_CON = 0x02;
 374   1              value = MasterReadByte();
 375   1              value <<= 8;
 376   1              value |= ch;
 377   1      /* no ack */
 378   1      /* stop bit */
 379   1      //      IIC1_CLK = 0xA0|IIC_BaudRate;
 380   1      //      IIC1_CON = 0x00;
 381   1              WaitStop();
 382   1              return(value);
 383   1      }
 384          
 385          unsigned char ReadIIC_HW(unsigned char device,unsigned char addr)
 386          {
 387   1      unsigned char value;
 388   1      /* start bit */
 389   1      /* transmit device */
 390   1              INTIIC1_FLG = 0xff;
 391   1              IIC1_DATA = device;
 392   1              IIC1_CLK = 0x20 | IIC_BaudRate;
 393   1      /* transmit addr */
 394   1              MasterSendByte(addr);
 395   1      /* transmit dumy data for restart bit */
 396   1              WaitTx();
 397   1      /* stop bit */
 398   1              IIC1_CLK = 0xA0 | IIC_BaudRate;
 399   1      //      IIC1_CON = 0x00;
 400   1      /* restart bit */
 401   1              Delay();
 402   1              WaitStop();
 403   1      /* transmit device */
 404   1              IIC1_DATA = device+1;
 405   1              IIC1_CLK = 0x60 | IIC_BaudRate;
 406   1              WaitTx();
 407   1      /* read data */
 408   1              IIC1_CON = 0x02;
 409   1              value = MasterReadByte();
 410   1      /* no ack */
 411   1      /* stop bit */
 412   1      //      IIC1_CLK = 0xA0|IIC_BaudRate;
 413   1      //      IIC1_CON = 0x00;
 414   1              Delay();
 415   1              WaitStop();
 416   1              return(value);
 417   1      }
 418          
 419          void InitTuner(void)
 420          {
 421   1              INTIIC1_FLG = 0xff;
 422   1              IIC1_DATA = 0xc0;
 423   1              IIC1_CLK = 0x20 | IIC_BaudRate;
 424   1              IIC1_CON = 0x00;
 425   1              MasterSendByte(INITFREQHIGH);
C51 COMPILER V7.50   IIC                                                                   03/18/2008 22:04:55 PAGE 8   

 426   1              MasterSendByte(INITFREQLOW);
 427   1              MasterSendByte(CONTROLBYTE0);
 428   1              MasterSendByte(CONTROLBYTE1);
 429   1              WaitTx();
 430   1              IIC1_CLK = 0xA0|IIC_BaudRate;
 431   1              WaitStop();
 432   1      }
 433          
 434          void SetTuner(unsigned char db1,unsigned char db2,unsigned char cb,unsigned char pb)
 435          {
 436   1              INTIIC1_FLG = 0xff;
 437   1              IIC1_DATA = 0xc0;
 438   1              IIC1_CLK = 0x20 | IIC_BaudRate;
 439   1              IIC1_CON = 0x00;
 440   1              MasterSendByte(db1);
 441   1              MasterSendByte(db2);
 442   1              MasterSendByte(cb);
 443   1              MasterSendByte(pb);
 444   1              WaitTx();
 445   1              IIC1_CLK = 0xA0|IIC_BaudRate;
 446   1              WaitStop();
 447   1      }
 448          
 449          unsigned char ReadIIC_Tuner()
 450          {
 451   1      unsigned char value;
 452   1              INTIIC1_FLG = 0xff;
 453   1              IIC1_DATA = 0xc0;
 454   1              IIC1_CLK = 0x20 | IIC_BaudRate;
 455   1      //      MasterSendByte(addr);
 456   1              WaitTx();
 457   1              IIC1_CLK = 0xA0 | IIC_BaudRate;
 458   1              WaitStop();
 459   1              IIC1_DATA = 0xc1;
 460   1              IIC1_CLK = 0x60 | IIC_BaudRate;
 461   1              WaitTx();
 462   1              IIC1_CON = 0x02;
 463   1              value = MasterReadByte();
 464   1              WaitStop();
 465   1              return(value);
 466   1      }
 467          
 468          unsigned char MasterReadByte(void)
 469          {
 470   1      unsigned char i;
 471   1              while((INTIIC1_FLG & (INTRX | INTNAK)) != INTRX){
 472   2                      if((INTIIC1_FLG & INTNAK) == INTNAK){
 473   3                              if((flag3 & BIT_2) != 0x00){
 474   4                                      printf("ACK Fail4\r\n");
 475   4                              }
 476   3                              EA = 0;
 477   3                              break;
 478   3                      }
 479   2              }; 
 480   1              INTIIC1_FLG = INTRX;
 481   1              i = IIC1_DATA;
 482   1              return i;
 483   1      }
 484          
 485          void WaitStop(void)
 486          {
 487   1              Timer1 = 100;
C51 COMPILER V7.50   IIC                                                                   03/18/2008 22:04:55 PAGE 9   

 488   1              while((IIC1_CON & STOP) == 0)
 489   1              {
 490   2                      if(Timer1 == 0)
 491   2                      {
 492   3                              if((flag3 & BIT_2) != 0x00)
 493   3                              {
 494   4                                      printf("Stop Fail\r\n");
 495   4                              }
 496   3                              EA = 0;
 497   3                              break;
 498   3                      }
 499   2              }
 500   1              IIC1_CON = 0x00;
 501   1      }
 502          
 503          void CheckDevice(void)
 504          {
 505   1              DeviceFlag = 0;
 506   1      //check SAA7114
 507   1              if((flag3 & BIT_2) != 0x00){
 508   2                      printf("Video Decoder ");
 509   2              }
 510   1              Sleep(10);
 511   1              if(TestIIC_HW(SAA7114) == 0)
 512   1         {
 513   2                      DeviceFlag &= ~BIT_0;
 514   2         }
 515   1              else
 516   1          {
 517   2                      DeviceFlag |= BIT_0;
 518   2          }
 519   1      }
 520          
 521          void TestTuner(void)
 522          {
 523   1              Sleep(10);
 524   1              if(TestIIC_HW(TUNER_ID) == 0)
 525   1                      DeviceFlag &= ~BIT_1;
 526   1              else
 527   1                      DeviceFlag |= BIT_1;
 528   1      }
 529          
 530          unsigned char TestIIC_HW(unsigned char device)
 531          {
 532   1      unsigned char value;
 533   1      // start bit 
 534   1      // transmit device 
 535   1              INTIIC1_FLG = 0xff;//Read
 536   1              IIC1_DATA = device + 1;
 537   1              IIC1_CLK = 0x60 | IIC_BaudRate;//IIC_Baudrate=0x01
 538   1      //      IIC1_CON = 0x00;
 539   1              Timer1 = 100;
 540   1              while((INTIIC1_FLG & INTTX) == 0)
 541   1              {
 542   2                      if(Timer1 == 0)
 543   2                      {
 544   3                              break;
 545   3                      }
 546   2              } 
 547   1              INTIIC1_FLG = INTTX;
 548   1      // read data 
 549   1              IIC1_CON = 0x02;
C51 COMPILER V7.50   IIC                                                                   03/18/2008 22:04:55 PAGE 10  

 550   1              Timer1 = 100;
 551   1              while((INTIIC1_FLG & INTRX) == 0)
 552   1              {
 553   2                      if(Timer1 == 0)
 554   2                              break;
 555   2              }
 556   1              if(Timer1 == 0)
 557   1              {
 558   2                      IIC1_CLK = 0xA0|IIC_BaudRate;
 559   2                      IIC1_CON = 0x00;
 560   2                      value = 0;
 561   2                      if((flag3 & BIT_2) != 0x00)
 562   2                      {
 563   3                              printf("not install\r\n");
 564   3                      }
 565   2              }
 566   1              else
 567   1              {
 568   2                      value = IIC1_DATA;
 569   2                      value |= BIT_1;
 570   2                      // no ack 
 571   2                      // stop bit 
 572   2                      //      IIC1_CLK = 0xA0|IIC_BaudRate;
 573   2                      //      IIC1_CON = 0x00;
 574   2                      WaitStop();
 575   2                      if((flag3 & BIT_2) != 0x00){
 576   3                              printf("install\r\n");
 577   3                      }
 578   2              }
 579   1              return(value);
 580   1      }
 581          
 582          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1633    ----
   CONSTANT SIZE    =    152    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      38
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -