51单片机用不了printf()。

0、用的是stc12,编译环境keil4;
1、头文件已添加;
2、串口一已初始化;
3、用ttl转usb接入电脑,使用串口调试助手发现没现象。。。
是不是宏晶的单片机不支持?还是?

第1个回答  2014-01-05
这个函数因为牵扯到使用串口,单片机不同地址和操作方式也不同,串口也可能不只一个,你到底用那个,都是未知的,所以这个函数不通用,要根据单片机来修改, printf实际调用 putc实现,你只要去 stdio中改掉这个函数即可,就是常规的 发送一个字节即可。。。当然你不喜欢,你还可以写自己的 self_printf函数....
第2个回答  2014-01-05
编写几条串口通信的语句,先试试硬件好用否。

以后再编写应用 PRINTF() 的程序。本回答被网友采纳
第3个回答  2014-01-05
这篇文章必须要看看了你--http://blog.csdn.net/googlemi/article/details/8996605,不多不多能帮点忙,因为是借鉴就不好直接复制给你看了
第4个回答  2014-01-05
包含printf的头文件加了吗?如果加了,那么问题出在TI这个东东上,调用printf前你需要将TI清0.追问

加了#include <stdio.h>,串口初始化用的是STC的波特率计算器并加上了TI=1;但是现在有好多warning,目测是跟printf有关

追答

没问题,我试过了,你加这个包含文件试试:
#include
#include

追问

加过了,不过因为我的是STC12所以加的是STC做的头文件(STC12C5A60S2.H),请问是这个问题吗?谢谢

追答

应该是STC12C5A60S2.H有问题,可能里面有些内容不太规范。你去掉这个包含文件,自己定义一下这个单片机的一些特殊功能寄存器。

本回答被提问者采纳
相似回答