关于51单片机串口中printf()的使用的问题
该程序主用用于让学者了解“++” “--”运算符的理解。程序如下:
#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);
}
我把程序下载到实验板后,然后打开电脑上的串口调试助手,调试好参数,却发现窗口上什么都没有出了什么问题呢? 展开
请问该如何重写fputc()呢,前辈,你可否就针对此例子,帮我修改一下呢?谢谢您了
好久没弄过51了,你可以看看
http://www.51hei.com/mcu/3429.html
给你参考下参考案例:
/*
文件名:串口通信值单片机和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);
}
}
=
打开电脑上的串口调试助手,调试好参数,然后,再打开单片机的电源。
或按下单片机的复位按键,重新启动单片机。
---------
楼主的程序,很正确,可以在串口助手上显示出来:
8 9 9
8 8 9
8 8 7
只要按照我的回答操作即可。
---------
楼主选择的答案说:你需要重写fputc() ...
纯属误导。