串口通信时上位机接收不到数据,没有延时时可以接收到。为什么?

#include<reg52.h>#include<stdio.h>#include<string.h>#defineucharunsignedchar#defineui... #include<reg52.h>
#include<stdio.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
uchar t[5]="start";
int i;uchar a[5];
sbit Door=P2^5;
/******************延时子程序********************/

void delayus(uint us)
{
uint i,j;
for (j=0;j<us;j++)
for (i=0;i<10;i++);
}
void main()
{
TMOD=0x20;
TH1=0xfd;TL1=0xfd;
SM1=1;SM0=0;
REN=1;ET1=1;TR1=1;ES=1;
Door=1;

while(1)
{

for(i=0;i<5;) //输入到数组里
{
RI=0;
while(RI==0); //如果在此处定义的字符串的长度位6位的话,就会一直等待第六个输入,造成程序无法执行
{
a[i]=SBUF;
i++;
P1=a[i];
delayus(3000);
}
}
for(i=0;i<5;) //通过单片机输出到电脑
{
SBUF=a[i];
while(TI==0);i++;TI=0;
}
}
}
展开
 我来答
langqiong261
2011-04-18 · TA获得超过1161个赞
知道小有建树答主
回答量:1175
采纳率:0%
帮助的人:1188万
展开全部
接收采用中断方式,加了延时的话,数据已经发过去了,你还没读到。
追问
但是等了好久也没有收到,估计有三分钟了。
追答
都说了接收这种方式不可靠了,用中断。你这个程序不是卡在单片机发而是单片机收。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式