In http://www.keil.com/support/docs/788.htm you described how to change the putchar function. I have coppied PUTCHAR.C to the project directory, and added it to the project source files (using uVision2). As soon as I started to re-build the project, the following error occured: Build target 'Target 1' compiling SIO.C... compiling MAIN.C... compiling PUTCHAR.C... linking... *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: _PUTCHAR MODULE: .\output\PUTCHAR.obj (PUTCHAR) *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_PUTCHAR?PUTCHAR *** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL SYMBOL: _PUTCHAR MODULE: C:\KEIL\C51\LIB\C51S.LIB (PRINTF) ADDRESS: 0080H *** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL SYMBOL: _PUTCHAR MODULE: C:\KEIL\C51\LIB\C51S.LIB (GETCHAR) ADDRESS: 06E2H Program Size: data=50.3 xdata=0 code=1780 Target not created Why ? Where else is putchar defined ? what can I do in order to change putchar ? Another question is where can I see the source code of printf ? Thanks, Amit.
Another question is where can I see the source code of printf ? This question was left unanswered. is it possible to see the source code at all ? Thanks, Amit.
Sorry, the source code is not public.
"Sorry, the source code is not public." That is to say, the source for Keil's C51 printf implementation is not public. I'm sure you can find some open-source printf implementation(s); eg, SDCC is open-source: http://sdcc.sourceforge.net/ Of course, that will not be the same as Keil's implementation; no doubt Keil have put a lot of work into optimising their C51 implementation - which is why they're not about to give it away free to all & sundry!
Just to explain, I wanted to have the source in order to debug a printf command that didn't work. this problem was solved, but at that time I wanted to perform the printf command step by step for debug purposes. Amit.
FYI, here is a list of those library functions for which source code is available: http://www.keil.com/support/man/docs/c51/c51_lib_source.htm