1.中断
定义了一个void Ser()interrupt4
{
RI=0;
RxData=SBUF;
flag=1
}
主程序void main()
SCON=0x50;
TMOD|=0x20;
TH1=0xE6;
TR1=1;
EA=1;
ES=1;
if(flag==1)
{
ES=0;
SBUF=RxData;
while(!TI);
TI=0;
ES=1;
flag=0;
}
不知道怎么回事,串口调试窗口里面要么收不到我发送的数据,要么很久才收到一个,然后又收不到了晶振我用的是12M,波特率是1200
2.flag问题
我在外面定义一个unsigned char flag=1;然后主程序里面if(flag==1){SBUF=buffer;}最后buffer怎么没办法赋值给SBUF,实在是费解。。。本人小白一个,还请各路大神予以细心解答,感激不尽!!!
------解决思路----------------------
1、你主程序要弄个死循环,不然跑完直接一下就跑飞了
2、中断和主程序中都用到的变量 要定义成volatile类型,至于原因自己谷歌,不作多余解释了。
volatile unsigned char flag=1;
------解决思路----------------------
不错,没有死循环,主程序一下就跑完了,这时接收中断还没收到字符呢。把if(flag==1) 到flag=0这段放到一个死循环里面反复执行。另外flag应该初始化为0