单片机怎么与上位机通信

我用usb转串口连接单片机和电脑的,功能是在上位机上用串口调试助手发送一个字符x,单片机收到字符后返回给上位机“I get x”.程序和串口调试助手的图如下:
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar flag,a,i;
uchar code table[]="I get";
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
for(i=0;i<6;i++)
{
SBUF=table[i];
while(!TI);
TI=0;
}
SBUF=a;
while(!TI);
TI=0;
ES=1;
flag=0;
}
}
}
void ser() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}

我试过发送字符,但就是没用,希望大神解疑

就你这个程序没有问题,问题是在电脑上你用什么向单片机发送数据的,是用串口调试助手吗?那它的波特率是多少?这个程序在单片机上的波特率是9600,还有电脑和单片机的通信是实物吗,还是仿真呢?是实物的话,电脑和单片机怎么连接的,串口线有问题吧。
下图是仿真的结果,程序没有问题。追问

实物啊!我用usb转串口连接单片机和电脑的,波特率都设置的9600,图和程序写的一清二楚啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-31
用的什么芯片?追问

stc89c52rc

追答

建议用烧写软件自带的串口助手
这行,下面加一句话
TMOD = 0x20;
SCON = 0x50;

追问

推荐串口调试助手啊

追答

那句话加上了吗?

追问

加了,还是一样,我觉得我需要换个串口调试助手

追答

换烧写软件自带的啊

追问

自己想办法算了,不管如何,还是谢谢你!

本回答被提问者采纳
相似回答