需要修改两处
第一处包含函库
#include <stdio.h> //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 <memory model> */
/* */
/* To link the modified PUTCHAR.OBJ file to your application use the */
/* following Lx51 invocation: */
/* Lx51 <your object file list>, PUTCHAR.OBJ <controls> */
/* */
/***********************************************************************/
#include <reg51.h>
#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日
|