C8051f中用keil编程,printf()这个函数是不是直接向串口输?

2020-01-23 14:38发布

C8051f中用keil编程,printf()这个函数是不是直接向串口输出字符串?用这个函数时,输出的是哪个串口(我用的C8051f023有两个串口)?用这个函数时,串口是否要初始化?初始化时主要设置哪几个参数?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
techbaby
2020-01-23 18:12
要学会查找keil帮助文件!


int printf (
  const char *fmtstr       /* format string */
  <[>, arguments ... <]>);   /* additional arguments */

The printf function formats a series of strings and numeric values and builds a string to write to the output stream using the putchar function. The fmtstr argument is a format string that may be composed of characters, escape sequences, and format specifications.

在keil安装文件目录C51LIB中,找到PUTCHAR.C文件,将其包含进工程文件中,并修改。

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

  if (c == ' ')  {
    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);
}


上面的寄存器明显不是C8051串口的寄存器,需要修改。


一周热门 更多>