用的STC89C52RC单片机,晶振频率24M,串口调试工具是STC-ISP软件自带的。程序是书上的。
我从上位机发送一个字符(如X)为什么我在串口助手中只能收到I get,偶尔可以收到I get X.这是为什么?
我以前是可以收到完整的I get X的。程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char flag,a,i;
uchar code table[] = "I get";
void init()
{
PCON = 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
TMOD = 0x20;
TH1 = 0xf3;
TL1 = 0xf3;
ET1 = 0; //禁止定时器1中断
TR1 = 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;
} |