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

📄 printf.lst

📁 车载DVD osdIC TW8816原厂代码
💻 LST
字号:
C51 COMPILER V7.50   PRINTF                                                                04/01/2008 15:02:31 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE PRINTF
OBJECT MODULE PLACED IN .\Output\Printf.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Printf.c COMPACT OPTIMIZE(9,SIZE) BROWSE MODDP2 INCDIR(.\Include\) DEFINE(I
                    -NTERNAL_MCU) DEBUG OBJECTEXTEND PRINT(.\Source\Printf.lst) OBJECT(.\Output\Printf.obj)

line level    source

   1          #include "Config.h"
   2          
   3          #ifdef SERIAL
   4          
   5          #include "reg.h"
   6          #include "Typedefs.h"
   7          #include "main.h"
   8          #include "printf.h"
   9          #include <stdarg.h>
  10          
  11          CODE BYTE Hex[] = "0123456789ABCDEF";
  12          extern  bit             RS_Xbusy;                       // bit RS_Xbusy=0;
  13          extern  BYTE    DebugLevel;
  14          
  15          
  16          void DoPrint( const char CODE_P *fmt, va_list ap )
  17          {
  18   1              char  ch;
  19   1              char  i;
  20   1              long  value;
  21   1              bit   fl_zero;
  22   1              bit   fl_num;
  23   1              BYTE  fl_len;
  24   1              BYTE  cnt;
  25   1              DWORD mask=1;
  26   1      
  27   1              #ifdef KEILC
  28   1              char *ptr;
  29   1              #endif
  30   1      
  31   1              while(1) {
  32   2                      
  33   2                      //----- Find Formatter % -----
  34   2      
  35   2                      switch( ch = *fmt++ ) {
  36   3                              case 0:         return;
  37   3                              case '%':       if( *fmt != '%' ) break;
  38   3                                                      fmt++;
  39   3                              default:        _outchar( ch );
  40   3                                                      continue;
  41   3                      }
  42   2      
  43   2                      //----- Get Count -------------
  44   2                      
  45   2                      fl_zero = 0;
  46   2                      fl_num = 0;
  47   2                      cnt = 0;
  48   2      
  49   2                      ch = *fmt++;
  50   2      
  51   2                      if( ch=='0' ) {
  52   3                              fl_zero = 1;
  53   3                              ch = *fmt++;
  54   3                              cnt = ch - '0';
C51 COMPILER V7.50   PRINTF                                                                04/01/2008 15:02:31 PAGE 2   

  55   3                              ch = *fmt++;
  56   3                      }
  57   2                      else if( ch>='0' && ch<='9' ) {
  58   3                              cnt = ch - '0';
  59   3                              ch = *fmt++;
  60   3                      }
  61   2      
  62   2                      //----- Get char(B) / int / long(L) ----------------
  63   2      
  64   2                      fl_len = 2;
  65   2      
  66   2                      switch(ch) {
  67   3                      case 'l':
  68   3                      case 'L':       ch = *fmt++;    fl_len = 4;             break;
  69   3                      case 'b':
  70   3                      case 'B':       ch = *fmt++;    fl_len = 1;             break;
  71   3                      }               
  72   2      
  73   2                      //----- Get Type Discriptor -----
  74   2                      
  75   2                      switch( ch ) {
  76   3      
  77   3                              case 'd':
  78   3                              case 'u':
  79   3      
  80   3                                      switch (fl_len) {
  81   4                                      case 1:
  82   4                                              if( ch=='d' ) value = (char)va_arg( ap, char );
  83   4                                              else          value = (BYTE)va_arg( ap, BYTE );
  84   4                                              break;
  85   4      
  86   4                                      case 2:
  87   4                                              if( ch=='d' ) value = (int)va_arg( ap,  int );
  88   4                                              else          value = (WORD)va_arg( ap, WORD );
  89   4                                              break;
  90   4      
  91   4                                      case 4:
  92   4                                              if( ch=='d' ) value = (long)va_arg( ap, long );
  93   4                                              else          value = (DWORD)va_arg( ap, DWORD );
  94   4                                              break;
  95   4                                      }
  96   3      
  97   3                                      if( value<0 ) {
  98   4                                              _outchar('-');
  99   4                                              value = value*(-1);
 100   4                                      }
 101   3      
 102   3                                      if(cnt==0) {
 103   4                                              if( value==0 ) { _outchar('0'); continue; }
 104   4      
 105   4                                              for(cnt=0, mask=1; cnt<10; cnt++) {
 106   5                                                      if( (value/mask)==0 ) break;
 107   5                                                      mask = mask*10;
 108   5                                              }
 109   4                                      }
 110   3      
 111   3                                      for(i=0, mask=1; i<cnt-1; i++) mask = mask*10;
 112   3      
 113   3                                      while(1) {
 114   4                                              ch = (value / mask) + '0';
 115   4                                              if( ch=='0' && fl_zero==0 && mask!=1 ) ch=' ';
 116   4                                              else fl_zero = 1;
C51 COMPILER V7.50   PRINTF                                                                04/01/2008 15:02:31 PAGE 3   

 117   4                                              _outchar(ch);
 118   4      
 119   4                                              value = value % (mask);
 120   4                                              mask = mask / 10;
 121   4                                              
 122   4                                              if( mask==0 )
 123   4                                                      break;
 124   4                                      }
 125   3                                      continue;
 126   3      
 127   3                              case 'x':
 128   3                              case 'X':
 129   3      
 130   3                                      switch (fl_len) {
 131   4                                      case 1: value = (BYTE)va_arg( ap, BYTE );               break;
 132   4                                      case 2: value = (WORD)va_arg( ap, WORD );               break;
 133   4                                      case 4: value = (DWORD)va_arg( ap, DWORD );             break;
 134   4                                      }
 135   3      
 136   3                                      if(cnt==0) cnt = fl_len*2;
 137   3      
 138   3                                      for(i=0; i<cnt; i++) {
 139   4                                              _outchar( Hex[(value >> (cnt-i-1)*4) & 0x000f] );
 140   4                                      }
 141   3                                      continue;
 142   3      
 143   3                              case 's':
 144   3      
 145   3                                      #ifdef TASKINGC
                                              
                                              value = (WORD)va_arg( ap, WORD );
                                              while(*(char CODE_P *)value!='\0')
                                                      _outchar(*(char CODE_P *)value++);
                                              continue;
              
                                              #elif defined KEILC
 153   3                                      
 154   3                                      ptr = (char *)va_arg( ap, char* );
 155   3                                      while(*ptr!='\0')
 156   3                                              _outchar(*ptr++);
 157   3                                      continue;
 158   3      
 159   3                                      #endif
 160   3      
 161   3      
 162   3                              case 'c':
 163   3                                      value = va_arg( ap, int );
 164   3                                              _outchar((BYTE)value);
 165   3                                      continue;
 166   3      
 167   3                              default:
 168   3                                      value = (WORD)va_arg( ap, int );
 169   3                                      continue;
 170   3                      }
 171   2              }
 172   1      }
 173          
 174          //===========================================================================//
 175          //                                                                           //
 176          //===========================================================================//
 177          //va_list ap;
 178          
C51 COMPILER V7.50   PRINTF                                                                04/01/2008 15:02:31 PAGE 4   

 179          void Printf( const char CODE_P *fmt, ... )
 180          {
 181   1              va_list ap;
 182   1      
 183   1              va_start(ap, fmt);
 184   1              DoPrint( fmt, ap );
 185   1              va_end( ap );
 186   1      }
 187          
 188          void Puts( CODE_P char *ptr )
 189          {
 190   1              while(*ptr!='\0')
 191   1                      RS_tx(*ptr++);
 192   1      }
 193          
 194          //===========================================================================//
 195          //                                                                           //
 196          //===========================================================================//
 197          #ifdef DEBUG
 198          
 199          void dPrintf( const char CODE_P *fmt, ... )
 200          {
 201   1              va_list ap;
 202   1      
 203   1              if( DebugLevel >= DEBUG_INFO ) {
 204   2                      va_start(ap, fmt);
 205   2                      DoPrint( fmt, ap );
 206   2                      va_end( ap );
 207   2              }
 208   1      }
 209          /*
 210          void wPrintf( const char CODE_P *fmt, ... )
 211          {
 212                  va_list ap;
 213          
 214                  if( DebugLevel >= DEBUG_WARN ) {
 215                          va_start(ap, fmt);
 216                          DoPrint( fmt, ap );
 217                          va_end( ap );
 218                  }
 219          }
 220          */
 221          
 222          void ePrintf( const char CODE_P *fmt, ... )
 223          {
 224   1              va_list ap;
 225   1      
 226   1              if( DebugLevel >= DEBUG_ERR ) {
 227   2                      va_start(ap, fmt);
 228   2                      DoPrint( fmt, ap );
 229   2                      va_end( ap );
 230   2              }
 231   1      }
 232          
 233          //===========================================================================//
 234          //                                                                           //
 235          //===========================================================================//
 236          void dPuts( CODE_P char *ptr )
 237          {
 238   1              if( DebugLevel >= DEBUG_INFO ) {
 239   2                      while(*ptr!='\0')
 240   2                              RS_tx(*ptr++);
C51 COMPILER V7.50   PRINTF                                                                04/01/2008 15:02:31 PAGE 5   

 241   2              }
 242   1      }
 243          
 244          #if defined( SUPPORT_PC ) || defined( SUPPORT_DTV ) || defined( DEBUG_SETPANEL)
 245          void wPuts( CODE_P char *ptr )
 246          {
 247   1              if( DebugLevel >= DEBUG_WARN ) {
 248   2                      while(*ptr!='\0')
 249   2                              RS_tx(*ptr++);
 250   2              }
 251   1      }
 252          
 253          void ePuts( CODE_P char *ptr )
 254          {
 255   1              if( DebugLevel >= DEBUG_ERR ) {
 256   2                      while(*ptr!='\0')
 257   2                              RS_tx(*ptr++);
 258   2              }
 259   1      }
 260          #endif
 261          
 262          #endif // DEBUG
 263          
 264          //===========================================================================//
 265          //                                                                           //
 266          //===========================================================================//
 267          /*
 268          #ifdef DEBUG
 269          BYTE Getch(void)
 270          {
 271                  while(!RS_ready());
 272                  return RS_rx();
 273          }
 274          #endif
 275          */
 276          BYTE Getche(void)
 277          {
 278   1              BYTE ch;
 279   1      
 280   1              while(!RS_ready());
 281   1              ch = RS_rx();
 282   1              RS_tx(ch);
 283   1      
 284   1              return ch;
 285   1      }
 286          
 287          #endif  // SERIAL


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1083    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----      97
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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