📄 cmdproc.lst
字号:
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 + -