打印

单片机通过串口接收字符串问题

[复制链接]
2064|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mzhang_dhu|  楼主 | 2009-2-8 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题。
大概流程是利用串口助手发送一个字符串到单片机,在lcd1602上显示。
我原来的思路是定义一个全局数组,单片机每一次SBUF上的数据存放在数组里。
程序如下:

//每一次中断,把接收到的字符存放在数组里
void receive() interrupt 4 using 1
{
       if(RI)
       {
             input[t] = SBUF;             
             t++;            
             SBUF = input[t];  //返回接收值
             if(TI)
             TI = 0;
             RI=0;
       }
       
}

void main(void)

   t = 0;
   initialLcd1602(); //1602初始化
   serial();    //串口初始化函数
    
   while(1)     
   { 
   if(t == 16)
   display_string(0,0,input);  //1602显示字符串     
   }
}  
其中,input[16]和t为全局变量。
但结果要么没有显示,要么就显示第一个。我想应该是数组没有很好的赋值。

接收单个字符没有问题,但是字符串就是有问题了。SBUF不是每次中断只接收一个8位的字节吗?为什么不能把接收到的值存到那个全局数组呢?
还望高手大侠帮帮忙阿~~

相关帖子

沙发
grady1125| | 2009-2-8 12:01 | 只看该作者

/

if(RI)
{
             input[t] = SBUF;
             RI=0;
             SBUF = input[t];  //返回接收值             
             t++;                        
}
if(TI)
{
             TI = 0;
             
}

使用特权

评论回复
板凳
mzhang_dhu|  楼主 | 2009-2-8 12:58 | 只看该作者

谢谢grady1125

先谢谢grady1125。修改之后可以正确返回发送值。但1602没显示了。不解阿

使用特权

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

本版积分规则

25

主题

66

帖子

0

粉丝