我输入1后但是回来的却是乱码,原本应该是i get 1,对吧!
#include<reg52.h>
#define uchar unsigned char
uchar flag,a,i;
uchar code table[]={'I',' ','g','e','t',' '};
void main()
{
TMOD=0X20; //开定时器2
TH1=0XFD; //自动八位重装
TL1=0XFD;
TR1=1; //开启定时器
REN=1; //允许串行接收
EA=1; //开总中断
ES=1; //串行口中断允许位
SM1=1; //选择模式1
SM0=0; //选择模式1
while(1)
{
/*if(RI==1)
RI=0;
P0=SBUF;
*/
if(flag==1) //标志位
{
ES=0;
for(i=0;i<6;i++)
{
SBUF=table[i];
while(!TI);
TI=0;
}
flag=0;
SBUF=a; //再将a送给SBUF ??????
while(!TI); //送数据。。。。。检测TI是否为1,串行发送停止位的中间时 由内部硬件使RI置1,开中断,后人工置0
TI=0;
ES=1;
}
}
}
void ser() interrupt 4 //进入串行中断
{
RI=0; // 接收时。。。。。 串行发送停止位的中间时 由内部硬件使RI置1,开中断,后人工置0
P1=SBUF; //P1接收SBUF中的数据
a=SBUF; //将SBUF送给a
flag=1; //开启标志位
}
|