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

📄 inital.lst

📁 一个用于驱动TFT屏的驱动程序,使用IC:1828,program (无EEPROM 无IR,完整说明)IIC只写一个
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   INITAL                                                                09/29/2006 10:54:50 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE INITAL
OBJECT MODULE PLACED IN inital.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE inital.c BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          //*********************************************************************
   2          //               inital.c     1828 的初始化程序文件
   3          //               by hibernate  2005.9.29   
   4          //       ShenZhen Challenge Technology Co.,Ltd
   5          //remarks:本文件根据vxis原参考程序中func_shi文件改写
   6          //*********************************************************************
   7          #include "inital_data.h"
   8          #include "vxis1828.h"
   9          #include "IIC_RW.h"
  10          #include "config.h"
  11          #include "osd.h"
  12          #include "status.h"
  13          #include "timer.h"
  14          #include "handlekey.h"
  15          
  16          //本文件函数定义
  17          void setInit1828();
  18          void handleFormat();                                                                                                            // 制式的处理函数定义
  19          void set1828reg(unsigned char * array);                                                                         // 1828 各种寄存器的设置函数
  20          void setScreenMode(unsigned char current_format,unsigned char screen_mode);     // 屏幕比例的设置函数
  21          void initFormat(unsigned char format);                                                                          // 制式的初始化函数定义
  22          
  23          //****************************************************
  24          // 函数:void setInit1828()
  25          // 作用:对1828进行初始化,包含有制式等的设置
  26          // remarks:对1828开机时需要有的功能就在这个函数中进行添加
  27          //****************************************************
  28          void setInit1828()
  29          {
  30   1              //unsigned char open_format;
  31   1              unsigned char open_ch = 0x01;                                                   // 开机默认通道
  32   1              
  33   1              set1828reg(&init1828_data);                                                     // 对1828进行初始化,1828下配置过程;     
  34   1              //DelayXms(0xFF);
  35   1              DelayXms(0x10);         
  36   1              
  37   1              // 开机通道设置
  38   1              set1828Ch(open_ch);
  39   1              setCurrentCh(open_ch) ;
  40   1              //open_format = getCurrentFormat();
  41   1              //displayCap(0x01,open_format);
  42   1      
  43   1              // 开机颜色设置
  44   1              loadAppInitValue();
  45   1              setICAppValue();
  46   1              
  47   1              // Set initial address of OSD block      
  48   1              // The initial address of Title Block is default 0x00   
  49   1              osd_madr(content,0x20);                                                                 // Set the initial address of Content Block
  50   1              osd_madr(bottom,0xa0);                                                                  // Set the initial address of Bottom Block
  51   1              osdSwitch(0x00);                                                                                // Turn the OSD T/C/B block off                         
  52   1              osd_blink(0x0f);                                                                                // Set the OSD blinking rate
  53   1              osd_alpha(0x0d);                                                                                // Set the OSD transparent
  54   1      }
  55          
C51 COMPILER V7.50   INITAL                                                                09/29/2006 10:54:50 PAGE 2   

  56          //****************************************************
  57          // 函数:void handleFormat()
  58          // 作用:对1828 制式有无变化进行处理
  59          // remarks:1828制式有变化时需要进行制式变化寄存器参数设置
  60          //****************************************************
  61          void handleFormat()
  62          {
  63   1              unsigned char temp_format;
  64   1              unsigned char now_format;
  65   1              unsigned char now_ch;
  66   1      
  67   1              temp_format = get1828Format();
  68   1              now_format  = getCurrentFormat();
  69   1              now_ch      = getCurrentCh();           
  70   1              if (temp_format != now_format)
  71   1              {
  72   2                      initFormat(temp_format);
  73   2                      displayCap(now_ch,temp_format);                                         // 变化时可以显示制式
  74   2                      setCurrentFormat(temp_format );
  75   2              }                       
  76   1      }
  77          
  78          
  79          //****************************************************
  80          // 函数: void iinitFormat(unsigned char current_format)
  81          // 作用: 当制式有变化时,需要更改一些寄存器参数值
  82          // remarks:这个函数只对不同的制式进行初始化
  83          //****************************************************
  84          void initFormat(unsigned char format)   
  85          {
  86   1              DelayXms(0x10); 
  87   1              DelayXms(0x10);
  88   1      
  89   1              if(format == 0x03)
  90   1                      set1828reg(&init_NTSC_data);                                            // 更改NTSC制的寄存器参数
  91   1              else
  92   1                      set1828reg(&init_PAL_data);                                             // 更改PAL制的寄存器参数
  93   1      }
  94          
  95          //****************************************************
  96          // 函数: void setScreenMode(unsigned char format,unsigned char screen_mode)
  97          // 作用: 函数根据不同制式的标志位作出屏幕(比例)模式的变化
  98          // 参数:        format        => 当前的制式
  99          //      screen_mode   => 16:9  / 4:3  的标志
 100          // remarks:
 101          //****************************************************
 102          void setScreenMode(unsigned char current_format,unsigned char screen_mode)
 103          {
 104   1              if(current_format == 0x03)                                                              // NTSC
 105   1              {
 106   2                      if(screen_mode == 0x00)                                                 // 4:3 to 16:9
 107   2                              set1828reg(&r43to169_N_data);                                   // 寄存器参数设置为16:9(NTSC)
 108   2                      else                                                                                            // 16:9 to4:3                                                                                                                                   
 109   2                              set1828reg(&r169to43_N_data);                                   // 寄存器参数设置为4:3(NTSC)
 110   2              }
 111   1              else                                                                            //PAL
 112   1              {
 113   2                      if(screen_mode == 0x00)                                                         // 4:3 to16:9
 114   2                              set1828reg(&r43to169_P_data);                                   //寄存器参数设置为16:9(PAL)                                     
 115   2                      else                                                                                            //16:9 to4:3  initial data of the  aspect ratio from 16:9 to 4:3 in PAL
 116   2                              set1828reg(&r169to43_P_data);                                   //寄存器参数设置为4:3(PAL)
 117   2              }
C51 COMPILER V7.50   INITAL                                                                09/29/2006 10:54:50 PAGE 3   

 118   1      }
 119          
 120          //***********************************************
 121          //函数:void set1828reg(unsigned char * array)
 122          //作用:1828 各种寄存器的设置函数(从数组到1828)
 123          //remark:1、 函数通过读取 array(数据数组) 向1828写入数据,
 124          //       2、 array数组的格式可见数组定义 
 125          //************************************************
 126          void set1828reg(unsigned char * array)
 127          {
 128   1              unsigned char count;
 129   1              unsigned char i;
 130   1              unsigned char tmp;
 131   1      
 132   1              count = getLength(array);
 133   1      
 134   1              for(i = 0;i < count;i+= 0x02)
 135   1              {
 136   2                      tmp = array[i+1];                                                                       // 奇数位是数值
 137   2                      write1828(array[i],array[i+1]);                                         // 偶数位是寄存器地址
 138   2              }
 139   1      }
 140          
 141          
C51 COMPILER V7.50   INITAL                                                                09/29/2006 10:54:50 PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION setInit1828 (BEGIN)
                                           ; SOURCE LINE # 28
                                           ; SOURCE LINE # 29
                                           ; SOURCE LINE # 31
0000 750001      R     MOV     open_ch,#01H
                                           ; SOURCE LINE # 33
0003 7BFF              MOV     R3,#0FFH
0005 7A00        R     MOV     R2,#HIGH init1828_data
0007 7900        R     MOV     R1,#LOW init1828_data
0009 120000      R     LCALL   _set1828reg
                                           ; SOURCE LINE # 35
000C 7F10              MOV     R7,#010H
000E 120000      E     LCALL   _DelayXms
                                           ; SOURCE LINE # 38
0011 AF00        R     MOV     R7,open_ch
0013 120000      E     LCALL   _set1828Ch
                                           ; SOURCE LINE # 39
0016 AF00        R     MOV     R7,open_ch
0018 120000      E     LCALL   _setCurrentCh
                                           ; SOURCE LINE # 44
001B 120000      E     LCALL   loadAppInitValue
                                           ; SOURCE LINE # 45
001E 120000      E     LCALL   setICAppValue
                                           ; SOURCE LINE # 49
0021 7D20              MOV     R5,#020H
0023 7F02              MOV     R7,#02H
0025 120000      E     LCALL   _osd_madr
                                           ; SOURCE LINE # 50

⌨️ 快捷键说明

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