用串口调试助手给单片机发数据再将得到的数据返回给上位机,可是我做的中断只能显示2个字符,请高手解答?

2024-12-26 17:09:02
推荐回答(2个)
回答1:

还能打出亮个字符?真不容易,怎么搞出来的呀,你的接收过程都没完成,怎么打出来的呢?

void Receive_Uart() interrupt 4
{
ES=0;

if(RI&&(a<=string_max))
{
RI=0;
buffer_uart[a++]=SBUF;
if(SBUF=='\r'||SBUF=='\n')//为了压缩空间
a--;
if(buffer_uart[a]=='\0'||a>=string_max-1)
{// lcd(buffer_uartdelay(10););delay(10);
flag=1; }//收完的标识
if(a>string_max)
ES=0;
}
}

你进了串口中断就关闭了中断使能ES,但直到中断结束也没有再次打开中断,也就是说收到了一个字符后就再也无法进入串口中断,你一共就收到一个‘E’,还没机会打开flag标志来启动发送,居然能在串口收到“ER”,实在不懂。

1.建议你在初始化程序中将flag和buffer_uart数组初始化为0。
2.中断程序的最后要加上
ES=1;
位置就在最后一个括号之前,改了先看看效果怎么样吧。

回答2:

QT我没有用过
界面自己想办法

只要是c/c++编程,都可以通过调用系统API与串口通信
有本VC与串口通信的书,里面也有提到用C语言操作串口的

建议看这本书
VisualC++/TurboC串口通信编程实践