Keil Cx51 V7.0单片机高级语言编程与uVision2应用实践
源代码在线查看: command.c
/************************************************************************/
/* */
/* Command Interpreter */
/* */
/* Author: Peter Dannegger */
/* danni@specs.de */
/* */
/************************************************************************/
#include
#include
typedef struct {
uchar code *name;
uchar (code *func)(uchar idata *);
}comm_struct;
comm_struct code comm_tab[] = { // 命令表
"inport", inport,
"outport", outport,
"help", help,
"?", help,
"", NULL // 命令表结束符
};
/****************************** 命令处理函数 ******************************
* 功能:根据串行口输入命令,查命令表,调用不同的命令函数
**************************************************************************/
uchar command( uchar idata *buf ) {
uchar i, j; // 最多可处理256个命令
for( i = 0;; )
for( j = 0;; ){
if( comm_tab[i].name[j] != 0 ){
if( ((comm_tab[i].name[j] ^ buf[j]) & 0x5F) == 0 ){
j++;
continue; // 下一个输入字符
}
i++;
break; // 下一条命令
}
if( j == 0 ) return 255; // 查表未找到命令返回错误号255
return comm_tab[i].func( buf+j ); // 执行命令
}
}