单片机串口调试的问题

2019-07-15 23:05发布

#include"c8051f350.h"
#define  sysclk     24500000        //系统时钟频率,单位:HZ;
#define  baud       9600            //串口通信波特率,单位:bps

void Uart0_Init(void);
void Sysclk_Init(void);
void SysPort_Init(void);
void Uart0_SendChar(unsigned char chr);



void main(void)
{
        unsigned char a;
        
        PCA0MD&=~0x40;        // 禁止看门狗定时器

        Sysclk_Init();        // 配置系统时钟
        SysPort_Init();       // 端口配置
        Uart0_Init();         // 串口初始化


        while(1)
        {

                a=9;
                Uart0_SendChar(a);

        }
}

void Uart0_Init(void)
{
   SCON0 = 0x10;                                                //允许接收
   if (sysclk/baud/2/256 < 12)
   {
      TH1 = -(sysclk/baud/2/12);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 00
   }
   else
   {
      TH1 = -(sysclk/baud/2/48);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 10
      CKCON |=  0x02;
   }
   TL1 = TH1;                                                   
   TMOD &= ~0xf0;                                           // 定时器设置
   TMOD |=  0x20;                                          
   TR1 = 1;                                                           // 启动定时器,串口开始工作
   ti0 = 0;                                                           // 清除中断标志
   RI0 = 0;
   ES0 = 0;
}
void Sysclk_Init(void)
{

    OSCICN    = 0x83;

}
void SysPort_Init(void)
{
    P0MDOUT   = 0x1D;
        P0MDIN    = 0xFF;
    P0        = ~P0MDOUT;
        
        P1MDOUT   = 0x38;
        P1MDIN    = 0x3F;
    P1        = ~P1MDOUT;

    P0SKIP    = 0x00;
    P1SKIP    = 0x00;
    XBR0      = 0x03;
    XBR1      = 0xC0;

        IE        = 0x80;
}
void Uart0_SendChar(unsigned char chr)
{        
        TI0 = 0;
        SBUF0 = chr;
        while(!TI0);            // 等待发送1个字节数据完成
        TI0 = 0;                                  // 清除中断标志

}
这是一段很简单的串口通信程序,但是我用串口调试助手确收不到任何数据。如果将a=9改为a=‘9’,串口调试助手可以正常显示。为什么,那么如何传输数字而不是字符呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。