📄 autofunc.lst
字号:
C51 COMPILER V7.50 AUTOFUNC 03/18/2008 22:29:08 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE AUTOFUNC
OBJECT MODULE PLACED IN ..\1out\AutoFunc.obj
COMPILER INVOKED BY: D:\设计软件\Keil\C51\BIN\C51.EXE ..\SCALER\AutoFunc.c BROWSE INCDIR(..\INC\;..\PANEL\;..\UI\;..\OPT
-ION\;..\SCALER\DSP\) DEFINE(MCU_TYPE_SEL=0) DEBUG OBJECTEXTEND PRINT(..\1out\AutoFunc.lst) OBJECT(..\1out\AutoFunc.obj)
line level source
1 /******************************************************************************
2 Copyright (c) 2005 MStar Semiconductor, Inc.
3 All rights reserved.
4
5 [Module Name]: AutoFunc.c
6 [Date]: 12-Jan-2005
7 [Comment]:
8 Auto adjust functions for VGA input.
9 [Reversion History]:
10 *******************************************************************************/
11 #define _AUTOFUNC_C_
12
13 /********************
14 * INCLUDE FILES *
15 *********************/
16 #include "Project.h"
17 #include "Ms7X_reg.h"
18 #include "Mcu.h"
19 #include "TypeDef.h"
20 #include "Ms_RWreg.h"
21 #include "Debug.h"
22 #include "Misc.h"
23 #include "AutoFunc.h"
24 #include "Ms_Func.h"
25 #include "Global.h"
26 #include <math.h>
27
28 #if USE_VGA
void mstAutoColor(void)
{
BYTE ucDbfc;
#if (RS232DBG&MSG_WHITEBLANCE)
sysWriteString(tChangeLine);
sysWriteString("-- AutoColor Start --");
#endif
ucDbfc=mstReadByte(BK0_01_DBFC);
mstWriteByte(GEN_00_REGBK,REGBANKSCALER);
mstWriteByte(BK0_C8_ATGCTRL,0x11);
mstWriteByte(BK0_C9_ATGST,0x00);
mstWriteByte(BK0_01_DBFC,0x00);
mstAutoOffset();
mstAutoGain();
mstWriteByte(GEN_00_REGBK,REGBANKSCALER);
mstWriteByte(BK0_01_DBFC,ucDbfc);
#if (RS232DBG&MSG_WHITEBLANCE)
sysWriteString(tChangeLine);
C51 COMPILER V7.50 AUTOFUNC 03/18/2008 22:29:08 PAGE 2
sysWriteString("-- AutoColor End --");
#endif
}
void mstAutoOffset(void)
{
BYTE ucRedOffset,ucGreenOffset,ucBlueOffset;
BYTE ucMaxRedOffset,ucMaxGreenOffset,ucMaxBlueOffset;
BYTE ucMinRedOffset,ucMinGreenOffset,ucMinBlueOffset;
BYTE ucRedValue,ucGreenValue,ucBlueValue;
BYTE ucRetry;
BYTE ucVsyncTime;
ucVsyncTime=mstGetVSyncTime();
ucMaxRedOffset=ucMaxGreenOffset=ucMaxBlueOffset=0xff;
ucMinRedOffset=ucMinGreenOffset=ucMinBlueOffset=0x00;
#if (RS232DBG&MSG_WHITEBLANCE)
sysWriteString(tChangeLine);
sysWriteString("-- Adjust offset --");
sysWriteString(tChangeLine);
sysWriteString("ADC_MAX_VALUE=0x");sysWriteHex(ADC_MAX_VALUE,0);
sysWriteString(", ADC_MIN_VALUE=0x");sysWriteHex(ADC_MIN_VALUE,0);
sysWriteString(tChangeLine);
sysWriteString("ucVsyncTime=");sysWriteDec(ucVsyncTime);
#endif
ucRetry=8;
while (ucRetry--)
{
ucRedOffset=((WORD)ucMaxRedOffset+ucMinRedOffset)/2;
ucGreenOffset=((WORD)ucMaxGreenOffset+ucMinGreenOffset)/2;
ucBlueOffset=((WORD)ucMaxBlueOffset+ucMinBlueOffset)/2;
mstSetAdcRedOffset(ucRedOffset);
mstSetAdcGreenOffset(ucGreenOffset);
mstSetAdcBlueOffset(ucBlueOffset);
miscDelay1ms(ucVsyncTime);
mstWaitAutoStatusReady(BK0_C8_ATGCTRL,ATGR_B);
#if 0
mstWriteByte(BK0_CA_ATFCHSEL,MIN_R);
ucRedValue=mstReadByte(BK0_CD_ATGVALUE);
mstWriteByte(BK0_CA_ATFCHSEL,MIN_G);
ucGreenValue=mstReadByte(BK0_CD_ATGVALUE);
mstWriteByte(BK0_CA_ATFCHSEL,MIN_B);
ucBlueValue=mstReadByte(BK0_CD_ATGVALUE);
#endif
mstWriteByte(BK0_CA_ATFCHSEL,MIN_R);
miscDelay1ms(20); //20050908 mask
ucRedValue=mstReadByte(BK0_CD_ATGVALUE);
if (ucRedValue<ADC_MIN_VALUE)
ucMaxRedOffset=ucRedOffset;
else
ucMinRedOffset=ucRedOffset;
C51 COMPILER V7.50 AUTOFUNC 03/18/2008 22:29:08 PAGE 3
mstWriteByte(BK0_CA_ATFCHSEL,MIN_G);
miscDelay1ms(20); //20050908 mask
ucGreenValue=mstReadByte(BK0_CD_ATGVALUE);
if (ucGreenValue<ADC_MIN_VALUE)
ucMaxGreenOffset=ucGreenOffset;
else
ucMinGreenOffset=ucGreenOffset;
mstWriteByte(BK0_CA_ATFCHSEL,MIN_B);
miscDelay1ms(20); //20050908 mask
ucBlueValue=mstReadByte(BK0_CD_ATGVALUE);
if (ucBlueValue<ADC_MIN_VALUE)
ucMaxBlueOffset=ucBlueOffset;
else
ucMinBlueOffset=ucBlueOffset;
miscDelay1ms(100); //20050908 mask
#if (RS232DBG&MSG_WHITEBLANCE)
sysWriteString(tChangeLine);
sysWriteString("ROfst=0x");sysWriteHex(ucRedOffset,0);
sysWriteString(",GOfst=0x");sysWriteHex(ucGreenOffset,0);
sysWriteString(",BOfst=0x");sysWriteHex(ucBlueOffset,0);
sysWriteString(",RVal=0x");sysWriteHex(ucRedValue,0);
sysWriteString(",GVae=0x");sysWriteHex(ucGreenValue,0);
sysWriteString(",BVal=0x");sysWriteHex(ucBlueValue,0);
#endif
}
Display.ucVgaRedOffset=ucRedOffset;
Display.ucVgaGreenOffset=ucGreenOffset;
Display.ucVgaBlueOffset=ucBlueOffset;
miscDelay1ms(300); //20050908 mask
#if (RS232DBG&MSG_WHITEBLANCE)
sysWriteString(tChangeLine);
sysWriteString("-- Adjust offset End --");
#endif
}
void mstAutoGain(void)
{
BYTE ucRedGain,ucGreenGain,ucBlueGain;
BYTE ucMaxRedGain,ucMaxGreenGain,ucMaxBlueGain;
BYTE ucMinRedGain,ucMinGreenGain,ucMinBlueGain;
BYTE ucRedValue,ucGreenValue,ucBlueValue;
BYTE ucRetry;
BYTE ucVsyncTime;
ucVsyncTime=mstGetVSyncTime();
ucMaxRedGain=ucMaxGreenGain=ucMaxBlueGain=0xff;
ucMinRedGain=ucMinGreenGain=ucMinBlueGain=0x00;
#if (RS232DBG&MSG_WHITEBLANCE)
sysWriteString(tChangeLine);
sysWriteString("-- Adjust gain --");
sysWriteString(tChangeLine);
sysWriteString("ucVsyncTime=");sysWriteDec(ucVsyncTime);
C51 COMPILER V7.50 AUTOFUNC 03/18/2008 22:29:08 PAGE 4
#endif
ucRetry=8;
while (ucRetry--)
{
ucRedGain=((WORD)ucMaxRedGain+ucMinRedGain)/2;
ucGreenGain=((WORD)ucMaxGreenGain+ucMinGreenGain)/2;
ucBlueGain=((WORD)ucMaxBlueGain+ucMinBlueGain)/2;
mstSetAdcRedGain(ucRedGain);
mstSetAdcGreenGain(ucGreenGain);
mstSetAdcBlueGain(ucBlueGain);
miscDelay1ms(ucVsyncTime);
mstWaitAutoStatusReady(BK0_C8_ATGCTRL,ATGR_B);
#if 0
mstWriteByte(BK0_CA_ATFCHSEL,MAX_R);
ucRedValue=mstReadByte(BK0_CD_ATGVALUE);
mstWriteByte(BK0_CA_ATFCHSEL,MAX_G);
ucGreenValue=mstReadByte(BK0_CD_ATGVALUE);
mstWriteByte(BK0_CA_ATFCHSEL,MAX_B);
ucBlueValue=mstReadByte(BK0_CD_ATGVALUE);
#endif
mstWriteByte(BK0_CA_ATFCHSEL,MAX_R);
miscDelay1ms(20); //20050908 mask
ucRedValue=mstReadByte(BK0_CD_ATGVALUE);
if (ucRedValue>ADC_MAX_VALUE)
ucMinRedGain=ucRedGain;
else
ucMaxRedGain=ucRedGain;
mstWriteByte(BK0_CA_ATFCHSEL,MAX_G);
miscDelay1ms(20); //20050908 mask
ucGreenValue=mstReadByte(BK0_CD_ATGVALUE);
if (ucGreenValue>ADC_MAX_VALUE)
ucMinGreenGain=ucGreenGain;
else
ucMaxGreenGain=ucGreenGain;
mstWriteByte(BK0_CA_ATFCHSEL,MAX_B);
miscDelay1ms(20); //20050908 mask
ucBlueValue=mstReadByte(BK0_CD_ATGVALUE);
if (ucBlueValue>ADC_MAX_VALUE)
ucMinBlueGain=ucBlueGain;
else
ucMaxBlueGain=ucBlueGain;
miscDelay1ms(300); //20050908 mask
#if (RS232DBG&MSG_WHITEBLANCE)
sysWriteString(tChangeLine);
sysWriteString("RGain=0x");sysWriteHex(ucRedGain,0);
sysWriteString(",GGain=0x");sysWriteHex(ucGreenGain,0);
sysWriteString(",BGain=0x");sysWriteHex(ucBlueGain,0);
C51 COMPILER V7.50 AUTOFUNC 03/18/2008 22:29:08 PAGE 5
sysWriteString(",RVal=0x");sysWriteHex(ucRedValue,0);
sysWriteString(",GVal=0x");sysWriteHex(ucGreenValue,0);
sysWriteString(",BVal=0x");sysWriteHex(ucBlueValue,0);
#endif
}
Display.ucVgaRedGain=ucRedGain;
Display.ucVgaGreenGain=ucGreenGain;
Display.ucVgaBlueGain=ucBlueGain;
#if (RS232DBG&MSG_WHITEBLANCE)
mstWriteByte(BK0_CA_ATFCHSEL,MAX_R);
ucRedValue=mstReadByte(BK0_CD_ATGVALUE);
mstWriteByte(BK0_CA_ATFCHSEL,MAX_G);
ucGreenValue=mstReadByte(BK0_CD_ATGVALUE);
mstWriteByte(BK0_CA_ATFCHSEL,MAX_B);
ucBlueValue=mstReadByte(BK0_CD_ATGVALUE);
mstWriteByte(BK0_CA_ATFCHSEL,MIN_R);
ucRedValue=mstReadByte(BK0_CD_ATGVALUE);
mstWriteByte(BK0_CA_ATFCHSEL,MIN_G);
ucGreenValue=mstReadByte(BK0_CD_ATGVALUE);
mstWriteByte(BK0_CA_ATFCHSEL,MIN_B);
ucBlueValue=mstReadByte(BK0_CD_ATGVALUE);
miscDelay1ms(300); //20050908 mask
sysWriteString(tChangeLine);
sysWriteString("rOffsetValue=0x");sysWriteHex(ucRedValue,0);
sysWriteString(", gOffsetValue=0x");sysWriteHex(ucGreenValue,0);
sysWriteString(", bOffsetValue=0x");sysWriteHex(ucBlueValue,0);
sysWriteString(tChangeLine);
sysWriteString("-- Adjust gain End --");
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -