标题: 串口通信问题 [打印本页]

作者: sky7    时间: 2015-10-22 20:47
标题: 串口通信问题
做郭天祥串口通信实验,在上位机用串口调试助手发送1个字符X,单片机收到字符返回给上位机“I get x”为什么我发送任意字符,都只是得到I get,而没有X呢

作者: 海哥沧海一笑    时间: 2015-10-22 21:15
程序贴出来,大家才能给你查看原因
作者: sky7    时间: 2015-10-23 12:26
#include<reg51.h>
#define uchar unsigned char
#define uint   unsigned int
uchar flag,a,i;
uchar code table[]="I get";
void init()
{
        SCON=0X50;                        //设置为工作方式1
        TMOD=0X20;                        //设置计数器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                                //计数器初始值设置,注意波特率是4800的
        TL1=0XF3;
        ES=1;                                                //打开接收中断
        EA=1;                                                //打开总中断
        TR1=1;                                        //打开计数器
}
                                               


void main()
{
        init();
        while(1)
                 {
                   if(flag==1)
                           {
                           flag=0;
                           ES=0;
                           for(i=0;i<6;i++)
                                     {
                                            SBUF=table[i];
                                            while(!TI);
                                            TI=0;
                                  
                                   }
                                     SBUF=a;
                                     while(!TI);
                                     TI=0;
                                     ES=1;
                                   flag=0;
                          }
                 
                 }
                 
                 
}

void ser()interrupt 4
{
  RI=0;
  a=SBUF;
  flag=1;
}

作者: sky7    时间: 2015-10-23 18:43
没人帮助一下吗

作者: sky7    时间: 2015-10-23 18:43
菜鸟积极求助
作者: 2423299621    时间: 2015-11-9 10:18
for(i=0;i<6;i++)
                                      {
                                             SBUF=table[i];
                                             while(!TI);
                                             TI=0;
                                    
                                    }把这段去掉、
作者: 2423299621    时间: 2015-11-9 10:56
                                    for(i=0;i<6;i++)
                                       {
                                              SBUF=table[i];
                                              while(!TI);
                                              TI=0;
                                    
                                     }把i<6改为i<5
  之前看错标题了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1