Intel 8051: From Wikipedia, The Free Encyclopedia
Intel 8051: From Wikipedia, The Free Encyclopedia
Intel 8051: From Wikipedia, The Free Encyclopedia
The Intel 8051 is a Harvard architecture, single chip microcontroller (µC) which was developed by Intel in 1980 for
use in embedded systems. The official designation for the 8051 family isMCS 51. Intel's original versions were
popular in the 1980s and early 1990s, but has todaylargely been superseded by a vast range of faster and/or
Intel's original 8051 family was developed using NMOS technology, but later versions, identified by a letter C in their
name (e.g., 80C51) used CMOS technology and were less power-hungry than their NMOS predecessors. This made
Contents
[hide]
applications
2 Memory Architecture
3 Programming
4 Instruction set
5 Related processors
6 See also
7 References
8 External links
i8051 microarchitecture.
16-bit address bus - It can access 216 memory locations - 64 KB (65536 locations) each of RAM and ROM
Four byte bi-directional input/output port
Two-level interrupt priority
level boolean logic operations to be carried out directly and efficiently on internalregisters and RAM. This feature
helped cement the 8051's popularity in industrial control applications. Another valued feature is that it has four
separate register sets, which can be used to greatly reduce interrupt latency compared to the more common method
The 8051 UARTs make it simple to use the chip as a serial communications interface. External pins can be
configured to connect to internal shift registers in a variety of ways, and the internal timers can also be used, allowing
serial communications in a number of modes, both synchronous and asynchronous. Some modes allow
environment is achievable, but the 8051's real strength is fitting in with existing ad-hoc protocols (e.g., when
Once a UART, and a timer if necessary, have been configured, the programmer needs only to write a simple interrupt
routine to refill thesend shift register whenever the last bit is shifted out by the UART and/or empty the
full receive shift register (copy the data somewhere else). The main program then performs serial reads and writes
8051 based microcontrollers typically include one or two UARTs, two or three timers, 128 or 256 bytes of internal
data RAM (16 bytes of which are bit-addressable), up to 128 bytes of I/O, 512 bytes to 64 kB of internal program
memory, and sometimes a quantity of extended data RAM (ERAM) located in the external data space. The original
8051 core ran at 12 clock cycles per machine cycle, with most instructions executing in one or two machine cycles.
With a 12 MHz clock frequency, the 8051 could thus execute 1 million one-cycle instructions per second or 500,000
two-cycle instructions per second. Enhanced 8051 cores are now commonly used which run at six, four, two, or even
one clock per machine cycle, and have clock frequencies of up to 100 MHz, and are thus capable of an even greater
number of instructions per second. All SILabs, some Dallas and a few Atmel devices have single cycle cores.
Common features included in modern 8051 based microcontrollers include built-in reset timers with brown-out
detection, on-chip oscillators, self-programmable Flash ROM program memory, bootloader code in ROM, EEPROM
comparators, A/D and D/A converters, RTCs, extra counters and timers, in-circuit debugging facilities, more interrupt
[edit]Memory Architecture
The 8051 has four distinct types of memory - internal RAM, special function registers, program memory, and external
data memory.
Internal RAM (IRAM) is located from address 0 to address 0xFF. IRAM from 0x00 to 0x7F can be accessed directly,
and the bytes from 0x20 to 0x2F are also bit-addressable. IRAM from 0x80 to 0xFF must be accessed indirectly,
using the @R0 or @R1 syntax, with the address to access loaded in R0 or R1.
Special function registers (SFR) are located from address 0x80 to 0xFF, and are accessed directly using the same
instructions as for the lower half of IRAM. Some of the SFR's are also bit-addressable.
Program memory (PMEM, though less common in usage than IRAM and XRAM) is located starting at address 0. It
may be on- or off-chip, depending on the particular model of chip being used. Program memory is read-only, though
some variants of the 8051 use on-chip flash memory and provide a method of re-programming the memory in-system
or in-application. Aside from storing code, program memory can also store tables of constants that can be accessed
External data memory (XRAM) also starts at address 0. It can also be on- or off-chip; what makes it "external" is that
it must be accessed using the MOVX (Move eXternal) instruction. Many variants of the 8051 include the standard 256
bytes of IRAM plus a few KB of XRAM on the chip. If more XRAM is required by an application, the internal XRAM
can be disabled, and all MOVX instructions will fetch from the external bus.
[edit]Programming
There are various high-level programming language compilers for the 8051. Several C compilers are available for the
8051, most of which feature extensions that allow the programmer to specify where each variable should be stored in
its six types of memory, and provide access to 8051 specific hardware features such as the multiple register banks
and bit manipulation instructions. There are many commercial C compilers. SDCC is a popular open source C
for the 8051, but they are less widely used than C and assembly.
Because IRAM, XRAM, and PMEM all have an address 0, C compilers for the 8051 architecture provide compiler-
specific pragmas or other extensions to indicate where a particular piece of data should be stored (i.e. constants in
PMEM or variables needing fast access in IRAM). Since data could be in one of three memory spaces, a mechanism
is usually provided to allow determining to which memory a pointer refers, either by constraining the pointer type to
[edit]Instruction set
direct memory, which access the internal RAM or the SFR's, depending on the address
indirect memory, using R0, R1, or DPTR to hold the memory address. The instruction used may vary to
Many of the operations allow any addressing mode for the source or the destination, for example, MOV 020h, 03fh
will copy the value in memory location 0x3f in the internal RAM to the memory location 0x20, also in internal RAM.
Because the 8051 is an accumulator-based architecture, all arithmetic operations must use the accumulator, e.g.
ADD A, 020h will add the value in memory location 0x20 in the internal RAM to the accumulator.
One does not need to master these instructions to program the 8051. With the availability of good quality C
compilers, including open source SDCC, virtually all programs can be written with high-level language.
[edit]Related processors
The 8051's predecessor, the 8048, was used in the keyboard of the first IBM PC, where it converted keypresses into
the serial data stream which is sent to the main unit of the computer. The 8048 and derivatives are still used today for
The 8031 was a cut down version of the original Intel 8051 that did not contain any internal program memory (ROM).
To use this chip, external ROM had to be added containing the program that the 8031 would fetch and execute.
The 8052 was an enhanced version of the original 8051 that featured 256 bytes of internal RAM instead of 128 bytes,
8 kiB of ROM instead of 4 kiB, and a third 16-bit timer. The 8032 had these same features except for the internal
ROM program memory. The 8052 and 8032 are largely considered to be obsolete because these features and more
Intel discontinued its MCS 51 product line in March 2007, however there are plenty of enhanced 8051 products or