Wqs 发表于 2013-8-2 20:21:50

单片机 向 串口调试助手发送 字符 怎么显示奇怪符号

单片机为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);           
}
求各位大侠指点,谢谢了

stanley.zhao 发表于 2013-8-2 20:55:21

这么简单的软件为什么不多点点鼠标呢{:huffy:}
把“16进制”前面打钩!

tragedy 发表于 2013-8-2 23:45:44

16 进制显示 {:sweat:}

n321 发表于 2013-8-3 00:11:19

我也是新手,遇到问题最好先自己找找资料,再跟坛友请教,以免犯低级错误。

Wqs 发表于 2013-8-3 02:11:24

嗯,勾选16进制了但还是没有显示“hello wqs”。显示如下,

ouyj_0210 发表于 2013-8-3 02:25:44

换个串口助手,有字符显示的

cafppla1 发表于 2013-8-3 07:15:30

检查晶振是不是用的内部的

Wqs 发表于 2013-8-3 09:31:12

换了个串口助手也一样 。    我用的是外部的晶振32M,这个一定要用内部的R/C振荡器吗?

iquer 发表于 2013-8-3 14:42:45

检查下波特率对不对,让单片机一直发数据,然后换其他波特率试试

cafppla1 发表于 2013-8-3 15:09:56

Wqs 发表于 2013-8-3 09:31 static/image/common/back.gif
换了个串口助手也一样 。    我用的是外部的晶振32M,这个一定要用内部的R/C振荡器吗?
...

用外部。32兆发串口可能有问题吧,stc应该也要11.0592等等这些频率吧。430这些倒不要,你换11.0592试下51标准的串口程序…

Wqs 发表于 2013-8-3 18:36:32

嗯,好。我再试试

tim4146 发表于 2013-8-4 12:08:04

先做个最最简单的发送字符的程序,比如:
while(1)
            {
                SBUF = 'a';                //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
      while(!TI);                              // 等特数据传送      (TI发送中断标志)
                TI = 0;                                        // 清除数据传送标志
               }
看看能不能收到字符 a

tim4146 发表于 2013-8-4 12:13:20

TH1 = -(SYSCLK/12/32/BAUD);                              
TL1 = -(SYSCLK/12/32/BAUD); 这个能不能说说为什么这么算的啊

fastweb 发表于 2013-8-4 12:32:40

#define SYSCLK 32000000
改为
#define SYSCLK 32000000UL

Wqs 发表于 2013-8-4 14:46:46

这样改了#define SYSCLK 32000000UL
还是没什么效果

颖风 发表于 2013-8-6 00:42:54

看了半天,还用STC89C52测试了一下!11.0592M晶振下,用STC89C52测试。程序没得错。最后看了一下你的主题,是stc11L60xe单片机。你看看你的单片机stc11L60xe应该是1T机器周期的。STC89C52是12T的 。是不是这里出错了!

FK1174 发表于 2013-8-10 18:23:09

晶振问题!!!
页: [1]
查看完整版本: 单片机 向 串口调试助手发送 字符 怎么显示奇怪符号