8051 C Course...
..............................................................................................................

About the Keil Compiler
Keil Software (http://www.keil.com) publishes one of the most complete development tool suites for 8051 software, which is used throughout industry. For development of C code, their Developer's Kit product includes their C51 compiler, as well as an integrated 8051 simulator for debugging. A demonstration version of this product is available on their website, but it includes several limitations (see next section). This is the software that will be used for CECS-347.
The C programming language was designed for computers, though, and not embedded systems. It does not support direct access to registers, nor does it allow for the reading and setting of single bits, two very important requirements for 8051 software. In addition, most software developers are accustomed to writing programs that will by executed by an operating system, which provides system calls the program may use to access the hardware. However, much code for the 8051 is written for direct use on the processor, without an operating system. To support this, the Keil compiler has added several extensions to the C language to replace what might have normally been implemented in a system call, such as the connecting of interrupt handlers.
The purpose of this manual is to further explain the limitations of the Keil compiler, the modifications it has made to the C language, and how to account for these in developing software for the 8051 micro controller.

Keil Limitations
There are several very important limitations in the evaluation version of Keil's Developer's Kit that users need be aware of when writing software for the 8051.
Object code must be less than 2 Kbytes
The compiler will compile any-sized source code file, but the final object code may not exceed 2 Kbytes. If it does, the linker will refuse to create a final binary executable (or HEX file) from it. Along the same lines, the debugger will refuse any files that are over 2Kbytes, even if they were compiled using a different software package.

Program code starts at address 0x4000
All C code compiled and linked using the Keil tools will begin at address 0x4000 in code memory. Such code may not be programmed into devices with less than 16Kbytes of Read-Only Memory. Code written in assembly may circumvent this limitation by using the "origin" keyword to set the start to address 0x0000. No such work-around exists for C programs, though. However, the integrated debugger in the evaluation software may still be used for testing code. Once tested, the code may be compiled by the full version of the Keil software, or by another compiler that supports the C extensions used by Keil.

C Modifications
The Keil C compiler has made some modifications to an otherwise ANSI-compliant implementation of the C programming language. These modifications were made solely to facilitate the use of a higher-level language like C for writing programs on micro controllers.

Variable Types
The Keil C compiler supports most C variable types and adds several of its own.

Standard Types
The evaluation version of the Keil C compiler supports the standard ANSI C variable types, with the exception of the floating-point types. These types are summarized below.

Type
Bits
Bytes
Range
char
8
1
-128 to +127
unsigned char
8
1
0 to 255
enum
16
2
-32,768 to +32,767
short
16
2
-32,768 to +32,767
unsigned short
16
2
0 to 65,535
int
16
2
-32,768 to +32,767
unsigned int
16
2
0 to 65,535
long
32
4
-2,147,483,648 to +2,147,483,647
unsigned long
32
4
0 to 4,294,697,295
Next Page
Next Page