51单片机串口输出乱码求助!

2019-07-15 18:26发布

#include "STC15F2Kxx.h"
#include "uart.h"
#include "intrins.h"

#define FOSC 11059200L        //系统频率(这里使用内部时钟晶振)
#define BAUD 115200                //串口波特率

bit busy=0;        //忙标志位

/*******************************************************************************
* 函数名  : UART1_Init_Config
* 描述    : UART1初始化配置
* 输入    : 无
* 输出    : 无
* 返回值  : 无
* 说明    : 无
*******************************************************************************/
void UART1_Init_Config(void)
{
    P_SW1 &= 0x3f;                                        //设置串口1在(P3.0/RxD, P3.1/TxD)
    SCON = 0x50;                                        //8位UART,可变波特率,允许串行接收
        AUXR &= 0xfe;                                        //定时器1为1T模式       
    AUXR |= 0x40;                                        //定时器1为1T模式
        TMOD &= 0xF0;                                        //定时器1为模式0(16位自动重载)
    TL1 = (65536 - (FOSC/4/BAUD));        //设置波特率重装值的低8位
    TH1 = (65536 - (FOSC/4/BAUD))>>8;//设置波特率重装值的高8位
    TR1 = 1;                                                //启动定时器1计数
    ES = 1;                                                        //使能串口中断
    EA = 1;                                                        //使能总中断
}



/*******************************************************************************
* 函数名  : UART1_ISR
* 描述    : UART1中断服务函数
* 输入    : 无
* 输出    : 无
* 返回值  : 无
* 说明    : 无
*******************************************************************************/
void UART1_ISR(void) interrupt 4 using 1
{
    if (RI)                        //接收数据
    {
        RI = 0;                //清除RI位
    }
    if (ti)                        //发送数据
    {
        TI = 0;                //清除TI位
        busy = 0;        //清忙标志
    }
}

/*******************************************************************************
* 函数名  : SendData
* 描述    : UART1发送一个字节
* 输入    : dat:待发送数据
* 输出    : 无
* 返回值  : 无
* 说明    : 无
*******************************************************************************/
void SendData(unsigned char dat)
{
    while (busy);        //等待前面的数据发送完成
    busy = 1;
    SBUF = dat;                //写数据到UART数据寄存器
}

/*******************************************************************************
* 函数名  : SendString
* 描述    : UART1发送一个字符串
* 输入    : *s:待发送字符串首地址
* 输出    : 无
* 返回值  : 无
* 说明    : 无
*******************************************************************************/
void SendString(char *s)
{
    while(1)       
    {         
                if(*s == '')
                                 break;
        SendData(*s++);           // 发送数据
    }
}  
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。