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

📄 cmdproc.lst

📁 C51单片机的C语言例程,可实现定时器中断及其时钟功能的源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
  13            "RDALM        -- Display Alarm Time\r\n"      
  14            "CLALM        -- Clear Alarm Time\r\n";       
  15          enum {
  16            CID_SET_CLK,  
  17            CID_READ_CLK, 
  18            CID_SCAN_CLK,         
  19            CID_SET_ALM,  
  20            CID_READ_ALM, 
  21            CID_CLR_ALM,          
  22            CID_LAST      
  23          };      
  24                  
  25          struct cmd_st { 
  26            const char *cmdstr;   
  27            unsigned char id;     
  28          };      
  29                  
  30          static pdata struct cmd_st cmd_tbl [] = {       
  31              { "STCLK",          CID_SET_CLK },  
  32              { "RDCLK",          CID_READ_CLK }, 
  33              { "SCCLK",          CID_SCAN_CLK }, 
  34              { "STALM",          CID_SET_ALM },  
  35              { "RDALM",          CID_READ_ALM }, 
  36              { "CLALM",          CID_CLR_ALM },  
  37          };      
  38                  
  39          #define CMD_TBL_LEN (sizeof (cmd_tbl) / sizeof (cmd_tbl [0]))   
  40                          
  41          static unsigned char cmdid_search (char *cmdstr) {      
C51 COMPILER V7.50   CMDPROC                                                               04/01/2006 14:08:05 PAGE 4   

  42   1              struct cmd_st *ctp;     
  43   1              for (ctp = cmd_tbl; ctp < &cmd_tbl [CMD_TBL_LEN]; ctp++) {      
  44   2                if (strcmp (ctp->cmdstr, cmdstr) == 0)        
  45   2                  return (ctp->id);   
  46   2                }             
  47   1              return (CID_LAST);      
  48   1      }       
  49                  
  50          char *strupr ( char *src )      {       
  51   1      char *s;        
  52   1              for (s = src; *s != '\0'; s++)  
  53   1        *s = toupper (*s);    
  54   1              return (src);   
  55   1      }       
  56                  
  57          /* 命令处理 */
  58          void cmd_proc (const char *cmd) {       
  59   1              xdata char cmdstr_buf [1 + MAX_CMD_LEN];    
  60   1              xdata char argstr_buf [1 + MAX_CMD_LEN];        
  61   1              char *argsep;   
  62   1              unsigned char id;       
  63   1              
  64   1              strncpy (cmdstr_buf, cmd, sizeof (cmdstr_buf) - 1);     
  65   1              cmdstr_buf [sizeof (cmdstr_buf) - 1] = '\0';    
  66   1              strupr (cmdstr_buf);                    
  67   1              argsep = strchr (cmdstr_buf, ' ');              
  68   1              if (argsep == NULL)  {  
  69   2                argstr_buf [0] = '\0';        
  70   2          }   
  71   1              else {  
  72   2                strcpy (argstr_buf, argsep + 1);      
  73   2                *argsep = '\0';       
  74   2          }                
  75   1              id = cmdid_search (cmdstr_buf); 
  76   1      switch (id) {   
  77   2                unsigned long tm;                     
  78   2                case CID_SET_CLK:     
  79   2                  if (strtotm (&tm, argstr_buf) != 0) 
  80   2                    goto CMDERR;      
  81   2                  clock_set (tm * 100);       
  82   2                  break;                      
  83   2                case CID_READ_CLK:    
  84   2                  clock_out_time ();  
  85   2                  break;                      
  86   2                case CID_SCAN_CLK:    
  87   2                  if (strcmp (argstr_buf, "ON") == 0) 
  88   2                    clock_scan (1);   
  89   2                  else if (strcmp (argstr_buf, "OFF") == 0)   
  90   2                    clock_scan (0);   
  91   2                  else        
  92   2                    goto CMDERR;      
  93   2                  break;                      
  94   2                case CID_SET_ALM:     
  95   2                  strcat (argstr_buf, "00");  
  96   2                  if (strtotm (&tm, argstr_buf) != 0) 
  97   2                    goto CMDERR;      
  98   2                  alarm_set (tm / 60);        
  99   2                  break;                      
 100   2                case CID_READ_ALM:    
 101   2                  alarm_out_time ();  
 102   2                  break;                      
 103   2                case CID_CLR_ALM:     
C51 COMPILER V7.50   CMDPROC                                                               04/01/2006 14:08:05 PAGE 5   

 104   2                  alarm_clr ();       
 105   2                  break;                      
 106   2                case CID_LAST:        
 107   2              CMDERR: 
 108   2                  com_puts (helptext);        
 109   2                  break;      
 110   2              }       
 111   1      }       
C51 COMPILER V7.50   CMDPROC                                                               04/01/2006 14:08:05 PAGE 6   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


_strtotm . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
CID_READ_ALM . . . . . . . . . . . . .  E_CONST  -----  U_CHAR   -----  1
CID_READ_CLK . . . . . . . . . . . . .  E_CONST  -----  U_CHAR   -----  1
size_t . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
CID_SCAN_CLK . . . . . . . . . . . . .  E_CONST  -----  U_CHAR   -----  1
_strupr. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  src?142. . . . . . . . . . . . . . .  AUTO     DATA   PTR      0000H  3
  s?143. . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0003H  3
_clock_set . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_alarm_set . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_cmd_proc. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  cmd?244. . . . . . . . . . . . . . .  AUTO     DATA   PTR      0000H  3
  tm?245 . . . . . . . . . . . . . . .  AUTO     DATA   U_LONG   0006H  4
  cmdstr_buf?246 . . . . . . . . . . .  AUTO     XDATA  ARRAY    0000H  41
  argstr_buf?247 . . . . . . . . . . .  AUTO     XDATA  ARRAY    0029H  41
  argsep?248 . . . . . . . . . . . . .  AUTO     DATA   PTR      0003H  3
  id?249 . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  CMDERR . . . . . . . . . . . . . . .  LABEL    CODE   LABEL    -----  -----
alarm_clr. . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_cmdid_search. . . . . . . . . . . . .  STATIC   CODE   PROC     0000H  -----
  cmdstr?040 . . . . . . . . . . . . .  AUTO     DATA   PTR      0000H  3
  ctp?041. . . . . . . . . . . . . . .  AUTO     DATA   PTR      0003H  3
CID_CLR_ALM. . . . . . . . . . . . . .  E_CONST  -----  U_CHAR   -----  1
_com_puts. . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
cmd_tbl. . . . . . . . . . . . . . . .  STATIC   PDATA  ARRAY    0000H  24
CID_SET_ALM. . . . . . . . . . . . . .  E_CONST  -----  U_CHAR   -----  1
CID_SET_CLK. . . . . . . . . . . . . .  E_CONST  -----  U_CHAR   -----  1
clock_out_time . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
alarm_out_time . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
CID_LAST . . . . . . . . . . . . . . .  E_CONST  -----  U_CHAR   -----  1
helptext . . . . . . . . . . . . . . .  STATIC   PDATA  ARRAY    0018H  224
_toupper . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_strcat. . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_clock_scan. . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_strncpy . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_strchr. . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
cmd_st . . . . . . . . . . . . . . . .  * TAG *  -----  STRUCT   -----  4
  cmdstr . . . . . . . . . . . . . . .  MEMBER   -----  PTR      0000H  3
  id . . . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0003H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    444    ----
   CONSTANT SIZE    =     46    ----
   XDATA SIZE       =   ----      82
   PDATA SIZE       =    248    ----
   DATA SIZE        =   ----      22
   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 + -