stc15单片机printf重定向

stc15单片机printf重定向,第1张

需要修改两处

第一处包含函库

#include  //printf用

第二处重定向


///
//printf重定向
char putchar(char c )
{
    SBUF = c;
    while(!TI);
    TI = 0;
    return c;
}
///

下面就可以使用了

int ad = 350;
printf("AD0\t=\t%d\r\n",AD);
    

输出结果可以使用串口调试助手的字符模式查看

注意上面的函数调用时我已经使用别的函数进行了串口的 *** 作。

下面是一些不重要信息作为知识参考

库函数关于putchar函数的描述

这个时keil2的库文件路径

/***********************************************************************/
/*  This file is part of the C51 Compiler package                      */
/*  Copyright KEIL ELEKTRONIK GmbH 1990 - 2002                         */
/***********************************************************************/
/*                                                                     */
/*  PUTCHAR.C:  This routine is the general character output of C51.   */
/*  You may add this file to a uVision2 project.                       */
/*                                                                     */
/*  To translate this file use C51 with the following invocation:      */
/*     C51 PUTCHAR.C                                     */
/*                                                                     */
/*  To link the modified PUTCHAR.OBJ file to your application use the  */
/*  following Lx51 invocation:                                         */
/*     Lx51 , PUTCHAR.OBJ             */
/*                                                                     */
/***********************************************************************/

#include 

#define XON  0x11
#define XOFF 0x13


/*
 * putchar (full version):  expands '\n' into CR LF and handles
 *                          XON/XOFF (Ctrl+S/Ctrl+Q) protocol
 */
char putchar (char c)  {

  if (c == '\n')  {
    if (RI)  {
      if (SBUF == XOFF)  {
        do  {
          RI = 0;
          while (!RI);
        }
        while (SBUF != XON);
        RI = 0; 
      }
    }
    while (!TI);
    TI = 0;
    SBUF = 0x0d;                         /* output CR  */
  }
  if (RI)  {
    if (SBUF == XOFF)  {
      do  {
        RI = 0;
        while (!RI);
      }
      while (SBUF != XON);
      RI = 0; 
    }
  }
  while (!TI);
  TI = 0;
  return (SBUF = c);
}



#if 0         // comment out versions below

/*
 * putchar (basic version): expands '\n' into CR LF
 */
char putchar (char c)  {
  if (c == '\n')  {
    while (!TI);
    TI = 0;
    SBUF = 0x0d;                         /* output CR  */
  }
  while (!TI);
  TI = 0;
  return (SBUF = c);
}


/*
 * putchar (mini version): outputs charcter only
 */
char putchar (char c)  {
  while (!TI);
  TI = 0;
  return (SBUF = c);
}

#endif

也就是可以包含此文件一样能解决问题。

参考网页

Keil重定向printf到串口UART输出 - 电子工程世界(EEWORLD)

关于printf函数转重定向到串口我在此讲一下!!! (amobbs.com 阿莫电子论坛)

特此记录

anlog

2022年4月21日

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/716938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存