串口通信时上位机接收不到数据,没有延时时可以接收到。为什么?
#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;
}
}
} 展开
#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;
}
}
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询