标题: 单片机向电脑发送数据,为什么串口调试助手收不到数据 求助 [打印本页]

作者: 小霸王2    时间: 2017-3-17 14:47
标题: 单片机向电脑发送数据,为什么串口调试助手收不到数据 求助
单片机向电脑发送数据,为什么串口调试助手收不到数据
SCON = 0x40;   //配置串口为模式1
    TMOD &= 0x0F;  //清零T1的控制位
    TMOD |= 0x20;  //配置T1为模式2
    TH1 = 0xf3;  //计算T1重载值
    TL1 = TH1;     //初值等于重载值
    TR1 = 1;       //启动T1
    ES = 1;   //打开串口中断
    EA = 1;   //打开总中断
    while(1)
{
      SBUF = dat1;
          while(!TI);
          TI=0;
    }


作者: cjjcjj1    时间: 2017-3-17 14:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: le51    时间: 2017-3-17 16:40
可能是比特率设置的问题
作者: yzwzfyz    时间: 2017-3-17 16:51
你向外国人喊,要知道你回了你什么话,有三个条件:
1、他听懂了你的话
2、他回了你的话
3、你懂他的语言
作者: imxuheng    时间: 2017-3-17 17:06
试试我这个
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define BAUD 9600
#define XTAL 11059200

//****************************************
//延时
//****************************************
void delay(unsigned int k)       
{                                               
        unsigned int i,j;                               
        for(i=0;i<k;i++)
        {                       
                for(j=0;j<121;j++);
        }                                               
}
/***************************************************
                    发送一个字节
***************************************************/
void SendByte(unsigned char dat)
{
SBUF = dat;
while(!TI);
      TI = 0;
}
//**************************************************
void sendString(char *str)
{
while(*str!='\0')// \0 表示字符串结束标志,
                //通过检测是否字符串末尾
  {
  SendByte(*str);
  str++;
  }
}

void main()
{
        SCON = 0x50;
        TMOD = 0x20;
        PCON = 0x00;
        TH1 = (unsigned char)(256 - XTAL/12/32/BAUD);
        TL1 = TH1;
        TI   = 0;
        RI   = 0;
        TR1  = 1;
        IE   = 0x90;
        while(1)
        {
                sendString("abcd\r\n");
                delay(1200);
        }
}

tup.png (93.85 KB, 下载次数: 124)

tup.png

作者: mmm12345    时间: 2017-3-18 04:46
TL0=TH0是不是错了
作者: 小霸王2    时间: 2017-3-18 08:58
cjjcjj1 发表于 2017-3-17 14:51
你好!你的晶振用的多大的?串口接收波特率设置对了吗

晶振12m,比特率2400

作者: 小霸王2    时间: 2017-3-18 15:08
imxuheng 发表于 2017-3-17 17:06
试试我这个
#include
#define uint unsigned int

sbuf不是应该等于你要发的字符串么,dat是什么啊

作者: zl2168    时间: 2017-3-18 15:20
本帖最后由 zl2168 于 2017-3-18 15:21 编辑

单片机与PC机虚拟串行通信
实验16 与PC机虚拟串行通信.rar (151.41 KB, 下载次数: 63)

Proteus仿真一下,确认有效。
以上摘自张志良编著80C51单片机实用教程》ISBN978-7-04-044532-9,高教社出版。
书中电路和程序设计有详细说明,程序语句条条有注解。

作者: imxuheng    时间: 2017-3-18 16:07
小霸王2 发表于 2017-3-18 15:08
sbuf不是应该等于你要发的字符串么,dat是什么啊

SBUF = dat;这句就是你把你要发的给串口。
作者: zhihuizhihua    时间: 2020-3-25 11:46
imxuheng 发表于 2017-3-17 17:06
试试我这个
#include
#define uint unsigned int

我完全一样都没用,我也是11.052的晶振




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