Chinaunix首页 | 论坛 | 博客
  • 博客访问: 125948
  • 博文数量: 21
  • 博客积分: 898
  • 博客等级: 准尉
  • 技术积分: 236
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-22 10:32
文章存档

2011年(8)

2010年(1)

2009年(6)

2008年(6)

我的朋友

分类: WINDOWS

2008-11-22 13:53:36

做了好几个基于C51单片机的项目,发现里面都是用串口打印来进行Debug的,使用printf()函数把程序运行的状态通用串口发送到电脑上。
 
C51 的库函数中包含了printf 函数该函数格式化字符串并把他们输出到标准输出设备对PC 来说标准输出设备就是你的显示设备,对8051 来说是串行口。在这里只有一个显示。就本质来说printf 函数是通过不断的调用putchar 函数来输出字符串的。这样通过重新定义putchar 函数,就可以改变printf 函数,连接器在连接的时候,将使用源代码中的putchar 函数,而不是运行函数库中的函数。
 
为什么是8051的putchar而不是库函数的putchar,是怎么做到的?
因为在KeilC中,putchar函数有源文件,在C:\Keil\C51\LIB目录有PUTCHAR.C,如果没有自己写putchar()函数,那么就必须把PUTCHAR.C文件包含到项目中。
阅读(2760) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-11-22 14:09:22

刚写完上述文字,马上把项目的putchar()函数原型删除,编译程序,没有提示说找不到putchar()函数,应该是自动调用了库函数的putchar()函数。但是项目中没有添加PUTCHAR.C文件啊,难道不是像上面我说的那样?