串口通信,用串口调试助手调试时为什么只能显示一个字符,字符串部分显示不了
#include<reg51.h>voidUART_Init(void);voidSend_Char(unsignedchardat);voidSend_StringCh...
#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++);
}
} 展开
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个回答
展开全部
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.应该就是上面的问题,跟踪调试一下吧,打出每一个字符的值及所在内存地址
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会收到数据
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询