Hi,
I am using the example project "hello" given with the Keil installation with my Keil Compiler 8.04. The hex file is getting generated successfully. But on downloading the program on to the hardware, on execution nothing is showing up on the hyperterminal of the computer. The example program given is as follows:
/*------------------------------------------------------------------------------ HELLO.C
Copyright 1995-2005 Keil Software, Inc. ------------------------------------------------------------------------------*/
#include <reg52.h> /* special function register declarations */ /* for the intended 8051 derivative */
#include <stdio.h> /* prototype declarations for I/O functions */
#ifdef MONITOR51 /* Debugging with Monitor-51 needs */ char code reserve [3] _at_ 0x23; /* space for serial interrupt if */ #endif /* Stop Exection with Serial Intr. */ /* is enabled */
/*------------------------------------------------ The main C function. Program execution starts here after stack initialization. ------------------------------------------------*/ void main (void) { //char arr[] = {'a','b'}; /*------------------------------------------------ Setup the serial port for 1200 baud at 16MHz. ------------------------------------------------*/ #ifndef MONITOR51 SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */ TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ TH1 = 0xFD; /* TH1: reload value for 1200 baud @ 16MHz */ TR1 = 1; /* TR1: timer 1 run */ TI = 1; /* TI: set TI to send first char of UART */ #endif
/*------------------------------------------------ Note that an embedded program never exits (because there is no operating system to return to). It must loop and execute forever. ------------------------------------------------*/ while (1) { P1 ^= 0x01; /* Toggle P1.0 each time we print */ printf ("Hello World\n"); /* Print "Hello World" */
}
Now following is the modified program which is working :
/*------------------------------------------------ Note that an embedded program never exits (because there is no operating system to return to). It must loop and execute forever. ------------------------------------------------*/ while (1) { // P1 ^= 0x01; /* Toggle P1.0 each time we print */ //printf ("Hello World\n"); /* Print "Hello World" */
while (TI != 1) {;} /* * Clear the Transmit Interrupt flag to prepare the serial port * to send a new character. */ TI = 0; /* Write the character into the serial port buffer register, SBUF */ SBUF = 'r'; /* * The serial port hardware takes over from here, and the program * may continue with other operations. */
Why there is the problem with the printf statement?
regards Abhsihek Agrawal