if(RI) //判断是接收中断产生
你没有清除中断标志位,所以单片机以为一直发送,所以有你的问题,要加上清除标志位才可以
if(RI) //判断是接收中断产生
RI=0; //标志位清零
EA=0;
关掉中断
REN=0;
不允许接收
最后再加一句
while(1);
让他无限循环。
其实允许了中断,没有中断服务程序,C51会自动加上的。不过只有一句话RETI
。
没有编写中断程序,却开放了中断,导致程序飞了。
另外,主程序缺少主循环,也要跑飞。
试试下面的:
void main()
{
uchar i;
TMOD=0x20;
TL1=0xfd;
TH1=0xfd;
SCON=0x50;
PCON=0x00;
TR1=1;
while(1) { //加上这行.
i=0;
while(Head[i]!=0x00) {
SBUF=Head[i] ;
while(TI==0);
TI=0;
i++;
}
}
}