串口中断接收标志位在初始化后就置1

源码先贴上来:

串口部分:
#include
#include"uart.h"

sbit LED1=P1^4;
unsigned char a;
unsigned char flag;

void configure_uart0(void)
{
P3_2=0; //485接收模式
S0CON|=0x50; //设置为串口0模式1,使能串口接收
PCON|=0x80;
// PFCON&=0xcf;
AUX|=0x80;
S0RELH =0x03;
S0RELL =0xDC;
IEN0|=0x90; //开总中断和串口中断

// TI = 0; //发送标志初始化
RI = 0;
LED1=1;
}

void uart0_TX(void)
{
P3_2=1; //485发送模式
if(flag==1)
{
flag=0;
S0BUF=a;
while(!TI);
TI=0;
LED1=1;
}
P3_2=0; //485接收模式
}

void uart0_Rec(void) interrupt d_UART0_Vector
{
IEN0&=0xef; //关闭串口0中断
if(RI&&(S0BUF!=0))
{

a=S0BUF;
LED1=0;
flag=1;
RI=0;
}
else
{
TI=0;
}
IEN0|=0x10; //打开串口0中断
}

主函数部分:
#include
#include"uart.h"

void main()
{
configure_uart0();

while(1)
{
uart0_TX();
}

}

问题是这样的:在仿真时候,如果全速运行,在configure_uart0()完成后,串口0的中断标志位RI就自动置1了,RI不应该是单片机接收到数据才置1的吗?请教大神

 IEN0|=0x90; //开总中断和串口中断  ,中断开启要么是接受模式,要么是发送模式。。

你可以去看你芯片的手册,看看RI的定义。。。