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

📄 print.lst

📁 51单片机C语言常用模块与综合系统设计实例精讲
💻 LST
字号:
C51 COMPILER V7.06   PRINT                                                                 10/10/2006 14:05:19 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE PRINT
OBJECT MODULE PLACED IN print.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE print.c LARGE BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <stdio.h>
   2          #include <absacc.h>
   3          #include <stdarg.h>
   4          #include <./Atmel/at89x52.h>
   5          #include "source.h"     
   6          unsigned char xsatouc(unsigned char cht){
   7   1              unsigned char xtemp;
   8   1              if((cht>='0')&&(cht<='9')){
   9   2                      xtemp=cht-48;
  10   2              }
  11   1              else if((cht>='a')&&(cht<='f')){
  12   2                      xtemp=cht-87;
  13   2              }
  14   1              else if((cht>='A')&&(cht<='F')){
  15   2                      xtemp=cht-55;
  16   2              }
  17   1              else{
  18   2                      xtemp=0xff;
  19   2              }
  20   1              return xtemp;
  21   1      }
  22          unsigned char xatouc(unsigned char *s){
  23   1              unsigned char xa=0;
  24   1              xa=xsatouc(s[0]);
  25   1              if(s[1]!=0){
  26   2                      xa<<=4;
  27   2                      xa|=xsatouc(s[1]);
  28   2              }
  29   1              return xa;
  30   1      }
  31          unsigned char *itos(unsigned int arg){
  32   1              static unsigned char buf[6];
  33   1              unsigned char i;
  34   1              unsigned int cvt;
  35   1              i=0;
  36   1              cvt=arg;
  37   1              while(1){
  38   2                      i++;
  39   2                      buf[i]=0x30+cvt%10;
  40   2                      cvt /=10;
  41   2                      if(cvt==0){
  42   3                              break;
  43   3                      }               
  44   2              }
  45   1              buf[0]=i;
  46   1              return buf;
  47   1      }
  48          unsigned char *itosx(unsigned int arg){
  49   1              static unsigned char buf[5];
  50   1              unsigned char i,n;
  51   1              unsigned int cvt;
  52   1              cvt=arg;
  53   1              for(i=1;i<5;i++){
  54   2                      n=cvt%16;
  55   2                      if(n<10){//0-9
C51 COMPILER V7.06   PRINT                                                                 10/10/2006 14:05:19 PAGE 2   

  56   3                              buf[i]=0x30+n;
  57   3                      }
  58   2                      else{//A-F
  59   3                              buf[i]=55+n;//0x41+n-10
  60   3                      }
  61   2                      cvt >>=4;
  62   2              }
  63   1              buf[0]=4;
  64   1              return buf;
  65   1      }
  66          unsigned char *ctosx(unsigned char arg){
  67   1              static unsigned char buf[3];
  68   1              unsigned char i,n;
  69   1              unsigned char cvt;
  70   1              cvt=arg;
  71   1              for(i=1;i<3;i++){
  72   2                      n=cvt%16;
  73   2                      if(n<10){//0-9
  74   3                              buf[i]=0x30+n;
  75   3                      }
  76   2                      else{//A-F
  77   3                              buf[i]=55+n;//0x41+n-10
  78   3                      }
  79   2                      cvt >>=4;
  80   2              }
  81   1              buf[0]=2;
  82   1              return buf;
  83   1      }
  84          unsigned char *ltos(unsigned long arg){
  85   1              static unsigned char buf[11];
  86   1              unsigned char i;
  87   1              unsigned long cvt;
  88   1              i=0;
  89   1              cvt=arg;
  90   1              while(1){
  91   2                      i++;
  92   2                      buf[i]=0x30+cvt%10;
  93   2                      cvt /=10;
  94   2                      if(cvt==0){
  95   3                              break;
  96   3                      }               
  97   2              }
  98   1              buf[0]=i;
  99   1              return buf;
 100   1      }
 101          void putchark(unsigned char c){
 102   1              dst_buf[dst_head]=c; 
*** ERROR C202 IN LINE 102 OF PRINT.C: 'dst_head': undefined identifier
 103   1              dst_head ++;
*** ERROR C202 IN LINE 103 OF PRINT.C: 'dst_head': undefined identifier
 104   1              dst_head %=DST_LEN; 
*** ERROR C202 IN LINE 104 OF PRINT.C: 'dst_head': undefined identifier
 105   1      }
 106          void print_char(unsigned char c){
 107   1              dst_buf[dst_head]=c; 
*** ERROR C202 IN LINE 107 OF PRINT.C: 'dst_head': undefined identifier
 108   1              dst_head ++;
*** ERROR C202 IN LINE 108 OF PRINT.C: 'dst_head': undefined identifier
 109   1              dst_head %=DST_LEN; 
*** ERROR C202 IN LINE 109 OF PRINT.C: 'dst_head': undefined identifier
 110   1              TDBdata_over=0;
*** ERROR C202 IN LINE 110 OF PRINT.C: 'TDBdata_over': undefined identifier
C51 COMPILER V7.06   PRINT                                                                 10/10/2006 14:05:19 PAGE 3   

 111   1              TI=1;
 112   1      }
 113          unsigned char printk (const char *fmtstr   /* format string        */
 114                      ,...){     /* additional arguments */
 115   1                              unsigned char *p;
 116   1                              unsigned char i;
 117   1                              unsigned char *ptr;
 118   1                              unsigned char arg_len;
 119   1                              va_list num_ptr;
 120   1                              static unsigned int argint;
 121   1                              static unsigned char argchar;
 122   1                              static unsigned long arglong;
 123   1                              va_start(num_ptr,fmtstr);
 124   1                              p=fmtstr;
 125   1                              arg_len=0;
 126   1                              while(*p!=0){
 127   2                                      if(*p=='%'){
 128   3                                              p++;
 129   3                                              if(*p=='d'){// %d
 130   4                                                      argint=va_arg(num_ptr,int);
 131   4                                                      arg_len++;
 132   4                                                      ptr=itos(argint);
 133   4                                                      for(i=ptr[0];i>=1;i--){
 134   5                                                              putchark(ptr[i]);
 135   5                                                      }
 136   4                                              }
 137   3                                              else if(*p=='c'){// %c
 138   4                                                      argchar=va_arg(num_ptr,char);
 139   4                                                      arg_len++;
 140   4                                                      ptr=itos((unsigned int )argchar);
 141   4                                                      for(i=ptr[0];i>=1;i--){
 142   5                                                              putchark(ptr[i]);
 143   5                                                      }
 144   4                                              }
 145   3                                              else if(*p=='x'){// %x unsigned int 
 146   4                                                      argint=va_arg(num_ptr,int);
 147   4                                                      arg_len++;
 148   4                                                      ptr=itosx(argint);
 149   4                                                      for(i=ptr[0];i>=1;i--){
 150   5                                                              putchark(ptr[i]);
 151   5                                                      }
 152   4                                              }
 153   3                                              else if(*p=='b'){// %bx unsigned char 
 154   4                                                      p++;
 155   4                                                      if(*p=='x'){
 156   5                                                              argchar=va_arg(num_ptr,char);
 157   5                                                              arg_len++;
 158   5                                                              ptr=ctosx(argchar);
 159   5                                                              for(i=ptr[0];i>=1;i--){
 160   6                                                                      putchark(ptr[i]);
 161   6                                                              }
 162   5                                                      }
 163   4                                              }
 164   3                                              else if(*p=='s'){//%s
 165   4                                                      ptr=va_arg(num_ptr,char *);
 166   4                                                      arg_len++;
 167   4                                                      for(i=0;i<100;i++){//max string len is 100.
 168   5                                                              if(*ptr=='\0'){
 169   6                                                                      break;
 170   6                                                              }
 171   5                                                              putchark(*ptr);
 172   5                                                              ptr++;
C51 COMPILER V7.06   PRINT                                                                 10/10/2006 14:05:19 PAGE 4   

 173   5                                                      }
 174   4                                              }
 175   3                                              else if(*p=='l'){//%l
 176   4                                                      arglong=va_arg(num_ptr,long);
 177   4                                                      arg_len++;
 178   4                                                      ptr=ltos(arglong);
 179   4                                                      for(i=ptr[0];i>=1;i--){
 180   5                                                              putchark(ptr[i]);
 181   5                                                      }
 182   4                                              }
 183   3                                      }
 184   2                                      else if(*p=='\n'){
 185   3                                                      putchark(0x0d);/* output CR  */
 186   3                                                      putchark(*p);//0x0a
 187   3                                      }
 188   2                                      else{
 189   3                                              putchark(*p);
 190   3                                      }
 191   2                                      p++;
 192   2                              }
 193   1                              va_end(num_ptr);
 194   1                              if(TDBdata_over){
*** ERROR C202 IN LINE 194 OF PRINT.C: 'TDBdata_over': undefined identifier
 195   2                                      TDBdata_over=0;
*** ERROR C202 IN LINE 195 OF PRINT.C: 'TDBdata_over': undefined identifier
 196   2                                      TI=1;
 197   2                              }
 198   1                              return arg_len;
 199   1      }

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

⌨️ 快捷键说明

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