串口通信,用串口调试助手调试时为什么只能显示一个字符,字符串部分显示不了

#include<reg51.h>
void UART_Init( void );
void Send_Char( unsigned char dat);
void Send_StringChar( unsigned char *dat);
void main ()

{
UART_Init();
Send_Char('A');
Send_StringChar("HHHH");
while(1);
}
/****串口初始化****/
void UART_Init( void )
{
SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80 ; //SMOD=1;
TH1 = 0xF4 ; //Baud:4800 fosc=11.0592MHz
TL1 = 0xF4 ;
TR1 = 1 ;
ES = 1;
}
/****向串口发送一个字符 ****/
void Send_Char( unsigned char dat)
{
SBUF=dat;
while (!TI);
TI= 0 ;
}
/****向串口发送一个字符串****/
void Send_StringChar( unsigned char *dat)
{
while (*dat != '\0');
{
Send_Char(*dat++);
}
}

1.发送字符前打印出数据printf("send data=%d,%c\n", *data,*data); //打印出ASCII码和字符
2.指针data采用的自增操作,这表明data是一个字符数组,其内存地址必须是连续的,不然data++可能成为野指针
打印出这个字符的指针地址printf("data=[%x][%d][%c]\n",data, *data, *data);
3.unsigned char是无符号字符,取值范围[0,255],32位机上占一个字节,如果传递的数据超去,会截掉高位,留下低8位
4.应该就是上面的问题,跟踪调试一下吧,打出每一个字符的值及所在内存地址追问

加了之后,串口助手都没有数据接收了  就是完全接收不了,而不是显示不出来

程序应该是没有问题的吧

一般不打印出数据串口助手应该也会显示出吧

追答

    检查COM3的波特率及协议N,8,1

    串口是独占的,如果串口助手打开了COM3.软件就不能使用COM3了

    你可以下载一个虚拟串口工具,它会形成一对串口,比如COM1和COM2

    COM1给程序使用,COM2给串口工具使用,而COM1和COM2又是连接好的

    ,程序向COM1发数据,COM2会收到数据

追问

不是这个的问题,我在每一步插入了一行Send_Char('6');试了下,这个函数Send_StringChar("HHHH");以下都没有运行,不知道为什么

温馨提示:内容为网友见解,仅供参考
无其他回答

串口通信,用串口调试助手调试时为什么只能显示一个字符,字符串部分显 ...
4.应该就是上面的问题,跟踪调试一下吧,打出每一个字符的值及所在内存地址

串口调试助手窗口不显示内容
没有接收到数据。1、如果串口调试助手HEX和字符模式的窗口没有显示内容,那么说明串口没有接收到数据,单片机程序和数据线两个方面分别检查一下。2、试试不同的串口助手或者不同版本,有时候是你串口助手自身可能出现了问题。先把USB转TTL模块的RX和TX短接,自测一下,全屏到处看一下设置部分,有无可疑...

为什么串口调试只显示 占崭,是不是 乱码,怎么办?
你在你发送端设置一下只发送一串数字,如0x51 00 0x52; 在接收端 你接收模式改成16进制显示。这样就方便你验证了

串口调试助手显示字符
一般串口软件都有Hex模式和字符串模式,不选Hex模式即可。如下图格西烽火软件所示。

串口调试助手显示乱码
可能是串口助手的原因,可以备用几个做比较,例如格西烽火、SSCOM等,都比较稳定。

串口调试助手显示乱码
你 发送的 可能是 2进制数 不是 ascii 码,所以 显示乱码 你可以 传输之前,转换 为 字符串 接收 后 程序 编程 转换 串口调试助手 也可以 选择 16进制显示 祝你顺利

RS232C串口通信,用串口调试助手发送指令后设备(出钞模块)没反应。_百 ...
估计你的协议输入的有问题,一般的协议都有数据头、地址码、数据长度、功能码、校验码、结束符之类的,如果你只是简单的发送指令的话,设备在判断接收的时候没有按照最先的设定规定,它是不会做出反应的!另外就是你要确保设备是完好的,另外通信线都保证正确,祝你成功!

使用串口调试助手(RS232),为什么电脑上只有一个串口?(COM1)
常规com口根据硬件来 的,台机 的话有 一个或者多个。现在的笔记本都是没有的。需要买usb转串口的或者买扩展的串口卡。淘宝上都有的卖的。至于你选哪一个,右击我的电脑,依次选择“属性”,“硬件”,“设备管理器”, 查看端口,看看你的是哪个口,如“com1”你就选com1."com2"你就选com2 ...

利用LabVIEW的串口通信,为什么上位机发送一个字符串,而单片机只接收到前...
我做过labvIEW的编程,我做的是USB通讯,首先你可以用串口调试助手发送一串字符,看下位机是否接收正常,如果不正常,那么就一定是你的程序出错;如果一切正常,那么你再看labvIEW的发送命令程序,因为发送的时候应该是字符串格式(看你的描述),那么你要确定字符串的长度,如果有buffer的话还要确定它的...

在用串口调试助手时为什么不能接收数据?
1、可能是串口调试助手的各个选项以及通信协议(波特率等)设置不合适,需要重新更改,以确保PC机可以正确采样。2、可能是输入波形不正确 3、可能物理连接不正确;4、单片机不能正常工作;5、可能是通信参数不正确;6、单片机的BAUD因子没有调整好,因为PC的BAUD比较准,单片机不太准,容易误码。

相似回答