/*------------------------------------------------------------------------------
HELLO.C

Copyright 1995-1997 Keil Software, Inc.
------------------------------------------------------------------------------*/

#pragma DEBUG OBJECTEXTEND CODE   /* pragma lines can contain state C51       */
                                  /* command line directives                  */
 
#include <reg51.h>                /* special function register declarations   */
                                  /* for the intended 8051 derivative         */

#include <stdio.h>                /* prototype declarations for I/O functions */

#include <intrins.h>


/*------------------------------------------------
The following buffer is required if we're using
the RISM monitor for debugging.  The allocated
space is used by RISM for its internals.
------------------------------------------------*/
#ifdef RISM
const char data rism_1 [24] _at_ 0x28;
#endif

/*------------------------------------------------
The main C function.  Program execution starts
here after stack initialization.
------------------------------------------------*/
void main (void) {

/*------------------------------------------------
The following code inserts 3 NOPs if we're using
the RISM monitor for debugging.  This is required
since RISM doesn't like us messing with SCON.
Three NOPs are required because LJMPs are used
to implement breakpoints.
------------------------------------------------*/
#ifdef RISM
    _nop_ ();
    _nop_ ();
    _nop_ ();
#endif

/*------------------------------------------------
Setup the serial port for 1200 baud at 16MHz.
------------------------------------------------*/
    SCON  = 0x50;		/* SCON: mode 1, 8-bit UART, enable rcvr */
    TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload */
    TH1   = 221;                /* TH1:  reload value for 1200 baud @ 16MHz */
    TR1   = 1;                  /* TR1:  timer 1 run */
    TI    = 1;                  /* TI:   set TI to send first char of UART */

/*------------------------------------------------
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" */
  }
}


