一段C51程序,其他部分不管,下面贴出了串口部分,串口发送数据给上位机。
我要发送“LiMing”,可串口助手只接收到“L”
因在面包板上,可能是接触不好,按键后串口助手只能获得这样的结果:
有时没反应,有时出现一个L,有时连续出现两个L
系统晶振是11.0592
串口是用串口usb下载模块连接电脑的。
void main()
{
TMOD=0x22;
TH1=0xFD;
TL1=TH1;
EA=1; ET0=1; //全局中断允许,T0中断允许
TR0=1; //T0运行
TR1=1; //T1运行
REN=1; //串口接收允许
SM0=0; SM1=1; //串口工作方式1
ES=1; //串口中断允许
keyTestSat=0;
while(1)
{
keyScan();
}
}
void keyScan() //键盘检测
{
if (keyTestSat==0)
{
if (keyTest==0)
{
delayms(10);
if (keyTest==0)
{keyTestSat=1;
sendmsg();
}
}
}else{
if (keyTestSat==1)
{
delayms(10);
keyTestSat=0;
}
}
}
void delayms(uchar xms) //延迟调用
{
uchar i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void sendmsg()
{
uchar a,b,c,d,e,f;
a='L'; b="i"; c="M"; d="i"; e="n"; f="g";
TR0=0;
ES=0;
SBUF=a; while(!TI);
SBUF=b; while(!TI);
SBUF=c; while(!TI);
SBUF=d; while(!TI);
SBUF=e; while(!TI);
SBUF=f; while(!TI);
ES=1; //允许串口中断
reSetIR();
TR0=1;
}
|