打印
[51单片机]

单片机怎么接收字符串

[复制链接]
2041|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
happywei|  楼主 | 2013-8-9 10:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 happywei 于 2013-8-9 15:34 编辑

本人新手,不知道程序怎么写,求高手指导51单片机接收命令字符串ESC%A、ESC%B、ESC%C,然后根据第三个字节A、B、C的内容执行相应的功能。
沙发
qzc13457| | 2013-8-9 10:22 | 只看该作者
void init_ser()
{
         
        TMOD=0X20;//定时器1工作在方式2  
        TH1=0XFD;
        TL1=0XFD;  //波特率9600
        TR1=1;
        EA=1;
        SM0=0;
        SM1=1;
        REN=1;//允许串口接收
        ES=1;//开串口 中断


}

void delay(unint z)
{
        unint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
                                          
}


void ser() interrupt 4         //中断函数不用声明  
{
       
        if(RI==1)
        {
                RI=0;
                ser_receive=SBUF;
                        if(ser_receive=='a')
                        {
                                m=1;
                        }       
                        if( m==1 && ser_receive!='z')
                        {
                                receive_data[i]=ser_receive;
                                i++;
//                                if(i==36)
//                                {
//                                        i=0;
//                                        ser_flag=1;
//                                }
                        }
                        else if        (ser_receive=='z')
                        {
                                i=0;
                                m=0;
                                ser_flag=1;
                                xianshi=1;
                        }

                          
        }
               
}
void uart()
{
        if(ser_flag==1)
                {
                        ES=0;
                        ser_flag=0;
                        for(j=0;j<57;j++)
                        {
                                SBUF=receive_data[j];
                                while(!TI);
                                TI=0;
                                delay(10);
                        }

                        ES=1;
                }


}
我刚写的,接受以a开始,以z结束的字符串,测试没问题。

使用特权

评论回复
板凳
qzc13457| | 2013-8-9 10:23 | 只看该作者
然后你根据你的命令改一下就行了

使用特权

评论回复
地板
huangxz| | 2013-8-9 10:28 | 只看该作者
跟接收十六进制没啥区别

使用特权

评论回复
5
NE5532| | 2013-8-9 14:37 | 只看该作者
收好收,看到0x00就结尾,难的是咋解析。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

17

帖子

0

粉丝