找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3811|回复: 4
收起左侧

串口调试软件接收的数据和示波器测的数据不同?求教。

[复制链接]
ID:103038 发表于 2017-3-20 16:09 | 显示全部楼层 |阅读模式
程序如下:
#include<reg51.h>

#define uint unsigned int
#define uchar unsigned char

uchar SendAscii_Startflag,receivedata[12];
sfr AUXR=0x8e;
void delay0(unsigned int i)
{
         while ((i--)!=1 );         // 延时10*i个机器周期,晶振频率11.05926hz;
}

void Uart_Time1_Init()
{
             /*采用波特率加倍*/
        PCON |= 0x80;                //使能波特率倍速位SMOD
        SCON = 0x50;                //8位数据,可变波特率
        AUXR &= 0xBF;                //定时器1时钟为Fosc/12,即12T
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //清除定时器1模式位
        TMOD |= 0x20;                //设定定时器1为8位自动重装方式
        TL1 = 0xFA;                //设定定时初值
        TH1 = 0xFA;                //设定定时器重装值
        ET1 = 0;                //禁止定时器1中断
        TR1 = 1;                //启动定时器1
        ES=1;                           //串口中断允许位;
        EA=1;                   
}

void Laser_Configuration()
{
        uchar i;
        ES=0;
        for(i=0;i<SendAscii_Startflag;i++)
        {
                SBUF=receivedata[i];
                while(!TI);
                TI=0;
        }       
        ES=1;
        SendAscii_Startflag=0;
}

void main()
{
        Uart_Time1_Init();
        while(1)
        {
                Key_Scan();
                if(SendAscii_Startflag==5)
                        Laser_Configuration();
        }       
}

void Uart_ser() interrupt 4                  //串口中断;
{
        ES=0;
        if(RI)
        {
                RI=0;
                receivedata[SendAscii_Startflag]=SBUF;
                SendAscii_Startflag++;
        }  
        if(TI)
                TI=0;
        ES=1;
}


用不同的串口调试软件发送的数据和接收的数据不同;用示波器测得的rxd,txd数据是对的。是以示波器为主吗?谢谢!!
回复

使用道具 举报

ID:111634 发表于 2017-3-20 17:47 | 显示全部楼层
本帖最后由 zl2168 于 2017-3-20 17:48 编辑

匹配问题。给你个参考案例,对照检查一下。单片机与PC机虚拟串行通信


Proteus仿真一下,确认有效。
实验16 与PC机虚拟串行通信.rar (151.41 KB, 下载次数: 8)
回复

使用道具 举报

ID:151348 发表于 2017-3-20 21:18 | 显示全部楼层
收发双方的波特率匹配吗
回复

使用道具 举报

ID:103038 发表于 2017-3-21 09:09 | 显示全部楼层
imxuheng 发表于 2017-3-20 21:18
收发双方的波特率匹配吗

是的,都是9600。
回复

使用道具 举报

ID:103038 发表于 2017-3-21 09:26 | 显示全部楼层
zl2168 发表于 2017-3-20 17:47
匹配问题。给你个参考案例,对照检查一下。单片机与PC机虚拟串行通信

好的,我试试!谢谢!请问,设置串口通讯初始化的值有没有什么规律,还是说完全凭借经验或者别的什么??
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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