小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 8640|回复: 8

串口通信问题求大神帮忙

[复制链接]
发表于 2015-8-8 12:21:03 | 显示全部楼层 |阅读模式
上位机连接路由接收数据正常, 串口助手发送数据stc51单片机接收不正确 ,改用38400波特率接收正确。这是怎么回事啊 ,求大神帮忙。
回复

使用道具 举报

发表于 2015-8-8 12:32:03 | 显示全部楼层
那就说明你的STC单片机的波特率是38400,而路由一般是9600,两边的波特率得一致才行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-8 12:38:31 | 显示全部楼层
file:///C:/Users/Administrator/Documents/Tencent%20Files/1012683625/FileRecv/MobileFile/IMG20150807193031.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-8 12:40:01 | 显示全部楼层
liuviking 发表于 2015-8-8 12:32
那就说明你的STC单片机的波特率是38400,而路由一般是9600,两边的波特率得一致才行。

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a;
uint buffer[3];
uint rec_flag=0;
/*-------------------------------------------------------------*/
//串口初始化
void UART_Init(void)
{
        TMOD = 0x20;
        PCON=0x00;
        SCON = 0x53;
        TH1 = 0xfd; //设置波特率 9600
        TL1 = 0xfd;
        TR1 = 1; //启动定时器1
       
        ES = 1; //开串口中断
        EA = 1; //开总中断
        IT0=0;
        EX0=1;

}

/*-------------------------------------------------------------*/
//主函数
void main(void)
{
        UART_Init(); //初始化串口
        while(1)
        {
       
        }
}

void Communication_Decode(void)
{
        if(buffer[0]==0x00)
        {
                switch(buffer[1])
                {
                        case 0x01:P1=0xF6; return;
                        case 0x02:P1=0xF9; return;
                        case 0x03:P1=0xF5; return;
                        case 0x04:P1=0xFA; return;
                        case 0x00:P1=0x00; return;
                        default: return;
                }
        }
        else
        {
                return;
        }
        SBUF=a;
//        ES=1;
}

/*-------------------------------------------------------------*/
//串口接收中断函数
void INT_UartRcv(void) interrupt 4
{
        static int i;


        if(RI==1)
        {
                RI = 0;
                if(rec_flag==0)
                {
               
                        if(SBUF==0xff)
                        {
                                rec_flag=1;
                                i=0;
                        }
                }
                else
                {
                        if(SBUF==0xff)
                        {
                        //  rec_flag=0;
                                if(i==2)
                                {
                                    rec_flag=0;
                                        Communication_Decode();
                                        //ES=0;
                                }
                                i=0;
                        }
                        else
                        {
                                buffer=SBUF;
                                i++;
                                a=SBUF;
                        }
                }
        }
        else
        {                                                                                                                                                                                                                                                                                                                                  
     TI = 0;
    }

}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-8 12:41:31 | 显示全部楼层
liuviking 发表于 2015-8-8 12:32
那就说明你的STC单片机的波特率是38400,而路由一般是9600,两边的波特率得一致才行。

这程序应该是9600吧 ,我把P1口接led了 怎么发送都没变化
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-8 12:50:39 | 显示全部楼层
大神们来帮帮忙
回复 支持 反对

使用道具 举报

发表于 2015-8-8 14:03:32 | 显示全部楼层
qupeng 发表于 2015-8-8 12:50
大神们来帮帮忙

路由器波特率多少?串口出来的正常吗?单片机晶振多少
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-8 14:24:54 | 显示全部楼层
whble 发表于 2015-8-8 14:03
路由器波特率多少?串口出来的正常吗?单片机晶振多少

路由波特率9600 上位机通过路由发送数据串口助手接收正常 单片机11.0592
咋回事呢
回复 支持 反对

使用道具 举报

发表于 2015-8-8 20:41:16 | 显示全部楼层
你这个典型的串口初始化问题,很多人把串口初始化 配置的 跟你一模一样 ,出的问题也一模一样,你最好看下寄存器手册。不是TH1 = TL1 = 0xfd;就是可以的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-11-26 07:16 , Processed in 1.110115 second(s), 18 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表