bigdogguru
Administrator
- Joined
- Mar 12, 2010
- Messages
- 9,821
- Helped
- 2,350
- Reputation
- 4,694
- Reaction score
- 2,272
- Trophy points
- 1,413
- Location
- Southwest, USA
- Activity points
- 62,395
The printf() routine in KEIL C51 Compiler is already preconfigured to use the primary serial port 0, which is what is required for use with the AT89S51.
You still need to initialize the serial port to the correct BAUD rate.
The following example demonstrates the use of printf() in a simple "hello world" app at 1200 BAUD:
You'll need to make the appropriate changes to initialize the serial port at 9600 BAUD.
BigDog
You still need to initialize the serial port to the correct BAUD rate.
The following example demonstrates the use of printf() in a simple "hello world" app at 1200 BAUD:
Code:
/*------------------------------------------------------------------------------
HELLO.C
Copyright 1995-2005 Keil Software, Inc.
------------------------------------------------------------------------------*/
#include <REG51.H> /* special function register declarations */
/* for the intended 8051 derivative */
#include <stdio.h> /* prototype declarations for I/O functions */
/*------------------------------------------------
The main C function. Program execution starts
here after stack initialization.
------------------------------------------------*/
void main (void) {
/*------------------------------------------------
Setup the serial port for 1200 baud at 16MHz.
------------------------------------------------*/
[COLOR="#FF0000"] 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 */
[/COLOR]
/*------------------------------------------------
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" */
}
}
You'll need to make the appropriate changes to initialize the serial port at 9600 BAUD.
BigDog