串口调试助手向单片机发送一串数字,单片机只显示最后一位,该怎么解决? 5

利用串口调试助手发送一串数字如:11223344。单片机接收任意一位数字,重新组合显示在lcd1602上。但我的程序只能接收最后一位,下面是我写串口程序,大神们帮忙解决。... 利用串口调试助手发送一串数字如:11223344。单片机接收任意一位数字,重新组合显示在lcd1602上。但我的程序只能接收最后一位,下面是我写串口程序,大神们帮忙解决。
/*----------------------------
UART1初始化
-----------------------------*/
void InitUART(void)
{
SCON = 0x50; //8位可变波特率
AUXR1= AUXR1 & 0x3F;
AUXR = 0x40; //定时器1为1T模式
TMOD = 0x20; //定时器1为模式2(8位自动重载)
TL1 = 0xDC; //设置波特率重装值
TH1 = 0xDC;
TR1 = 1; //定时器1开始工作
ES = 1; //使能串口中断
EA = 1;
}
/*----------------------------
UART 中断服务程序
-----------------------------*/
void Uart() interrupt 4 using 1
{
uint m=0;
while(RI)
{
RX_BUF4[m]=SBUF;
m++;
RI=0;
flag1=1;
}

if (TI)
{
TI = 0; //清除TI位
}
}
展开
 我来答
cjj796
推荐于2018-04-11 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3461万
展开全部
你好!!
你每次串口中断的时候都会 uint m=0;
那你 m++ 还有什么意义,把 uint m=0; 拿到中断的外面;中断结束后 m 清零
还有,别用 while 循环,用 if 判断
wgq930
2013-10-16 · TA获得超过2262个赞
知道大有可为答主
回答量:4926
采纳率:51%
帮助的人:1935万
展开全部
定义这个数字了吗? RX_BUF4[m], M=8!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tony_sgt
2013-10-16 · TA获得超过8423个赞
知道大有可为答主
回答量:5330
采纳率:66%
帮助的人:1205万
展开全部
把while(RI)改成 if(RI)
追问
我试过了,还是会出现同样的问题。
追答
看下你的显示程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式