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

📄 function.lst

📁 一个LCD TV的源程序, 用的是realtek的IC
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.07   FUNCTION                                                              09/26/2006 08:56:43 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE FUNCTION
OBJECT MODULE PLACED IN Function.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Function.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*******************************************************************************
   2            Function.c
   3            Copyright (c) HIMAX, Inc. All rights reserved.
   4            Edit by Taylor Chen
   5          *******************************************************************************/
   6          #include "intrins.h"
   7          #include "MCU_IO.h"
   8          #include "COMMON.H"
   9          #include "Function.H"
  10          #include "MAIN.H"
  11          #include "i2c_control.h"
  12          #include "HX8824.h"
  13          #include "Key.h"
  14          #include "OSD.h"
  15          #include "ModeTable.h"
  16          /*==============================================================================*/
  17          
  18          extern code unsigned char EEPDATA[64][16];
  19          /*==============================================================================*/
  20          /* -------------------------------------------------------------------
  21            Name    : BootFromLDROM
  22            Purpose : Enter MCU ISP Mode
  23            Passed  : Word
  24            Returns :
  25            Notes   :
  26            ------------------------------------------------------------------- */
  27          
  28          void BootFromLDROM(void)
  29          {
  30   1              IE              = 0x00;    // Disable all interrupt
  31   1              CHPENR  = 0x87;  //
  32   1              CHPENR  = 0x59;
  33   1              CHPCON  = 0x03;
  34   1              CHPENR  = 0x00;
  35   1              TCON    = 0x00;
  36   1              IP              = 0x00;
  37   1              TL0     = 0xfe;
  38   1              TH0             = 0xff;
  39   1              TMOD    = 0x01;
  40   1              IE              = 0x82;    // Enable interrupt Timer/counter 0
  41   1              TCON    = 0x10;
  42   1              PCON    = 0x01;
  43   1              while(1);
  44   1      }
  45          
  46          /* -------------------------------------------------------------------
  47            Name    : DelayX1ms
  48            Purpose : Delay 1ms Seconds
  49            Passed  :
  50            Returns :
  51            Notes   :
  52            ------------------------------------------------------------------- */
  53          
  54          void DelayX1ms(unsigned int n)
  55          {
C51 COMPILER V7.07   FUNCTION                                                              09/26/2006 08:56:43 PAGE 2   

  56   1      
  57   1        unsigned int i;
  58   1      
  59   1        while(n--!=0)
  60   1          for (i=0; i<86; i++)
  61   1            ;
  62   1      }
  63          
  64          /* -------------------------------------------------------------------
  65            Name    : DelayX10ms
  66            Purpose : Delay 10ms Seconds
  67            Passed  :
  68            Returns :
  69            Notes   :
  70            ------------------------------------------------------------------- */
  71          void DelayX10ms(unsigned int n)
  72          {
  73   1      
  74   1        unsigned int i;
  75   1      
  76   1        while(n--!=0)
  77   1          for (i=0; i<860; i++)
  78   1            ;
  79   1      }
  80          
  81          /* -------------------------------------------------------------------
  82            Name    : Print_Icon
  83            Purpose : Print ICON
  84            Passed  : Display area, attribute
  85            Returns :
  86            Notes   :
  87            ------------------------------------------------------------------- */
  88          void Print_Icon(Byte Disp_R, Byte Disp_C, Byte Attr0, Byte Attr1, Byte Attr2)
  89          {
  90   1          BYTE Disp;
  91   1          Disp = (Disp_R - 1)*32 + (Disp_C - 1);
  92   1          I2CWrite2Byte(HX8824_ADDR, HX8824_DISPLAY_AREA, Disp, Disp >> 8);  //0xBE
  93   1          I2CWrite3Byte(HX8824_ADDR, HX8824_OSD_ATTR, Attr0, Attr1, Attr2); //0xC0
  94   1      }
  95          /* -------------------------------------------------------------------
  96            Name    : Print_String
  97            Purpose : Print String
  98            Passed  : Display area, attribute
  99            Returns :
 100            Notes   :
 101            ------------------------------------------------------------------- */
 102          
 103          void Print_String(Byte Disp_R, Byte Disp_C, Byte Attr0, Byte Attr1, Byte *string)
 104          {
 105   1          BYTE Disp, i = 0;
 106   1          Disp = (Disp_R - 1)*32 + (Disp_C - 1);
 107   1          while((*(string+i))!='\0')
 108   1          {
 109   2              I2CWrite2Byte(HX8824_ADDR, HX8824_DISPLAY_AREA, Disp, Disp >> 8);  //0xBE
 110   2              //I2CWrite3Byte(HX8824_ADDR, HX8824_OSD_ATTR, Attr0, Attr1, *(string + i) - 64); //0xC0
 111   2              I2CWrite3Byte(HX8824_ADDR, HX8824_OSD_ATTR, Attr0, Attr1, *(string + i) - 47); //0xC0
 112   2              Disp++;
 113   2              i++;
 114   2          }
 115   1      }
 116          
 117          /* -------------------------------------------------------------------
C51 COMPILER V7.07   FUNCTION                                                              09/26/2006 08:56:43 PAGE 3   

 118            Name    : Select_Item
 119            Purpose : Select Item
 120            Passed  :
 121            Returns :
 122            Notes   :
 123            ------------------------------------------------------------------- */
 124          
 125          void Select_Item(void)
 126          {
 127   1        unsigned char prev, next;
 128   1        Byte i;
 129   1      
 130   1        prev=(Item+(TOTAL_ICON-1))%TOTAL_ICON;       //TOTAL_ICON = 12
 131   1        next=(Item+(TOTAL_ICON+1))%TOTAL_ICON;
 132   1        Puts_UART("Item = ");HexTobyStr(Item);Puts_UART(byStr);Puts_UART("\r\n");
 133   1      
 134   1      
 135   1        for(i = 0; i < 3; i++)
 136   1        {
 137   2          Print_Icon(ICONPOS[prev][0], ICONPOS[prev][1], 0x00, 0x07, ICONGROUP[prev][0]);
 138   2          Print_Icon(ICONPOS[prev][0], ICONPOS[prev][1] + 1, 0x00, 0x07, ICONGROUP[prev][1]);
 139   2          Print_Icon(ICONPOS[next][0], ICONPOS[next][1], 0x00, 0x07, ICONGROUP[next][0]);
 140   2          Print_Icon(ICONPOS[next][0], ICONPOS[next][1] + 1, 0x00, 0x07, ICONGROUP[next][1]);
 141   2          Print_Icon(ICONPOS[Item][0], ICONPOS[Item][1], 0x03, 0x07, ICONGROUP[Item][0]);
 142   2          Print_Icon(ICONPOS[Item][0], ICONPOS[Item][1] + 1, 0x03, 0x07, ICONGROUP[Item][1]);
 143   2        }
 144   1        OSDBarHandle(Item, 5, 6, 0x03, 0x05);
 145   1      }
 146          
 147          /* -------------------------------------------------------------------
 148            Name    : OSD_Bar_Handle
 149            Purpose : Adjust OSD Bar
 150            Passed  : Item, row, column, attr0, attr1
 151            Returns :
 152            Notes   :
 153            ------------------------------------------------------------------- */
 154          void OSDBarHandle(Byte Item, Byte row, Byte col, Byte attr0, Byte attr1)
 155          {
 156   1          Byte i, j;
 157   1          Byte BarMaxValue, BarMaxCount = 20, Item_ADDR;
 158   1          Word CurrentValue, OSDMaxValue, OSDMinValue;
 159   1          Byte UpdateValue;
 160   1      
 161   1          BarMaxValue = BarMaxCount * 5;
 162   1          switch(Item)
 163   1          {
 164   2              case 0:
 165   2                  Item_ADDR = HX8824_BRIGHTNESS;
 166   2                  OSDMaxValue = 255;
 167   2                  OSDMinValue = 0;
 168   2              break;
 169   2              case 1:
 170   2                  Item_ADDR = HX8824_CONTRAST;
 171   2                  OSDMaxValue = 255;
 172   2                  OSDMinValue = 0;
 173   2              break;
 174   2              case 2:
 175   2                  Item_ADDR = HX8824_SATSINHUE;
 176   2                  OSDMaxValue = 511;
 177   2                  OSDMinValue = 0;
 178   2              break;
 179   2              case 3:
C51 COMPILER V7.07   FUNCTION                                                              09/26/2006 08:56:43 PAGE 4   

 180   2                  Item_ADDR = HX8824_SATCOSHUE;
 181   2                  OSDMaxValue = 511;
 182   2                  OSDMinValue = 0;
 183   2              break;
 184   2              case 6:
 185   2                  Item_ADDR = HX8824_SHARPNESS;
 186   2                  OSDMaxValue = 31;
 187   2                  OSDMinValue = 0;
 188   2              break;
 189   2              default:
 190   2              break;
 191   2          }
 192   1          if(Item_ADDR == HX8824_SATSINHUE || Item_ADDR == HX8824_SATCOSHUE)
 193   1          {
 194   2              CurrentValue = (I2CReadByte(HX8824_ADDR, Item_ADDR + 1) << 8 | (I2CReadByte(HX8824_ADDR, Item_ADDR)))
             -;
 195   2              Puts_UART("Current value = ");HexTobyStr(CurrentValue);Puts_UART(byStr);Puts_UART("\r\n");
 196   2              CurrentValue = (CurrentValue * BarMaxValue) / (OSDMaxValue - OSDMinValue);
 197   2              Puts_UART("Current value = ");HexTobyStr(CurrentValue);Puts_UART(byStr);Puts_UART("\r\n");
 198   2          }
 199   1          else
 200   1          {
 201   2            CurrentValue = I2CReadByte(HX8824_ADDR, Item_ADDR);
 202   2              Puts_UART("Current value = ");HexTobyStr(CurrentValue);Puts_UART(byStr);Puts_UART("\r\n");
 203   2              CurrentValue = (CurrentValue * BarMaxValue) / (OSDMaxValue - OSDMinValue);
 204   2              Puts_UART("Current value = ");HexTobyStr(CurrentValue);Puts_UART(byStr);Puts_UART("\r\n");
 205   2          }
 206   1          UpdateValue = CurrentValue;
 207   1          Print_Icon(row, col, attr0, attr1, 0x2C);              // left    :1
 208   1          j = UpdateValue / 5;
 209   1          for(i = 1; i < (j + 1); i++)
 210   1          {
 211   2              Print_Icon(row, col + i, attr0, attr1, 0x32);      // full    :i = j
 212   2          }
 213   1          j = UpdateValue % 5;
 214   1          Print_Icon(row, col + (i++), attr0, attr1, 0x2D + j);  // nonfull  :j+2
 215   1          for(; i < (BarMaxCount + 1); i++)
 216   1          {
 217   2              Print_Icon(row, col + i, attr0, attr1, 0x2D);      // empty    :
 218   2          }
 219   1          Print_Icon(row, (col + (BarMaxCount + 1)), attr0, attr1, 0x33);
 220   1      }
 221          
 222          /* -------------------------------------------------------------------
 223            Name    : Sharpness_Adj
 224            Purpose : Adjust Sharpness
 225            Passed  : +/-
 226            Returns :
 227            Notes   :
 228            ------------------------------------------------------------------- */
 229          void Sharp_Adj(Byte S)

⌨️ 快捷键说明

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