标题: 帮看一下小的单片机串口程序 字符显示不对 [打印本页]

作者: 里本来    时间: 2017-5-23 15:28
标题: 帮看一下小的单片机串口程序 字符显示不对

显示的两个结果如图,为什么字符显示就不对?????

这是显示字符的程序
#include<stc12c5a60s2.h>


void InitUSART()
  {
   SCON=0x50;
   TMOD=0x20;
   TH1=0xFD;
   TL1=0xFD;
   TR1=1;
  }
//串口1发送数据
void Tx_Byte(char T_Byte)
{
   TI=0;
   SBUF=T_Byte;
   while(TI==0);
   TI=0;
}


void main()
{
  while(1)
  {
    char b=9;
    InitUSART();

     Tx_Byte(b);
   }
}

这是显示字符串的
//初始化串口1
#include<stc12c5a60s2.h>


void InitUSART()
  {
   SCON=0x50;
   TMOD=0x20;
   TH1=0xFD;
   TL1=0xFD;
   TR1=1;
  }
//串口1发送数据
void UartPrintf(unsigned char *p)                                //发送字符串
{        
         while(*p)
         {
                 SBUF=*(p++);
                while(TI==0)
                {

                };
                TI=0;
        }   
}

void main()
{
  while(1)
  {
    char c=9;
    InitUSART();

     UartPrintf("chuan kou ce shi");
   }
}



作者: 里本来    时间: 2017-5-23 15:38
没有人吗
作者: imxuheng    时间: 2017-5-23 16:54
给你优化了一下

#include<reg52.h>    //包含单片机寄存器的头文件
#include <intrins.h>
#define XTAL 11059200L //System frequency
#define BAUD 9600 //UART baudrate

void InitUSART()
  {
    SCON  = 0x50;                        // SCON: 模式 1, 8-bit UART, 使能接收  
    TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装
        TH1 = (unsigned char)(256 - XTAL/12/32/BAUD);
    TL1 = TH1;     //初值等于重载值
    ET1 = 0;       //禁止T1中断
    ES  = 1;       //使能串口中断
    TR1 = 1;       //启动T1
        EA    = 1;   
  }

//串口1发送数据
void UartPrintf(unsigned char *p)                                //发送字符串
{        
         while(*p)
         {
                 SBUF=*(p++);
                while(TI==0)
                {

                };
                TI=0;
        }   
}

void main()
{
  while(1)
  {
    char c=9;
    InitUSART();

     UartPrintf("chuan kou ce shi");
   }
}




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