微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机串口调试的问题

单片机串口调试的问题

时间:10-02 整理:3721RD 点击:
#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’,串口调试助手可以正常显示。为什么,那么如何传输数字而不是字符呢

将串口调试助手十六进制显示,勾上试试

你把发送函数的形参类型改下试试。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top