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

📄 md.lst

📁 dvr
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   MD                                                                    12/14/2005 10:05:34 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MD
OBJECT MODULE PLACED IN .\OBJ\md.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE md.c LARGE OPTIMIZE(9,SIZE) BROWSE PRINT(.\LST\md.lst) OBJECT(.\OBJ\md.obj)

line level    source

   1          /*
   2                  Vineyard Technologies, Inc.
   3          
   4                  *       MD header file
   5                          file name:      md.c
   6                          Author:         Owen Kwon
   7                          history:        12/31/03        initial, start
   8          
   9                  *       Introduction
  10                          Implementation of MD
  11          
  12                  *       compile option
  13                          VY_MD
  14                                  include MD module
  15                          VY_MD_DEBUG_AREA
  16                                  print coordinates of one block area
  17                          VY_MD_DEBUG_INT
  18                                  print interrupt service status
  19          */
  20          
  21          #include "types.h"
  22          
  23          #ifdef  VY_MD
  24          
  25          ///////////////////////////////////////////////////////////////////////////////
  26          //      includes
  27          #include "md.h"
  28          #include "absacc.h"
  29          #include "gio.h"
  30          #include "eprom.h"
  31          #include "stdio.h"
  32          #include "tw2804.h"
  33          #ifdef USE_4954_GP
              #include "cs4954.h"
              #endif
  36          
  37          #ifdef G1PMD
  38          
  39          WORD g1p_md_get_block_count(u8 *ch_num);
  40          u8 g1p_md_get_max_difference(void);
  41          u8 g1p_conv_16x24_to_16x32(u8 y);
  42          u8 g1pMDreg_read(u8 addr);
  43          void g1pMDreg_write(u8 addr, u8 value);
  44          void g1p_md_reg_set_area(BYTE ch);
  45          void g1p_md_enable(BOOL enable);
  46          BOOL g1p_md_is_detected(u8 cmd);
  47          
  48          //
  49          //      G1P MD indirect mode address and data registers
  50          //      assuming the G1P base register address base is 0x8000
  51          //
  52          #define MD_ADDRESS_REGISTER     XBYTE[0x8016]
  53          #define MD_DATA_REGISTER        XBYTE[0x8017]
  54          
  55          //      G1P MD registers
C51 COMPILER V7.50   MD                                                                    12/14/2005 10:05:34 PAGE 2   

  56          //      general
  57          #define MD_BCL                          0x0A
  58          #define MD_BCH                          0x0B
  59          #define MD_DMAXL                        0x0C
  60          #define MD_DMAXH                        0x0D
  61                  
  62          #endif // G1PMD
  63          
  64          
  65          ///////////////////////////////////////////////////////////////////////////////
  66          //      extern variables
  67          extern xdata BYTE gv_NTSC_PAL;
  68          
  69          ///////////////////////////////////////////////////////////////////////////////
  70          //      Global Variables: public
  71          
  72          //      md levels
  73          xdata BYTE      mdgv_md_sensitivity_levels[4] = {0,0,0,0};
  74                  //      sensitivity level set indexes
  75          
  76          //      md area : value unit is based on 16 x 24 font and saved into EPROM directly 
  77          xdata BYTE mdgv_md_areas[4][2][4] = {
  78                                                  {{0,0,0,0},{0,0,0,0}},  //      channel 0
  79                                                  {{0,0,0,0},{0,0,0,0}},  //      channel 1
  80                                                  {{0,0,0,0},{0,0,0,0}},  //      channel 2
  81                                                  {{0,0,0,0},{0,0,0,0}}}; //      channel 3
  82                  //      {       0:block 0, upper-left point x,
  83                  //              1:block 0, upper-left point y,
  84                  //              2:block 0, lower-right point x,
  85                  //              3:block 0, lower-right point y,
  86                  //              4:block 1, upper-left point x,
  87                  //              5:block 1, upper-left point y,
  88                  //              6:block 1, lower-right point x,
  89                  //              7:block 1, lower-right point y}
  90                  //      set for each channel
  91          
  92          //      md detected channel
  93          xdata BYTE      mdgv_channel_detected = 0; // "default No Channel"
  94                  //              bit[0]: channel 0
  95                  //              bit[1]: channel 1
  96                  //              bit[2]: channel 2
  97                  //              bit[3]: channel 3
  98                  //              bit[7~4]: don't care
  99          
 100          //      md enable/disable status
 101          xdata BYTE      mdgv_md_active_ch_stat = 0;
 102                  //      indicates md enable/disable status
 103                  //              bit[0]: channel 0
 104                  //              bit[1]: channel 1
 105                  //              bit[2]: channel 2
 106                  //              bit[3]: channel 3
 107                  //              bit[7~4]: don't care
 108          
 109          xdata BYTE      mdgv_md_enabled = 0;
 110          
 111          ///////////////////////////////////////////////////////////////////////////////
 112          //      Global Variables: private
 113          #ifdef G1PMD
 114          static xdata BYTE mdgvp_md_sensitivity_level_set[MD_SENSITIVITY_LEVEL_MAX] 
 115                  = {0x00,0x99,0x77,0x56,0x55,0x46,0x45,0x44,0x34,0x33};
 116          //      {bit[7~4]:mean, bit[3~0]:mean variant} pair for each channel
 117          //      level description
C51 COMPILER V7.50   MD                                                                    12/14/2005 10:05:34 PAGE 3   

 118          //                              mean    mean variant    remark
 119          //      -----------+-------+---------------+-----------
 120          //      level 0:        0               0                               disable
 121          //      level 1:        9               9                               
 122          //      level 2:        7               7
 123          //      level 3:        5               6
 124          //      level 4:        5               5
 125          //      level 5:        4               6
 126          //      level 6:        4               5
 127          //      level 7:        4               4
 128          //      level 8:        3               4
 129          //      level 9:        3               3                               most sensitive
 130          
 131          #endif
 132          
 133          #ifdef TW2804
              static xdata BYTE mdgvp_md_sensitivity_level_set[MD_SENSITIVITY_LEVEL_MAX] =
                              // Field Description
                              // bit[7~4]:LVLSENS, bit[3~2]:TMPSENS, bit[1~0]:SPTSENS
              /*              
                              //                              Level           Temp    Special
                              //                              -----           ----    -------
                              //                              0000            00              00
                              {       0x00,   //      Off                     Off             Off
                                      0x5B,   //      1010            10              11
                                      0x4B,   //      1000            10              11
                                      0x3B,   //      0110            10              11
                                      0x2B,   //      0100            10              11
                                      0x1B    //      0010            10              11
                              };      // TechWell's recommended value
              */
              
                              //                              Level           Temp    Special
                              //                              -----           ----    -------
                              //                              0000            00              00
                              {       0x00,   //      Off                     Off             Off
                                      0x5E,   //      1010            11              10
                                      0x4E,   //      1000            11              10
                                      0x3E,   //      0110            11              10
                                      0x2E,   //      0100            11              10
                                      0x1E    //      0010            11              10
                              };      // Owen's value - 1
              
              /*
              
                              //                              Level           Temp    Special
                              //                              -----           ----    -------
                              //                              0000            00              00
                              {       0x00,   //      Off                     Off             Off
                                      0xa7,   //      1010            01              11
                                      0x87,   //      1000            01              11
                                      0x67,   //      0110            01              11
                                      0x47,   //      0100            01              11
                                      0x27    //      0010            01              11
                              }; // Steve's value
              */              
              
              #define MD_MPERIOD 5
              //      md enable channel status
              static xdata BYTE       mdgvp_channel_enable_mask = 0x0F;
              void tw2804_md_reg_set_area(BYTE ch);
              void tw2804_md_enable(BOOL enable);
C51 COMPILER V7.50   MD                                                                    12/14/2005 10:05:34 PAGE 4   

              BOOL tw2804_md_is_detected(void);
              #endif
 182          
 183          /*/////////////////////////////////////////////////////////
 184                  void md_eprom_write(BYTE ch)
 185          
 186                  * save md info. at the eprom for a channel specified
 187                          ch              :       BYTE, channel number [0~3]
 188                  * remark
 189                          writes md info. of the specified channel
 190                          area : mdgv_md_areas will be saved
 191                          level: mdgv_md_sensitivity_levels will be saved
 192          /////////////////////////////////////////////////////////*/
 193          void md_eprom_write(BYTE ch)
 194          {
 195   1              xdata BYTE offset_base = ch*0x09 + EPROM_MD_OFFSET;
 196   1              xdata BYTE i,j;
 197   1              // write area info.
 198   1              for(i=0;i<2;i++)
 199   1                      {
 200   2                      for(j=0;j<4;j++)
 201   2                              {
 202   3                              EPROM_SetUp_data_Write(offset_base+i*4+j, mdgv_md_areas[ch][i][j]);
 203   3                              }
 204   2                      }
 205   1              // write sensitivity level
 206   1              EPROM_SetUp_data_Write(offset_base+8, mdgv_md_sensitivity_levels[ch]);
 207   1      }
 208          
 209          /*/////////////////////////////////////////////////////////
 210                  void md_eprom_read(BYTE ch)
 211          
 212                  * retrieve md info. from the eprom for a channel specified
 213                          ch              :       BYTE, channel number [0~3]
 214                  * remark
 215                          writes md info. of the specified channel
 216                          area info will be copied to mdgv_md_areas
 217                          level will be copied to mdgv_md_sensitivity_levels
 218          /////////////////////////////////////////////////////////*/
 219          void md_eprom_read(BYTE ch)
 220          {
 221   1              xdata BYTE offset_base = ch*0x09 + EPROM_MD_OFFSET;
 222   1              xdata BYTE i,j;
 223   1              // write area info.
 224   1              for(i=0;i<2;i++)
 225   1                      {
 226   2                      for(j=0;j<4;j++)
 227   2                              {
 228   3                              mdgv_md_areas[ch][i][j] = EPROM_SetUp_data_Read(offset_base+i*4+j);
 229   3                              }
 230   2                      }
 231   1              // read sensitivity level
 232   1              mdgv_md_sensitivity_levels[ch] = EPROM_SetUp_data_Read(offset_base+8);
 233   1      }
 234          
 235          /*/////////////////////////////////////////////////////////
 236                  void md_reg_set_area(BYTE ch)
 237          
 238                  * set md area for each channel
 239                          ch              :       BYTE, channel number [0~3]
 240                  * scope public
 241                  * remark
C51 COMPILER V7.50   MD                                                                    12/14/2005 10:05:34 PAGE 5   

 242                          global variable mdgv_md_areas[ch][..] should be set
 243                          before calling this function
 244          /////////////////////////////////////////////////////////*/
 245          void md_reg_set_area(BYTE ch)
 246          {
 247   1              #ifdef TW2804
                      tw2804_md_reg_set_area(ch);
                      #endif
 250   1      
 251   1              #ifdef G1PMD
 252   1              g1p_md_reg_set_area(ch);
 253   1              #endif
 254   1      }
 255          
 256          
 257          /*/////////////////////////////////////////////////////////
 258                  BOOL md_init(void)
 259          
 260                  * load md area data from eprom and write md registers
 261                  * remark
 262                          n/a
 263          /////////////////////////////////////////////////////////*/
 264          void md_init(void)
 265          {
 266   1              xdata BYTE i;

⌨️ 快捷键说明

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