51单片机串口通讯问题
一段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; }