* 名称 : unsigned char cmd_panduan(unsigned char *cmd_buf,unsigned char *cmd,unsigned char len)
* 功能 : 在指定长度内比较两个字符串是否一致
* 输入 : 指向字符串的指针cmd_buf,cmd 要比较的长度
* 输出 : 是:输出1,否:输出0
********************************************************************/
unsigned char cmd_panduan(unsigned char *cmd_buf,unsigned char *cmd,unsigned char len)
{
unsigned char i,j;
for(j=0;j<len;j++)
{
i=(cmd_buf[j+1]==cmd[j]);
if(i)
{
i=1;
}
if(i==0)
{
i=0;
break;
}
}
j=0;
return i;
}
/**************************************************************************
- 功能描述:51单片机的串口中断处理函数
- 隶属模块:STC51串口操作
- 函数属性:外部,使用户使用(在此中断函数中常用来处理从串口收到的数据)
- 参数说明:无
- 返回说明:无
- 注:振南的很多产品,都是配合“超级终端”来进行演示的,在“超级终端”中
敲入的命令就是从计算机的串口发出,由单片机从串口接收,接收到的串口
数据就在此中断函数中进行处理,完成命令接收及处理、命令解析等工作。单片机串口接收程序
**************************************************************************/
void com_ser() interrupt 4//串口中断处理函数,收到数据后产生中断,在这里处理
{
unsigned char data len=0; //命令字符串长度
if(RI)//如果数据已经接收完,即RI=1
{
RI=0; //对RI进行清零
cmd_buf[counter] = SBUF;//把收到的数据赋值给变量(注意接收的写法)
}
if(cmd_buf[counter]==0x0d) //如果串口输入回车,那么命令结束
{
cmd_buf[counter]=\0;
len=counter-1;
counter = 0;
flag=1;
}
else
counter = counter+1;
if(flag) //处理接收到的命令
{
if(cmd_panduan(cmd_buf,"led0_open",len))
{
led0=0;
UART_Send_Str("led0_open OK!\r");
}
if(cmd_panduan(cmd_buf,"led0_close",len))
{
led0=1;
UART_Send_Str("led0_close OK!\r");
}
if(cmd_panduan(cmd_buf,"led1_open",len))
{
led1=0;
UART_Send_Str("led1_open OK!\r");
}
if(cmd_panduan(cmd_buf,"led1_close",len))
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33992-4.html
南海那么大航线那么多美国为什么专走12海里这条路
已经翻了