为什么51单片机一上电就进一次串口接受中断 5

voidmain(){EA=0;port_init();OSC_init();EA=1;timer1_init();uart0_init();CLRDog();Forbi... void main()
{
EA=0;
port_init();
OSC_init();
EA=1;
timer1_init();
uart0_init();
CLRDog();
ForbidDog();
i=0;

while(1)
{
uart0_tx();
}
}

/*
函数:uart0中断函数
*/
void uart0_rx() interrupt 4
{
RI0=0; //清除串口中断标志
P4=0x25;
RXBUFFER[i]=SBUF0;
i+=1;
if(i==16)
{
i=0;
P4=0x33;
}
}

void uart0_tx()
{
if((RXBUFFER[0]==0x68)&&(RXBUFFER[15]==0x16))
{
P5=0x25;
for(j=0;j<16;j+=1)
{
SBUF0=0x68; //收什么发什么
while(TI0==0); //等到TI0=1
TI0=0; //清发送中断标志位
}
P5=0x33;
}
else
return;
}
吧发送函数屏蔽就可以 为什么啊

大神解释啊
展开
 我来答
百度网友186dfeac08
2013-11-04 · TA获得超过754个赞
知道小有建树答主
回答量:1074
采纳率:50%
帮助的人:532万
展开全部
不要这样啊,EA=1;不要放在前面,要放在while(1)前面,这样可以避免串口中断了。你连初始化都没进行完,就开EA,谁知道会产生什么莫名其妙的问题哦!
追问
照你的方式做了没管用
追答
完整的程序,弄上来看看!
一万光年MEGn0
2013-11-04 · TA获得超过3712个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1081万
展开全部
void uart0_rx() interrupt 4

串口中断没有清除中断标志。
更多追问追答
追问
RI0=0; 这不是请了吗
追答
是不是初始化有问题啊
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
madaraii
2013-11-04 · TA获得超过668个赞
知道小有建树答主
回答量:842
采纳率:41%
帮助的人:288万
展开全部
EA=1挪到主循环前一行,
在EA=1之前,把TI、RI都给清下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式