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

📄 al242_decoder.lst

📁 基于averlogic公司的AL320的AUO 2.4" SRGB屏的驱动程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 528          {
 529   1      
 530   1              if (!bSStHvLock || bSStNoSignal)
 531   1              {
 532   2                      return FALSE;
 533   2              }
 534   1              else
 535   1              {
 536   2      
 537   2                      switch(cNewStandard)
 538   2                      {
 539   3                              case STD_NTSC_M:
 540   3                              case STD_NTSC_J:
 541   3                                      if (bSStLowSignal)
 542   3                                              
 543   3                                              return  (!bSSt625line ) ? TRUE : FALSE;
 544   3                                      else
 545   3                                              if ( gucInputChannel == INPUT2 )
 546   3                                              return  (!bSSt625line ) ? TRUE : FALSE; 
 547   3                                              return  (!bSSt625line && bSStChromaLock && !bSStFcMore && !bSStFcLess && !bSStPal) ? TRUE : FALSE;
 548   3      
 549   3                              case STD_NTSC_443:
C51 COMPILER V7.50   AL242_DECODER                                                         08/11/2008 14:05:28 PAGE 10  

 550   3                                              return  (!bSSt625line && bSStChromaLock && !bSStFcMore && !bSStFcLess && !bSStPal) ? TRUE : FALSE;
 551   3      
 552   3                              case STD_BW525:
 553   3                                      
 554   3                                      return  (!bSSt625line && bSStBwSignal ) ? TRUE : FALSE;
 555   3                                      
 556   3      
 557   3                              case STD_PAL_60:
 558   3                                      return  (!bSSt625line && bSStChromaLock && !bSStFcMore && !bSStFcLess && bSStPal) ? TRUE : FALSE;
 559   3      
 560   3                              case STD_PAL_M:
 561   3                                              
 562   3                                      return  (!bSSt625line && !bSStFcMore && !bSStFcLess && bSStPal) ? TRUE : FALSE;
 563   3      
 564   3      
 565   3      
 566   3                              case STD_PAL_I:
 567   3                                      if (bSStLowSignal)
 568   3                                              return  (bSSt625line ) ? TRUE : FALSE;
 569   3                                      else
 570   3                                              return  (bSSt625line && bSStChromaLock && !bSStFcMore && !bSStFcLess && bSStPal) ? TRUE : FALSE;
 571   3      
 572   3                              case STD_PAL_N:
 573   3                                              return  (bSSt625line && bSStChromaLock && !bSStFcMore && !bSStFcLess && bSStPal) ? TRUE : FALSE;
 574   3      
 575   3                              case STD_PAL_CN:
 576   3                                      return  (bSSt625line && bSStChromaLock && ( bSStPal || bSStSecam)) ? TRUE : FALSE;
 577   3                                      
 578   3      
 579   3                              case STD_SECAM:
 580   3                                      return  (bSSt625line && bSStChromaLock && bSStSecam ) ? TRUE : FALSE;
 581   3      
 582   3                              case STD_BW625:
 583   3                                      return  (bSSt625line && bSStBwSignal ) ? TRUE : FALSE;
 584   3      
 585   3      
 586   3      
 587   3                              default:
 588   3                                      return  FALSE;
 589   3      
 590   3                      }
 591   2                      
 592   2              }
 593   1      }
 594          
 595          void SignalStatusDisplay(void)
 596          {
 597   1              if (cPreSignalStatus != cSignalStatus)
 598   1              {
 599   2                      cPreSignalStatus = cSignalStatus;
 600   2                      signaldetectcount = 0;
 601   2                      cWaitStableCount =  WAIT_STABLE_TIME;
 602   2                      bWaitStable = 1;                
 603   2              }
 604   1              else
 605   1              {
 606   2                      if( cCurStandard== STD_SECAM) 
 607   2                      {
 608   3                              bWaitStable = 0;
 609   3                              cWaitStableCount = 0;
 610   3                      }
 611   2                      else
C51 COMPILER V7.50   AL242_DECODER                                                         08/11/2008 14:05:28 PAGE 11  

 612   2                      {
 613   3                              if(signaldetectcount > WAIT_STABLE_COUNT)       
 614   3                              {
 615   4                                      bWaitStable = 0;
 616   4                                      cWaitStableCount = 0;
 617   4                              }
 618   3                              else
 619   3                              {
 620   4                                      signaldetectcount++;
 621   4                              }
 622   3                      }
 623   2              }       
 624   1      //      printf("st4\n");
 625   1      }
 626          
 627          void    GetSignalStatus(void)
 628          {
 629   1              unsigned char cData;
 630   1              unsigned char cTemp1;
 631   1              
 632   1              unsigned int  iTemp1;
 633   1              
 634   1      
 635   1      
 636   1              cData=GetReg(SLAVE_ADDRESS_AL242,AL242REG_SIGNAL_STATUS1);
 637   1                              
 638   1              if (cData & 0x01)
 639   1              {
 640   2                      if (cNoSignalCount > NOSIGNAL_THD)
 641   2                      {
 642   3                              bSStNoSignal = TRUE;
 643   3                              cNoSignalCount = 0;
 644   3                      }
 645   2                      else
 646   2                      {
 647   3                              cNoSignalCount++;
 648   3                      }
 649   2              }
 650   1              else
 651   1              {
 652   2                      bSStNoSignal = FALSE;
 653   2                      cNoSignalCount = 0;
 654   2              }
 655   1      
 656   1              bSStHvLock = ((cData & 0x06) == 0x06) ? TRUE : FALSE;                   
 657   1              bSStChromaLock  = (cData & 0x08) ? TRUE : FALSE;                        
 658   1      
 659   1              cData=GetReg(SLAVE_ADDRESS_AL242,AL242REG_SIGNAL_STATUS3);
 660   1      
 661   1              bSStPal = (cData & 0x01) ? TRUE : FALSE;                        
 662   1              bSStSecam = (cData & 0x02) ? TRUE : FALSE;                      
 663   1              bSSt625line = (cData & 0x04) ? TRUE : FALSE;    
 664   1      
 665   1              // Repeat Read Register to filter out jitter value
 666   1              iTemp1 = REPEAT_READ_COUNT_MAX;
 667   1              while( iTemp1--)
 668   1              {
 669   2                      cData=GetReg(SLAVE_ADDRESS_AL242,AL242REG_CHROMA_FREQ_ST);
 670   2      
 671   2                      cTemp1 = cData;
 672   2                      
 673   2                      cData=GetReg(SLAVE_ADDRESS_AL242,AL242REG_CHROMA_FREQ_ST);
C51 COMPILER V7.50   AL242_DECODER                                                         08/11/2008 14:05:28 PAGE 12  

 674   2      
 675   2                      if ( cabs((signed)cData - (signed)cTemp1) < CHROMA_FREQ_TOLERANCE)
 676   2                              break;
 677   2              }
 678   1      
 679   1              bSStFcMore      = (cData >=128) && (cData < FCMORE_THD) ? TRUE : FALSE;                 
 680   1              bSStFcLess      = (cData <128) && (cData > FCLESS_THD) ? TRUE : FALSE;                  
 681   1      
 682   1      
 683   1              // Use AFE gain, HAGC and CAGC to decide pure Black & White signal
 684   1      
 685   1              // Read 16bit register value, maybe generate read error 
 686   1              // while low byte's carry add to high byte. 
 687   1              // register value toggle between 02ff to 0300,
 688   1              // read result will generate 0200, 03ff error value
 689   1      
 690   1              cData=GetReg(SLAVE_ADDRESS_AL242,AL242REG_CHROMA_AGC_HI);
 691   1              cTemp1 = cData<<3;
 692   1      
 693   1              cData=GetReg(SLAVE_ADDRESS_AL242,AL242REG_CHROMA_AGC_LO);
 694   1              cTemp1 += cData>>5;
 695   1      
 696   1              iTemp1 = cTemp1;
 697   1      
 698   1              cData=GetReg(SLAVE_ADDRESS_AL242,AL242REG_LUMA_AGC_HI);
 699   1              cTemp1 = cData<<4;
 700   1      
 701   1              cData=GetReg(SLAVE_ADDRESS_AL242,AL242REG_LUMA_AGC_LO);
 702   1              cTemp1 += cData>>4;
 703   1      
 704   1              iTemp1 *= cTemp1;
 705   1      
 706   1              cData=GetReg(SLAVE_ADDRESS_AL242,AL242REG_AFE_GAIN);
 707   1              cData &= 0x03;
 708   1      
 709   1              iTemp1 <<= cData;
 710   1      
 711   1              bSStBwSignal    = (iTemp1 > BWSIGNAL_THRESHOLD) ? TRUE : FALSE;                 
 712   1      
 713   1              cData=GetReg(SLAVE_ADDRESS_AL242,AL242REG_AFE_GAIN);
 714   1              cTemp1=GetReg(SLAVE_ADDRESS_AL242,AL242REG_LUMA_AGC_HI);
 715   1              bSStLowSignal =  (cData == AFE_GAIN_X4) && (cTemp1 > LOW_LEVEL_SIGNAL_THD) ? TRUE : FALSE;      
 716   1      
 717   1              if (bSStBwSignal || bSStNoSignal)
 718   1              {
 719   2                      bSStFcMore = FALSE;
 720   2                      bSStFcLess = FALSE;
 721   2              }
 722   1              
 723   1      
 724   1      }
 725          
 726          void StandardDetect(void)
 727          {
 728   1              unsigned char cDat,cDat1;
 729   1      
 730   1              unsigned char Page_temp;
 731   1      
 732   1              Page_temp=GetReg(SLAVE_ADDRESS_AL320,0xff);
 733   1              if (Page_temp==1)
 734   1                      {
 735   2                      SetReg(SLAVE_ADDRESS_AL320,0xff,0x00);
C51 COMPILER V7.50   AL242_DECODER                                                         08/11/2008 14:05:28 PAGE 13  

 736   2                      }
 737   1              
 738   1              GetSignalStatus();
 739   1      
 740   1              SignalStatusDisplay();
 741   1      
 742   1              
 743   1      
 744   1      
 745   1              if (bWaitStable)
 746   1              {
 747   2                      if (cWaitStableCount)
 748   2                      {
 749   3                              cWaitStableCount--;
 750   3                              return;
 751   3                      }
 752   2                      else
 753   2                      {
 754   3                              bWaitStable = FALSE;
 755   3                      }               
 756   2      
 757   2              }
 758   1              cDat=GetReg(SLAVE_ADDRESS_AL242,0x3b);
 759   1              cDat=(cDat&0x01)<<5;
 760   1              cDat1=GetReg(SLAVE_ADDRESS_AL242,0x39);
 761   1              cDat1=(cDat1&0xdf)|cDat;
 762   1              SetReg(SLAVE_ADDRESS_AL242,0x39, cDat1);
 763   1      
 764   1              
 765   1              switch (cDetectStatus)
 766   1              {
 767   2                      case NO_SIGNAL:
 768   2                              if (bSStHvLock)
 769   2                              {
 770   3                                      cDetectStatus = HV_LOCK;
 771   3                              }
 772   2                              break;
 773   2      
 774   2                      case HV_LOCK:
 775   2                              if (bSStHvLock)
 776   2                                      
 777   2                              {
 778   3                                      if (!bSStLowSignal)
 779   3                                      {
 780   4                                              if (bSSt625line)
 781   4                                              {
 782   5                                                      cDetectStatus = PRE_DETECT_625MODE1;
 783   5                                                      cNewStandard = STD_PAL_I;
 784   5                                                      bUpdateStandard = TRUE;
 785   5                                                      bWaitStable = TRUE;
 786   5                                                      cWaitStableCount =  WAIT_TIME_PRE_625MODE1;
 787   5                                              }
 788   4                                              else
 789   4                                              {
 790   5                                                      cDetectStatus = PRE_DETECT_525MODE1;
 791   5                                                      cNewStandard = STD_NTSC_M;
 792   5                                                      bUpdateStandard = TRUE;
 793   5              
 794   5                                                      bWaitStable = TRUE;
 795   5                                                      cWaitStableCount =  WAIT_TIME_PRE_525MODE1;
 796   5                                              }

⌨️ 快捷键说明

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