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

📄 autofunc.lst

📁 MST720-DEMO程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
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 + -