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

📄 autoadj.lst

📁 车载DVD的主控MCU的源程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 192   5                                                      SetVP();
 193   5                                              }
 194   4      // 050604,Eason,End                                     
 195   4                                      }
 196   3                              }
 197   2                              else if(OldVp < NewVp){
 198   3                                      for(;OldVp<=NewVp;OldVp++){
 199   4                                              FuncBuf[pVPOSITION] = OldVp;
 200   4                                              SetVP();
 201   4                                      }
 202   3                              }else{
 203   3                                      FuncBuf[pVPOSITION] = OldVp;
 204   3                                      SetVP();
 205   3                              }
 206   2              }else{
 207   2                      Abort = 1;                      // abort
 208   2                      #if PRINT_MESSAGE
                                      printf("AutoPosition fail\n");
                              #endif
 211   2              }
 212   1              // wait for next V pulse coming to latch data
 213   1              WaitVblank();
 214   1      }
 215          /*==========================================
 216          ==========================================*/
 217          void AutoClock()
 218          {
 219   1              //preset mode total
 220   1              bit FirstDo;
 221   1              Byte H_Difference,i,Compare;
 222   1              Word H_Ref,H_Act,TempClock;
 223   1              TempClock = FuncBuf[pCLOCK];
 224   1              if(VTotal > (Vresolution + 190))        //not full screen
 225   1              {
 226   2                      NonFullScreen = 1;
 227   2                      return;
 228   2              }
 229   1              H_Ref = Hresolution;
 230   1              if(H_Ref >= FuncBuf[pCLOCK])
 231   1              {
 232   2                      Abort = 1;
 233   2                      FuncBuf[pCLOCK] = H_Ref + FuncBuf[pHPOSITION];
 234   2                      SetADC_PLL();
 235   2      //              return;
 236   2              }
 237   1              WriteWordIIC563(0x117, H_Ref);
 238   1              FirstDo = 0;
 239   1              for(i=0;i<20;i++)
C51 COMPILER V7.06   AUTOADJ                                                               12/11/2007 11:28:43 PAGE 5   

 240   1              {
 241   2                      WriteIIC563(0x106,0x01);
 242   2                      LocalTimer = 10;
 243   2                      while((ReadIIC563(0x106) & BIT_0) && LocalTimer != 0)
 244   2                      {
 245   3                              CheckModeChange();
 246   3                              if(Abort)
 247   3                                      return;
 248   3                      }
 249   2                      H_Act = ReadWordIIC563(0x110) & 0x0fff;
 250   2                      if(H_Act < (H_Ref - 124)){
 251   3                              i = 0xff;
 252   3                              break;
 253   3                      }
 254   2                      //------------------------
 255   2                      H_Difference = ReadIIC563(0x119);
 256   2                      Compare = (H_Difference & 0xC0) >> 6;
 257   2                      H_Difference = (H_Difference & 0x3F) > AutoClock_Step ? AutoClock_Step : (H_Difference & 0x3f);
 258   2                      if(Compare == 0){       //H_Act == H_Ref jacky20040326 for AutoPhasebyClock
 259   3                              if(!FirstDo){
 260   4                                      FirstDo = 1;
 261   4                                      AutoPhaseByClock();
 262   4                                      if(Abort)
 263   4                                              return;
 264   4                              }
 265   3                              else
 266   3                                      break;                          
 267   3                      }
 268   2                      if(Compare == 1)
 269   2                      {
 270   3                              FuncBuf[pCLOCK] += H_Difference;
 271   3                              if(FuncBuf[pCLOCK] > 2048)
 272   3                              {
 273   4                                      i = 0xff;
 274   4                                      break;
 275   4                              }
 276   3                      }
 277   2                      if(Compare == 2 || Compare == 3)
 278   2                      {
 279   3                              FuncBuf[pCLOCK] -= H_Difference;
 280   3                              if(FuncBuf[pCLOCK] < H_Ref)
 281   3                              {
 282   4                                      i = 0xff;
 283   4                                      break;
 284   4                              }
 285   3                      }
 286   2                      SetADC_PLL();
 287   2              }
 288   1              //printf("Clock divider 0 = %d\n",FuncBuf[pCLOCK]);
 289   1              if(i == 0xff)
 290   1              {
 291   2                      Abort = 1;
 292   2                      NonFullScreen = 1;
 293   2                      return;
 294   2              }
 295   1              else
 296   1              {
 297   2                      if(abs(FuncBuf[pCLOCK] - TempClock) > (TempClock / 11)){
 298   3                              FuncBuf[pCLOCK] = TempClock;//joe reactive  5/12
 299   3                              Abort = 1;}
 300   2                      else
 301   2                              FuncBuf[pCLOCK] = (FuncBuf[pCLOCK] + 2) & 0xfffc;
C51 COMPILER V7.06   AUTOADJ                                                               12/11/2007 11:28:43 PAGE 6   

 302   2                      FuncMax = ClockBase + 50;
 303   2                      FuncMin = ClockBase - 50;
 304   2                      if(FuncBuf[pCLOCK] > FuncMax)//over VPosition Max
 305   2                      {
 306   3                              FuncBuf[pCLOCK] = FuncMax;
 307   3                      }
 308   2                      
 309   2                      SetADC_PLL();
 310   2              }
 311   1      }
 312          /*==========================================
 313          ==========================================*/
 314          void AutoClockByPhase(bit h)
 315          {
 316   1              bit R_L,U_D;
 317   1              Byte k,temp;
 318   1              Word GoodClk;
 319   1              xdata unsigned long MaxMin,Value;
 320   1              if(h == 1)
 321   1                      LoadPresetModeSettings(2);
 322   1      
 323   1              GoodClk = FuncBuf[pCLOCK];
 324   1              SetADC_PLL();
 325   1              WaitSetup(4);
 326   1              if(Abort)
 327   1                      return;
 328   1              MaxMin = CheckPhaseData();
 329   1              temp = TempPhase;
 330   1              if(Abort)
 331   1                      return;
 332   1              U_D = 0;
 333   1              R_L = 0;
 334   1              for(k=0; k<16; k++)
 335   1              {
 336   2                      if(R_L)
 337   2                      {
 338   3                              FuncBuf[pCLOCK] += 2;
 339   3                              SetADC_PLL();
 340   3                              //printf("Clock divider 1 = %d\n",FuncBuf[pCLOCK]);
 341   3                              WaitSetup(4);
 342   3                              if(Abort)
 343   3                                      return;
 344   3                              //Sleep(25);
 345   3                              Value = CheckPhaseData();
 346   3                              //printf("Clock Value %d = %x %x\n",(unsigned short)k,(unsigned short)(Value >> 16),(unsigned short)Val
             -ue);
 347   3                              if(Abort)
 348   3                                      return;
 349   3                              if(MaxMin < Value)
 350   3                              {
 351   4                                      GoodClk = FuncBuf[pCLOCK];
 352   4                                      MaxMin = Value;
 353   4                                      temp = TempPhase;
 354   4                                      U_D = 1;
 355   4                              }
 356   3                              else
 357   3                              {
 358   4                                      if(U_D == 0)
 359   4                                      {
 360   5                                              R_L = 0;
 361   5                                              FuncBuf[pCLOCK] -= 2;
 362   5                                              U_D = 1;
C51 COMPILER V7.06   AUTOADJ                                                               12/11/2007 11:28:43 PAGE 7   

 363   5                                      }
 364   4                                      else
 365   4                                              break;
 366   4                              }
 367   3                      }
 368   2                      else{
 369   3                              FuncBuf[pCLOCK] -= 2;
 370   3                              SetADC_PLL();
 371   3                              WaitSetup(4);
 372   3                              if(Abort)
 373   3                                      return;
 374   3                              Value = CheckPhaseData();
 375   3                              if(Abort)
 376   3                                      return;
 377   3                              if(MaxMin < Value)
 378   3                              {
 379   4                                      GoodClk = FuncBuf[pCLOCK];
 380   4                                      MaxMin = Value;
 381   4                                      temp = TempPhase;
 382   4                                      U_D = 1;
 383   4                              }
 384   3                              else
 385   3                              {
 386   4                                      if(U_D == 0)
 387   4                                      {
 388   5                                              R_L = 1;
 389   5                                              FuncBuf[pCLOCK] += 2;
 390   5                                              U_D = 1;
 391   5                                      }
 392   4                                      else

⌨️ 快捷键说明

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