串口调试助手向单片机发送一串数字,单片机只显示最后一位,该怎么解决? 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位
}
} 展开
/*----------------------------
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位
}
} 展开
3个回答
深圳思驰科技有限公司_
2024-10-23 广告
2024-10-23 广告
深圳思驰科技是国内先进入芯片解密领域的公司,拥有数十年的丰富经验,成功帮助国内外企业、政府及知名科研机构攻克多个技术难题。在医疗电子、工控设备、军事航天、通信设备、广电设备、交通设备、汽车电子、家用电子等行业都成功推出了多款创新产品,熟悉这...
点击进入详情页
本回答由深圳思驰科技有限公司_提供
展开全部
定义这个数字了吗? RX_BUF4[m], M=8!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把while(RI)改成 if(RI)
追问
我试过了,还是会出现同样的问题。
追答
看下你的显示程序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询