printf() not working , peculiar situation

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

Reply to
som
Loading thread data ...

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

Reply to
Meindert Sprang

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?

Reply to
Neil Kurzman

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.