关于51单片机串口中printf()的使用的问题

各位前辈,本人新手学习单片机,通过《51单片机自学笔记》一书自学单片机,今日调试书上一程序,出现了问题。该程序主用用于让学者了解“++”“--”运算符的理解。程序如下:#... 各位前辈,本人新手学习单片机,通过《51单片机自学笔记》一书自学单片机,今日调试书上一程序,出现了问题。
该程序主用用于让学者了解“++” “--”运算符的理解。程序如下:
#include <reg51.h>
#include <stdio.h>
#define unit unsigned int
main()
{unit x,y,z;
SCON=0X50;
TMOD=0X20;
PCON=0X00;
TL1=0XFD;
TH1=0XFD;
TI=1;
TR1=1;
x=8;
y=8;
z=++x;
printf("\n % d % d % d",y,z,x);
x=8;
y=8;
z=x++;
printf("\n % d % d % d",y,z,x);
x=8;
y=8;
z=x--;
printf("\n % d % d % d",y,z,x);
while(1);
}

我把程序下载到实验板后,然后打开电脑上的串口调试助手,调试好参数,却发现窗口上什么都没有出了什么问题呢?
展开
 我来答
laifu18
2014-08-15 · 超过13用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:35.3万
展开全部
printf 函数在单片机中要重定向到串口,printf 调用标准库函数 ,你需要重写fputc() 这个c标准库函数
追问
请问该如何重写fputc()呢,前辈,你可否就针对此例子,帮我修改一下呢?谢谢您了
追答
好久没弄过51了,你可以看看
http://www.51hei.com/mcu/3429.html
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tony_sgt
2018-02-28 · TA获得超过8423个赞
知道大有可为答主
回答量:5330
采纳率:66%
帮助的人:1200万
展开全部

给你参考下参考案例:

/* 

文件名:串口通信值单片机和PC机计算梯形面积.c   

附:利用单片机和PC机的串口通信的工作方式1(波特率可变),(已知晶振为11.0592MHZ)设置通信波特率为9600b/s,结合定时器1的工作方式2(TH1=0xfd,TL1=0xfd),输入上底、下底、高,输出梯形面积 

提示:下载程序后,打开串口工具,需要复位一下。 

*/  

#include<reg52.h>  

#include<stdio.h>  

#define uint unsigned int   

#define uchar unsigned char  

void uart(void)                 //串口通信初始化  

{  

SCON=0x40;                  //串口通信工作方式1  

REN=1;                      //允许接收  

TMOD=0x20;                  //定时器1的工作方式2  

TH1=0xfd,TL1=0xfd;        

TI=1;                       //这里一定要注意  

TR1=1;                      //打开定时器  

}                                 

void main(void)  

{  

uint up=0,down=0,high=0;  

uint result ;  

uart();  

while(1)  

{     

printf("********************************\r\n");  

printf("Please input up,dowm,high:\r\n");  

scanf("%d%d%d",&up,&down,&high) ;  

printf("\r\nResult=%d\r\n",result=(up+down)*high/2);  

}  

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2014-08-15 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
打开电脑上的串口调试助手,调试好参数,却发现窗口上什么都没有出了什么问题呢?
=

打开电脑上的串口调试助手,调试好参数,然后,再打开单片机的电源。

或按下单片机的复位按键,重新启动单片机。

---------

楼主的程序,很正确,可以在串口助手上显示出来:

8 9 9
8 8 9
8 8 7

只要按照我的回答操作即可。

---------

楼主选择的答案说:你需要重写fputc() ...

纯属误导。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式