printf() not working , peculiar situation

Jul 10, 2004 2 Replies

dear friends i have a peculiar situation at hand . i am trying to dump some message to my serial port and see it through my dummy terminal . before that i tried a simple LED toggling , it worked fine . for that the code i had written is : #pragma small #include #include



int main() { TMOD = 0x20; // The timer set to 8 bit auto reload timer TH1 = 0xFD; // Higher byte of timer1 set to FD or reload value set to FD TL1 = 0xFD; // Lower byte of timer1 set to FD SCON = 0x52; // The serial Controller is configured TR1=1; // Timer 1 run flag set



while(1) { printf("Hello World \n"); // data sent to serial port for displaying


}

return 1 ; }


so the problem is that on my hyperterminal i dont get anything . but in debug window ,in the serial watch window , i am able to see the output . but after burning the code into the chip and subsequently in the hyperterminal i am not able to . i am not able to follow where lies the problem . in the c51 primer exact code has been given , but that too does not work . i would like to add that : my oscillator frequency :11.059 mhz ; my baud rate (of hyperterminal also): 9600 bps ; software:evaluation version of KEIL H/W :ATMEL AT89C51 The code size is well below the 4K ram size of 89c51 .



an interesting thing is that , with the same hardware i am able to get on my hyperterminal output when i use assembly code(given below). just try if you can solve my problem . is there any setting on the simulator /complier / Hex file that i am missing out ???



code:



cseg at 0000H org 0000h ajmp start



org 0040H



start: mov sp,#40H mov r0,#07Fh back: mov @r0,#00 djnz r0,back mov th1,#0FDh ;configure serial port as 9600/8bit/No mov tmod,#00100000b setb tr1 mov scon,#52h ;



repeat1: mov a,#'@' call _xmit_byte jmp repeat1



;---------------------------------------------------------------- _XMIT_BYTE: MOV SBUF,A ; JNB TI,$ ;wait till byte is transmitted CLR TI ; RET ;---------------------------------------------------------------- end



plz help .ASAP with regards Som


Does your compiler library have the putchar function fully implemented or is it an empty function framework which you have to fill in yourself?

Meindert

Sorry I am too lazy to look up old code now, but some advice. Look this up at ww.Keil.com and

formatting link
You should find working code there. Note your CPU and compiler in questions. Are you sure Hyperterm is not the problem? It can be finicky sometimes. if you look at putchar.c you will find the code that printf calls. Did you look at the output with a scope?

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required