首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

51单片机串口通讯有关问题

2012-10-29 
51单片机串口通讯问题一段C51程序,其他部分不管,下面贴出了串口部分,串口发送数据给上位机。我要发送“LiMin

51单片机串口通讯问题
一段C51程序,其他部分不管,下面贴出了串口部分,串口发送数据给上位机。
我要发送“LiMing”,可串口助手只接收到“L”
因在面包板上,可能是接触不好,按键后串口助手只能获得这样的结果:
有时没反应,有时出现一个L,有时连续出现两个L
系统晶振是11.0592
串口是用串口usb下载模块连接电脑的。
新手上路,烦请老鸟指教,谢谢。

C/C++ code
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; }


[解决办法]
a='L'; b='i'; c='M'; d='i'; e='n'; f='g';
另外加个:TI=0;

热点排行