为什么我的程序只能发送一个字节到上位机
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
unsigned char flag,a,i;
unsigned char table[]="I get ";
void main()
{
SCON = 0x50;
TMOD = 0x20;
PCON = 0x80;
TH1 = 0xf3;
TL1 = 0xf3;
TR1 = 1;
EA = 1;
ES = 1;
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;
}
unsigned char flag,a,i;
unsigned char table[]="I get ";
void main()
{
SCON = 0x50;
TMOD = 0x20;
PCON = 0x80;
TH1 = 0xf3;
TL1 = 0xf3;
TR1 = 1;
EA = 1;
ES = 1;
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;
}
你这没有问题吧,不过我把你的波特率改了。我使用的11.0592MHz 9600的
TH1 = 0xfa;
TL1 = 0xfa;
输入a,结果:
I get aI get aI get a
---------------------------------------
不好意思,看错问题了!
应该是串口接收时被占用了吧!
TI = 0; 这句是不是有问题
这个没问题,这个是要软件清零
我把for语句删除后就可以发送多个字符串,这是为什么
TMOD是什么模式,自动重装载吗
是的....
是什么问题呢?
这是郭天祥的程序吧