51单片机串口发送字符串,只想发送一次,结果在一直发送,求大神帮忙 10

voidmain(void){SCON=0x50;//REN=1允许串行接受状态,串口工作模式2TMOD|=0x20;//定时器工作方式2PCON|=0x80;//波特率... void main (void) {

SCON = 0x50; //REN=1允许串行接受状态,串口工作模式2
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80; //波特率提高一倍
// TH1 = 0xFD; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无(11.0592)
TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1; //开启定时器1
ES = 1; //开串口中断
EA = 1; // 开总中断
// IE = 0x0;
a=0;
while(MESSAGE[a] != '\0')
{
SBUF = MESSAGE[a]; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(!TI); // 等特数据传送 (TI发送中断标志)
TI = 0; // 清除数据传送标志
a++; // 下一个字符
}
delay(1000);
TR1 = 0; //无奈的我想关掉一切,但是还是不行
ES = 0; //
EA = 0;
}
展开
 我来答
匿名用户
2015-04-20
展开全部
TR1 = 0; //无奈的我想关掉一切,但是还是不行
ES = 0; //
EA = 0;

上面的语句放在 while 内试试吧
更多追问追答
追问
不行啊,之前还尝试了定义变量i,初值设为1,执行完发送后,值定为0,还是不行
while(i)
{
while(MESSAGE[a] != '\0'){}
TR1 = 0; //
ES = 0; //
EA = 0;
i=0;
}
追答
那就把转发直接放在接收里面,收一个转发一个字符
h5320196
2017-01-13 · 超过34用户采纳过TA的回答
知道答主
回答量:148
采纳率:0%
帮助的人:61万
展开全部
你看下,P3.1是不是还接有什么东西。又没看到你程序,只要程序没错多半是的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式