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

📄 command.lst

📁 单片机和PC机串口通讯
💻 LST
字号:
C51 COMPILER V8.02   COMMAND                                                               09/14/2007 22:10:14 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE COMMAND
OBJECT MODULE PLACED IN command.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE command.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <command.h>
   2          
   3          
   4          #define STATE_WHITESPACE        0
   5          #define STATE_WORD                      1
   6          
   7          #define MAX_ARGS        MAX_CMD_LEN/4
   8          
   9          
  10          int argc, num_commands;
  11          char *argv[MAX_ARGS];
  12          int Help();
  13          int Dir();
  14          
  15          typedef int (*cmdproc)();
  16          
  17          typedef struct {
  18                  char *cmd;
  19                  char *hlp;
  20                  cmdproc proc;
  21          }CMD_STRUC;
  22          
  23          CMD_STRUC CMD_INNER[] =
  24                                          {       {"help", "show help", Help},
  25                                                  {"?", "= help", Help},
  26                                                  {"dir", "dir", Dir},
  27                                                  {NULL, NULL, NULL}
  28                                          };
  29          int Dir()
  30          {
  31   1              int i;  
  32   1              for(i=0;i<argc;i++)
  33   1              {
  34   2                      PrintStr(argv[i]);
  35   2                      PrintStr("\r\n");
  36   2              }
  37   1              for(i=0; CMD_INNER[i].cmd!=NULL; i++)
  38   1              {
  39   2                      if(CMD_INNER[i].hlp!=NULL)
  40   2                      {
  41   3                              PrintStr(CMD_INNER[i].cmd);
  42   3                              PrintStr("      ------  ");
  43   3                              PrintStr(CMD_INNER[i].hlp);
  44   3                              PrintChar('\r');
  45   3                              PrintChar('\n');
  46   3                      }
  47   2              }
  48   1              return 0;
  49   1      }
  50          int Help()
  51          {
  52   1              char i;
  53   1              for(i=0;i<argc;i++)
  54   1              {
  55   2                      PrintStr(argv[i]);
C51 COMPILER V8.02   COMMAND                                                               09/14/2007 22:10:14 PAGE 2   

  56   2                      PrintStr("\r\n");
  57   2              }
  58   1              PrintStr("Welcome you come here\r\n");
  59   1              PrintStr("2004.9.22\r\n");
  60   1              return 0;
  61   1      }
  62          
  63          int GetCmdMatche(char *cmdline)
  64          {
  65   1              int i,j;        
  66   1              char temp;
  67   1      
  68   1              for(i=0; CMD_INNER[i].cmd!=NULL; i++)
  69   1              {
  70   2                      j=0;
  71   2                      while(*(cmdline+j) != 0)
  72   2                      {
  73   3                              temp = *(cmdline+j);
  74   3                              if(temp > 'A' && temp < 'Z') temp=temp+32;
  75   3                              if(*(CMD_INNER[i].cmd+j) != temp)
  76   3                              {
  77   4                                      break;
  78   4                              }
  79   3                              j++;
  80   3                      }
  81   2                      if(*(CMD_INNER[i].cmd+j)==0&& *(cmdline+j)==0)
  82   2                      {
  83   3                              return i;
  84   3                      }
  85   2                      
  86   2              }
  87   1              return -1;
  88   1      }
  89          void ParseArgs(char *cmdline, int *argc, char **argv)
  90          {
  91   1              char *c;
  92   1              int state = STATE_WHITESPACE;
  93   1              int i;
  94   1      
  95   1              *argc = 0;
  96   1      
  97   1              if(strlen(cmdline) == 0)
  98   1                      return;
  99   1      
 100   1              /* convert all tabs into single spaces */
 101   1              c = cmdline;
 102   1              while(*c != '\0')
 103   1              {
 104   2                      if(*c == '\t')
 105   2                              *c = ' ';
 106   2                      c++;
 107   2              }
 108   1              
 109   1              c = cmdline;
 110   1              i = 0;
 111   1      
 112   1              /* now find all words on the command line */
 113   1              while(*c != '\0')
 114   1              {
 115   2                      if(state == STATE_WHITESPACE)
 116   2                      {
 117   3                              if(*c != ' ')
C51 COMPILER V8.02   COMMAND                                                               09/14/2007 22:10:14 PAGE 3   

 118   3                              {
 119   4                                      argv[i] = c;            //将argv[i]指向c
 120   4                                      i++;
 121   4                                      state = STATE_WORD;
 122   4                              }
 123   3                      }
 124   2                      else
 125   2                      { /* state == STATE_WORD */
 126   3                              if(*c == ' ')
 127   3                              {
 128   4                                      *c = '\0';
 129   4                                      state = STATE_WHITESPACE;
 130   4                              }
 131   3                      }
 132   2                      c++;
 133   2              }
 134   1              
 135   1              *argc = i;
 136   1      }
 137          int ParseCmd(char *cmdline, int cmd_len)
 138          {
 139   1              int num_commands;
 140   1      
 141   1              if(cmd_len == 0)return 0;
 142   1              ParseArgs(cmdline, &argc, argv);
 143   1      
 144   1              /* only whitespace */
 145   1              if(argc == 0) 
 146   1                      return 0;
 147   1              
 148   1              num_commands = GetCmdMatche(argv[0]);
 149   1              if(num_commands<0)
 150   1                      return -1;
 151   1                      
 152   1              if(CMD_INNER[num_commands].proc!=NULL)  
 153   1                      CMD_INNER[num_commands].proc();
 154   1                                      
 155   1              return 0;                       
 156   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1048    ----
   CONSTANT SIZE    =     76    ----
   XDATA SIZE       =    136      23
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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