osdctrl.lst

来自「采用台湾MRT晶捷公司的MRT4方案的液晶电视的程序」· LST 代码 · 共 1,185 行 · 第 1/5 页

LST
1,185
字号
C51 COMPILER V6.23a  OSDCTRL                                                               09/10/2004 16:09:03 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE OSDCTRL
OBJECT MODULE PLACED IN OSDCTRL.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE OSDCTRL.C OPTIMIZE(6,SIZE) ORDER DEFINE(DEBUGMSG=0,DEBUGTOOL=0) DEBUG OBJEC
                    -TEXTEND CODE SYMBOLS

stmt level    source

   1          /************************************************
   2          *                                               *
   3          * OSDCTRL.C:  OSD control routines.             *
   4          *                                               *
   5          *************************************************/
   6          #include <reg51.h>
   7          #include <math.h>
   8          #include "mascot.h"
   9          #include "OSD.h"
  10          #include "osd_data.h"
  11          #include "prg_font.h"
  12          #include "global.h"
  13          
  14          
  15          
  16          
  17          
  18          /************************************************
  19          * intialize OSD registers                       *
  20          *************************************************/
  21          void osd_init(void)
  22          {
  23   1      
  24   1              statusBefore = 0x1F;
  25   1      
  26   1              /* initialize OSD control regs */
  27   1              OSDRegDataOut(0x00, osdInitData, sizeof(osdInitData));
  28   1      
  29   1              /* initialize palette */
  30   1              PortDataOut(0x00, PORT_PALETTE, PaletteData, sizeof(PaletteData) / sizeof(char));
  31   1      
  32   1      
  33   1      
  34   1      
  35   1              /* Define Color Key PaletteData No.4*/
  36   1              RegByteOut(0xC0, 0xBC);         // Select OSD Registers
  37   1              RegBitOut(0x80, 0x00, 0x00);    //disable transparency color
  38   1              RegByteOut(0x83, 0xF8);         //OR83 - Color Key B[7:3]
  39   1              RegByteOut(0x84, 0xF8);         //OR84 - Color Key G[7:3]
  40   1              RegByteOut(0x85, 0x00);         //OR85 - Color Key R[7:3]
  41   1              RegBitOut(0x75, 0x00, 0x20);    //OR80 - P-Font as Color font
  42   1              RegByteOut(0xC0, 0x3C); // Select Normal Registers
  43   1      
  44   1      
  45   1              /* check ID */
  46   1              miscDelay(50);
  47   1              eepDataIn(EEPHEADSTART, buff, 4);
  48   1      
  49   1      #if DEBUGMSG    
                      printf("%c %c %c %c\n",buff[0],buff[1],buff[2],buff[3]);
              #endif    
  52   1      
  53   1      
  54   1      
C51 COMPILER V6.23a  OSDCTRL                                                               09/10/2004 16:09:03 PAGE 2   

  55   1              if( (buff[0]==osdID[0]) && (buff[1]==osdID[1]) && (buff[2]==osdID[2]) && (buff[3]==osdID[3]) )
  56   1              {
  57   2                      /* load OSD data from EEPROM */
  58   2                      eepDataIn(EEPDATASTART, (unsigned char *)&eepData, EEPDATASIZE);
  59   2              }
  60   1              else if( buff[0]==0xff && buff[1]==0xff && buff[2]==0xff && buff[3]==0xff )             //20030221
  61   1              {
  62   2                      /* reset eeprom */
  63   2                      ResetEEPROM(RSTCOLOR+RSTEEP+RSTUSER+RSTPOT);
  64   2                      eepData.colorPos = COLOR_USER;
  65   2                      eepDataOut(EEPDATASTART+(&eepData.colorPos-&eepData),(unsigned char *)&eepData.colorPos, 1);     
             -                   
  66   2              }
  67   1              else 
  68   1              {
  69   2                      /* reset eeprom */
  70   2                      ResetEEPROM(RSTEEP+RSTUSER+RSTCOLOR);
  71   2              }    
  72   1      
  73   1              setColorRGB(EEP_DATA);
  74   1              setEepData();
  75   1      
  76   1      }
  77          
  78          
  79          /************************************************
  80          * create the first main menu pattern            *
  81          *************************************************/
  82          void informationMenu(void)
  83          {
  84   1      
  85   1              if (FactoryFlag)
  86   1              {
  87   2      //              PortDataOut((MainMenuCols+1)*3+6, UPDATE_ATTR, factmessageATTRData,sizeof(factmessageATTRData) / sizeo
             -f(char));
  88   2                      SetOSDData((MainMenuCols+1)*3+6, UPDATE_ATTR, 0x36, 15);
  89   2                      PortDataOut((MainMenuCols+1)*3+6, UPDATE_CODE, factmessageData, sizeof(factmessageData) / sizeof(char));
  90   2                      showPotTimer();
  91   2              }
  92   1      
  93   1              // VGA width    
  94   1              converInt(CurrentWidth);
  95   1              if(CurrentWidth > 999)
  96   1                      PortDataOut((MainMenuCols+1)*4+10, UPDATE_CODE, buff, 4);
  97   1              else
  98   1                      PortDataOut((MainMenuCols+1)*4+11, UPDATE_CODE, buff, 3);
  99   1      
 100   1              // VGA height 
 101   1              converInt(CurrentHeight);
 102   1              PortDataOut((MainMenuCols+1)*4+15, UPDATE_CODE, buff, 4);
 103   1      
 104   1              buff[0] = _x;
 105   1              PortDataOut((MainMenuCols+1)*4+14, UPDATE_CODE, buff, 1);
 106   1      
 107   1              /* H sync  */
 108   1              ival = 100000L * HsyncCnt / 21845L /2;
 109   1              converFlt(ival);
 110   1              buff[1] = _H;
 111   1              buff[2] = _DOT2; //:
 112   1              buff[5] = _K;
 113   1              buff[6] = _H;
 114   1              buff[7] = _z;
C51 COMPILER V6.23a  OSDCTRL                                                               09/10/2004 16:09:03 PAGE 3   

 115   1              PortDataOut((MainMenuCols+1)*6+8, UPDATE_CODE, &buff[1], 7);
 116   1                                      
 117   1              /* V sync  */
 118   1              ival = 18750000L / VsyncCnt;
 119   1              converFlt(ival);
 120   1              buff[1] = _V;
 121   1              buff[2] = _DOT2; //:
 122   1              buff[5] = _H;
 123   1              buff[6] = _z;                   
 124   1              PortDataOut((MainMenuCols+1)*6+16, UPDATE_CODE, &buff[1], 6);
 125   1      
 126   1              PortDataOut((MainMenuCols+1)*8+7, UPDATE_CODE,analogInputData[eepData.language],sizeof(analogInputData[0]
             -/sizeof(char)));
 127   1      }       
 128          
 129          
 130          void menuDraw(void)
 131          {
 132   1              /* Clear SRAM */
 133   1              SRAMClear();
 134   1      
 135   1              /* disable window */
 136   1              OSDRegDataOut(OSDWIN1_H_START, disWinData, sizeof(disWinData) / sizeof(char));
 137   1      #if (NEW_OSD) //1
 138   1              OSDRegByteOut(OSDNEWWINDOWCONTROL,0x00);
 139   1      #endif  
 140   1      
 141   1      
 142   1      
 143   1              if(cursor == 0x00  || cursor == HOT_BRIGHTNESS  || cursor == HOT_CONTRAST)
 144   1              {
 145   2                      /* Change OSD frame size and location */
 146   2                      if (FactoryFlag)
 147   2                              osdChgFrame(MainMenuCols,11, 0, 0);
 148   2                      else if (ISPFlag)
 149   2                              osdChgFrame(MainMenuCols,11, 50, 50);
 150   2                      else
 151   2                              osdChgFrame(MainMenuCols,11,eepData.osdPosH,MAX_osdPosV-eepData.osdPosV);
 152   2      
 153   2      
 154   2                      if(eepData.language==5)
 155   2                              load_attention_font_data();
 156   2                      PortDataOut((MainMenuCols+1)*1+10,UPDATE_CODE,attentionData[eepData.language],sizeof(attentionData[0]) /
             - sizeof(char));
 157   2              
 158   2                      OSDWindowSet(OSDWIN8_H_START, 29, 12, 0 ,0, 0x22, 0x10);
 159   2                      //OSDWindowSet(OSDWIN7_H_START, 27, 10, 1 ,1, 0x44, 0x10);
 160   2                      OSDWindowSet(OSDWIN6_H_START, 27, 6, 1 ,3, 0x66, 0x10);
 161   2              }
 162   1              else
 163   1              {
 164   2                      /* Change OSD frame size and location */
 165   2                      if (FactoryFlag)
 166   2                              osdChgFrame(MainMenuCols,MainMenuLines, 0, 0);
 167   2                      else
 168   2                              osdChgFrame(MainMenuCols,MainMenuLines,eepData.osdPosH,MAX_osdPosV+MIN_osdPosV-eepData.osdPosV);
 169   2      
 170   2      
 171   2                      OSDWindowSet(OSDWIN8_H_START, 29, 13, 0 ,0, 0x22, 0x10);
 172   2                      //OSDWindowSet(OSDWIN7_H_START, 27, 11, 1 ,1, 0x44, 0x10);
 173   2                      OSDWindowSet(OSDWIN6_H_START, 27, 7, 1 ,3, 0x66, 0x10);
 174   2              }
C51 COMPILER V6.23a  OSDCTRL                                                               09/10/2004 16:09:03 PAGE 4   

 175   1      
 176   1              OSDRegByteOut(OSDNEWWINDOWCONTROL,NEWWIN8ENABLE+NEWWIN7ENABLE+NEWWIN6ENABLE);
 177   1      }
 178          
 179          void subClear(void)
 180          {
 181   1              if (FactoryFlag)
 182   1              {
 183   2                      dspStyle(0x36);
 184   2                      buff[0] = __;
 185   2                      PortDataOut((MainMenuCols+1)*4+1, UPDATE_HCD_REGATT, buff, 1);
 186   2      //              buff[0] = 0x36;
 187   2      //              PortDataOut((MainMenuCols+1)*4+1, UPDATE_ATTR, buff,1);
 188   2              }
 189   1              for(buff[20]=3;buff[20]<9;buff[20]++)
 190   1              {
 191   2      //              PortDataOut((MainMenuCols+1)*buff[20]+3, UPDATE_CODE,clearData2, sizeof(clearData2) / sizeof(char));
 192   2                      SetOSDData((MainMenuCols+1)*buff[20]+3, UPDATE_CODE, 0x00, 23);
 193   2      //              PortDataOut((MainMenuCols+1)*buff[20]+7,UPDATE_ATTR,ScrollBarAttrData[1],sizeof(ScrollBarAttrData[1]/s
             -izeof(char)));
 194   2                      SetOSDData((MainMenuCols+1)*buff[20]+7, UPDATE_ATTR, 0x06, 17);
 195   2              }
 196   1      }
 197          
 198          /************************************************
 199          * create the first main menu pattern            *
 200          *************************************************/
 201          void mainMenu(void)
 202          {
 203   1              menuDraw();
 204   1              mainIcon();
 205   1              PortDataOut((MainMenuCols+1)*1+8,UPDATE_CODE,LuminanceData[eepData.language],sizeof(LuminanceData[0]) / s
             -izeof(char));
 206   1              enableOSD();
 207   1      }       
 208          
 209          void mainIcon(void)
 210          {
 211   1              subClear();
 212   1      
 213   1              // FACTORY
 214   1              if (FactoryFlag)
 215   1              {

⌨️ 快捷键说明

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