一个简单的单片机串口通信例程,为何结果不正确?

2019-03-24 18:13发布

单片机与PC串口连接,com1,9600,8位,奇偶检验无,停止位1
用到别人的例程如下,希望的结果是,用串口助手发送数字(如01),单片机接收到加1后送给PC并在串口助手接受区显示结果(应为02);出现的问题:能发(如01),能收(仍为01),没有进行加1运算!以下代码有问题吗?
#include <reg52.h>
typedef   unsigned char  uint8;
typedef   unsigned int   uint16;

uint8 num = 0;

void UART_init(void)
{
SCON = 0x50;
TMOD = 0x20;
TH1  = 0xFD;
TL1  = 0xFD;
TR1  = 1;
ES   = 1;
EA   = 1;
}
main()
{
UART_init();
while(1);
}

void interrupt_uart() interrupt 4
{
if(TI)
{
TI = 0;
REN = 1;
}
if(RI)
{
RI = 0;
num = SBUF;
num++;
SBUF = num;
REN  = 0;
}
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
ahshmj
1楼-- · 2019-03-25 02:16
需要判断发送完成否,再进行下一步操作。

一周热门 更多>