显示屏驱动源代码

源代码在线查看: printf.lst

软件大小: 2605 K
上传用户: haibokaishi2006
关键词: 显示屏驱动 源代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				C51 COMPILER V7.06   PRINTF                                                                02/21/2008 14:00:30 PAGE 1   
				
				
				C51 COMPILER V7.06, 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 INCDIR(.\Include\) DEBUG OBJECTEXT
				                    -END PRINT(.\Source\Printf.lst) OBJECT(.\Output\Printf.obj)
				
				stmt 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 
				  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.06   PRINTF                                                                02/21/2008 14:00:30 PAGE 2   
				
				  55   3                              ch = *fmt++;
				  56   3                      }
				  57   2                      else if( ch>='0' && ch				  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				  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				 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				 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.06   PRINTF                                                                02/21/2008 14:00:30 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				 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.06   PRINTF                                                                02/21/2008 14:00:30 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.06   PRINTF                                                                02/21/2008 14:00:30 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        =   1077    ----
				   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)
							

相关资源