📄 lcd_func.lst
字号:
}
else
{
Data[0] = ucPre_V_POS - stMUD.V_POSITION;
ucPre_V_POS -= (Data[0] > MAX_V_ADJUST_STEP) ? MAX_V_ADJUST_STEP : Data[0];
}
C51 COMPILER V6.20c LCD_FUNC 04/15/2004 12:59:09 PAGE 6
stMUD.V_POSITION = ucPre_V_POS;
Adjust_V_Position();
stMUD.V_POSITION = ucPosV;
}
while (stMUD.V_POSITION != ucPre_V_POS);
#endif
312 1 }
313
314
315 void Set_Clock(void)
316 {
317 1 unsigned char ucM_Code, ucN_Code, ucTemp0, ucTemp1;
318 1
319 1 unsigned int usClock = usADC_Clock + (unsigned int)stMUD.CLOCK - 128; // Pixel clock number
320 1 unsigned long ulRate = (unsigned long)RTD_XTAL * usClock / usStdHS; // Pixel clock in kHz
321 1
322 1 // Disable Frame-Sync/APLL-Mislock watch-dog
323 1 RTDSetBit(ODD_CTRL_8E, 0xcf, 0x00);
324 1
325 1 #if (TUNE_APLL)
326 1 RTDSetBit(DV_TOTAL_STATUS_3D, 0xdf, 0x00); //Disable PE Max Measurement
327 1 RTDSetByte(DV_TOTAL_STATUS_3D,0x40); //clear PE Max value
328 1 #endif
329 1
330 1
331 1 #if (1)
332 1
333 1 // Issac
334 1 // New Method for searching suitable M/N code for PLL2
335 1
336 1 ((unsigned int *)Data)[2] = 100;
337 1
338 1 ucTemp1 = 11;
339 1 do
340 1 {
341 2 ucTemp0 = ((unsigned long)31 * APLL1_N_CODE * ucTemp1 * usClock)
342 2 / ((unsigned long)32 * APLL1_M_CODE * usStdHS);
343 2
344 2 ((unsigned int *)Data)[0] = ((unsigned long)3100 * APLL1_N_CODE * ucTemp1 * usClock)
345 2 / ((unsigned long)APLL1_M_CODE * ucTemp0 * usStdHS);
346 2
347 2 if (3240 < ((unsigned int *)Data)[0])
348 2 {
349 3 ((unsigned int *)Data)[0] = ((unsigned int *)Data)[0] - 3200;
350 3
351 3 if (((unsigned int *)Data)[2] >= ((unsigned int *)Data)[0])
352 3 {
353 4 ((unsigned int *)Data)[2] = ((unsigned int *)Data)[0];
354 4
355 4 ucM_Code = ucTemp0;
356 4 ucN_Code = ucTemp1;
357 4 }
358 3
359 3 ((unsigned int *)Data)[1] = ((unsigned long)3100 * APLL1_N_CODE * ucTemp1 * usClock)
360 3 / ((unsigned long)APLL1_M_CODE * (ucTemp0 + 1) * usStdHS);
361 3 ((unsigned int *)Data)[1] = 3200 > ((unsigned int *)Data)[1] ? 3200 - ((unsigned int *)Data)
-[1]
362 3 : ((unsigned int *)Data)[1] - 3200;
363 3
C51 COMPILER V6.20c LCD_FUNC 04/15/2004 12:59:09 PAGE 7
364 3 if (40 > ((unsigned int *)Data)[1])
365 3 {
366 4 ucM_Code = ucTemp0 + 1;
367 4 ucN_Code = ucTemp1;
368 4 break;
369 4 }
370 3
371 3 if (((unsigned int *)Data)[2] >= ((unsigned int *)Data)[1])
372 3 {
373 4 ((unsigned int *)Data)[2] = ((unsigned int *)Data)[1];
374 4
375 4 ucM_Code = ucTemp0 + 1;
376 4 ucN_Code = ucTemp1;
377 4 }
378 3 }
379 2 else
380 2 {
381 3 ucM_Code = ucTemp0;
382 3 ucN_Code = ucTemp1;
383 3 break;
384 3 }
385 2 }
386 1 while (++ucTemp1 < 48);
387 1
388 1 #else
// Issac
// Old Method for searching suitable M/N code for PLL2
((unsigned int *)Data)[0] = 500;
ucM_Code = 0;
ucN_Code = 0;
ucTemp0 = 11;
do
{
ucTemp1 = ulRate * ucTemp0 / (unsigned long)BEST_FAV_FREQ;
if (2 <= ucTemp1)
{
((unsigned long *)Data)[2] = ulRate * ucTemp0 / ucTemp1;
((unsigned int *)Data)[1] = ((unsigned long)1600 * RTD_XTAL * APLL1_M_CODE / APLL1_N_CODE)
/ ((unsigned long *)Data)[2];
if (1550 <= ((unsigned int *)Data)[1])
{
if (1570 >= ((unsigned int *)Data)[1])
{
ucN_Code = ucTemp0;
ucM_Code = ucTemp1;
break;
}
((unsigned int *)Data)[1] = ((unsigned int *)Data)[1] - 1550;
}
else
{
if (1530 <= ((unsigned int *)Data)[1])
{
ucN_Code = ucTemp0;
ucM_Code = ucTemp1;
break;
C51 COMPILER V6.20c LCD_FUNC 04/15/2004 12:59:09 PAGE 8
}
((unsigned int *)Data)[1] = 1550 - ((unsigned int *)Data)[1];
}
if (((unsigned int *)Data)[0] > ((unsigned int *)Data)[1])
{
((unsigned int *)Data)[0] = ((unsigned int *)Data)[1];
ucN_Code = ucTemp0;
ucM_Code = ucTemp1;
}
}
ucTemp1 = ucTemp1 + 1;
if (2 <= ucTemp1)
{
((unsigned long *)Data)[2] = ulRate * ucTemp0 / ucTemp1;
((unsigned int *)Data)[1] = ((unsigned long)1600 * RTD_XTAL * APLL1_M_CODE / APLL1_N_CODE)
/ ((unsigned long *)Data)[2];
if (1550 <= ((unsigned int *)Data)[1])
{
if (1570 >= ((unsigned int *)Data)[1])
{
ucN_Code = ucTemp0;
ucM_Code = ucTemp1;
break;
}
((unsigned int *)Data)[1] = ((unsigned int *)Data)[1] - 1550;
}
else
{
if (1530 <= ((unsigned int *)Data)[1])
{
ucN_Code = ucTemp0;
ucM_Code = ucTemp1;
break;
}
((unsigned int *)Data)[1] = 1550 - ((unsigned int *)Data)[1];
}
if (((unsigned int *)Data)[0] > ((unsigned int *)Data)[1])
{
((unsigned int *)Data)[0] = ((unsigned int *)Data)[1];
ucN_Code = ucTemp0;
ucM_Code = ucTemp1;
}
}
}
while (53 >= ++ucTemp0);
#endif
483 1
484 1 Data[0] = 5;
485 1 Data[1] = Y_INC;
486 1 Data[2] = PLL1_M_D7;
487 1 Data[3] = APLL1_M_CODE - 2;
C51 COMPILER V6.20c LCD_FUNC 04/15/2004 12:59:09 PAGE 9
488 1 Data[4] = APLL1_N_CODE - 2;
489 1 Data[5] = 0;
490 1 RTDWrite(Data);
491 1
492 1 RTDSetByte(I_CODE_LB_C9, 0x8c);
493 1 RTDSetByte(I_CODE_MB_CA, 0x10);
494 1 RTDSetByte(P_CODE_CB, 0x18);
495 1
496 1 usClock = usClock - 1;
497 1
498 1 RTDSetByte(PLLDIV_HI_CC, (unsigned char)(usClock >> 8));
499 1 RTDSetByte(PLL2_M_DB, ucM_Code - 2);
500 1
501 1 Wait_For_Event(EVENT_IEN_STOP);
502 1
503 1 /*
504 1 Data[0] = 4;
505 1 Data[1] = N_INC;
506 1 Data[2] = PLL2_N_DC;
507 1 Data[3] = ucN_Code - 2;
508 1 Data[4] = 4;
509 1 Data[5] = N_INC;
510 1 Data[6] = PLLDIV_LO_CD;
511 1 Data[7] = (unsigned char)usClock;
512 1 Data[8] = 0;
513 1 RTDWrite(Data);
514 1 */
515 1 RTDSetByte(PLL2_N_DC, ucN_Code - 2);
516 1 RTDSetByte(PLLDIV_LO_CD, (unsigned char)usClock);
517 1
518 1 PowerUp_ADC();
519 1
520 1 Delay_Xms(10);
521 1
522 1 Wait_For_Event(EVENT_IEN_STOP);
523 1
524 1 #if (NEW_PI_CODE)
525 1
526 1 if (ucI_Code)
527 1 {
528 2 /*
529 2 RTDSetBit(I_CODE_MB_CA, 0xdf, (ucI_Code & 0x80) ? 0x20 : 0x00);
530 2 ucI_Code = ucI_Code & 0x7f;
531 2
532 2 RTDSetByte(I_CODE_LB_C9, 0x18 | ((ucI_Code & 0x07) << 5));
533 2 RTDSetBit(I_CODE_MB_CA, 0xfc, 0x04 | ((ucI_Code & 0x18) >> 3));
534 2
535 2 RTDSetByte(P_CODE_CB, P_Code_Value);
536 2 */
537 2
538 2 RTDSetByte(I_CODE_LB_C9, 0x18 | ((ucI_Code & 0x07) << 5));
539 2 RTDSetBit(I_CODE_MB_CA, 0xdc, ((ucI_Code & 0x80) ? 0x24 : 0x04) | ((ucI_Code & 0x18) >> 3));
540 2 RTDSetByte(P_CODE_CB, P_Code_Value);
541 2 ucI_Code = ucI_Code & 0x7f;
542 2 }
543 1 else
544 1 {
545 2 // Use old PFD once
546 2 RTDSetByte(I_CODE_LB_C9, 0x1C);
547 2 RTDSetByte(I_CODE_MB_CA, 0x11);
548 2 RTDSetByte(P_CODE_CB, 0x16);
549 2 }
C51 COMPILER V6.20c LCD_FUNC 04/15/2004 12:59:09 PAGE 10
550 1
551 1 #else
ulRate = (unsigned long)RTD_XTAL * usADC_Clock / usStdHS; // Pixel clock in kHz
RTDSetByte(I_CODE_LB_C9, 0x03);
RTDSetByte(I_CODE_MB_CA, 0x00);
if (90000 < ulRate)
{
RTDSetByte(P_CODE_CB, 0x19);
}
else if (60000 < ulRate)
{
RTDSetByte(P_CODE_CB, 0x19);
}
else if (35000 < ulRate)
{
RTDSetByte(P_CODE_CB, 0x18);
Delay_Xms(2);
RTDSetByte(P_CODE_CB, 0x1a);
}
else
{
RTDSetByte(P_CODE_CB, 0x18);
Delay_Xms(2);
RTDSetByte(P_CODE_CB, 0x1a);
}
#endif
580 1
581 1 if (!bAutoInProgress) Wait_For_Event(EVENT_IVS);
582 1
583 1 #if (TUNE_APLL)
584 1 if (ucPE_Level) Delay_Xms(2);
585 1 #endif
586 1
587 1 RTDSetByte(STATUS0_01, 0x00); // Clear status
588 1 RTDSetByte(STATUS1_1F, 0x00); // Clear status
589 1
590 1
591 1 #if (AS_PLL_NONLOCK)
if (bFrameSync && bStable) RTDSetBit(ODD_CTRL_8E, 0xdf, 0x20);
#endif
594 1
595 1 #if (AS_NON_FRAMESYNC)
if (bFrameSync && bStable) RTDSetBit(ODD_CTRL_8E, 0xef, 0x10);
#endif
598 1 }
599
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -