单片机 向 串口调试助手发送 字符 怎么显示奇怪符号
单片机为stc11L60xe;程序如下:#include "REG52.H"
#include "stdio.h"
#include "intrins.h"
#define SYSCLK 32000000
#define BAUD 9600
sfr AUXR = 0x8E ;
char code MESSAGE[]="hello wqs";
unsigned char a;
void main (void)
{
AUXR &= 0xbf; //定时器1时钟为Fosc/12,即12T
AUXR &= 0xfe; //串口1选择定时器1为波特率发生器
//AUXR1|=UART_P1;
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式2
TMOD|= 0x20; //定时器工作方式2
PCON &= 0x7f; //波特率不倍速
TH1 = -(SYSCLK/12/32/BAUD);
TL1 = -(SYSCLK/12/32/BAUD);
TR1= 1; //开启定时器1
ES = 1; //开串口中断
EA = 1; // 开总中断
a=0;
while(1)
{
SBUF = MESSAGE; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(!TI); // 等特数据传送 (TI发送中断标志)
TI = 0; // 清除数据传送标志
a++; // 下一个字符
if(MESSAGE=='\0')
break;
}
while(1);
}
求各位大侠指点,谢谢了
这么简单的软件为什么不多点点鼠标呢{:huffy:}
把“16进制”前面打钩! 16 进制显示 {:sweat:} 我也是新手,遇到问题最好先自己找找资料,再跟坛友请教,以免犯低级错误。 嗯,勾选16进制了但还是没有显示“hello wqs”。显示如下,
换个串口助手,有字符显示的 检查晶振是不是用的内部的 换了个串口助手也一样 。 我用的是外部的晶振32M,这个一定要用内部的R/C振荡器吗?
检查下波特率对不对,让单片机一直发数据,然后换其他波特率试试 Wqs 发表于 2013-8-3 09:31 static/image/common/back.gif
换了个串口助手也一样 。 我用的是外部的晶振32M,这个一定要用内部的R/C振荡器吗?
...
用外部。32兆发串口可能有问题吧,stc应该也要11.0592等等这些频率吧。430这些倒不要,你换11.0592试下51标准的串口程序… 嗯,好。我再试试
先做个最最简单的发送字符的程序,比如:
while(1)
{
SBUF = 'a'; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(!TI); // 等特数据传送 (TI发送中断标志)
TI = 0; // 清除数据传送标志
}
看看能不能收到字符 a TH1 = -(SYSCLK/12/32/BAUD);
TL1 = -(SYSCLK/12/32/BAUD); 这个能不能说说为什么这么算的啊 #define SYSCLK 32000000
改为
#define SYSCLK 32000000UL 这样改了#define SYSCLK 32000000UL
还是没什么效果
看了半天,还用STC89C52测试了一下!11.0592M晶振下,用STC89C52测试。程序没得错。最后看了一下你的主题,是stc11L60xe单片机。你看看你的单片机stc11L60xe应该是1T机器周期的。STC89C52是12T的 。是不是这里出错了! 晶振问题!!!
页:
[1]