Intel 8051

Last updated
Intel 8051
KL Intel P8051.jpg
Intel P8051 microcontroller
History
Predecessor(s) Intel MCS-48
Successor(s)Intel MCS-151

The Intel MCS-51 (commonly termed 8051) is a single chip microcontroller (MCU) series developed by Intel in 1980 for use in embedded systems. The architect of the Intel MCS-51 instruction set was John H. Wharton. [1] [2] Intel's original versions were popular in the 1980s and early 1990s, and enhanced binary compatible derivatives remain popular today. It is a complex instruction set computer, but also has some of the features of RISC architectures, such as a large register set and register windows, and has separate memory spaces for program instructions and data.

Contents

Intel's original MCS-51 family was developed using N-type metal–oxide–semiconductor (NMOS) technology, like its predecessor Intel MCS-48, but later versions, identified by a letter C in their name (e.g., 80C51) use complementary metal–oxide–semiconductor (CMOS) technology and consume less power than their NMOS predecessors. This made them more suitable for battery-powered devices.

The family was continued in 1996 with the enhanced 8-bit MCS-151 and the 8/16-bit/32-bit MCS-251 family of binary compatible microcontrollers. [3] While Intel no longer manufactures the MCS-51, MCS-151 and MCS-251 family, enhanced binary compatible derivatives made by numerous vendors remain popular today. Some derivatives integrate a digital signal processor (DSP) or a floating point unit (coprocessor, FPU). Beyond these physical devices, several companies also offer MCS-51 derivatives as IP cores for use in field-programmable gate array (FPGA) or application-specific integrated circuit (ASIC) designs.

Important features and applications

i8051 microarchitecture Intel 8051 arch.svg
i8051 microarchitecture

The 8051 architecture provides many functions (central processing unit (CPU), random-access memory (RAM), read-only memory (ROM), input/output (I/O) ports, serial port, interrupt control, timers) in one package:

One feature of the 8051 core is the inclusion of a boolean processing engine, which allows bit-level boolean logic operations to be carried out directly and efficiently on select internal registers, ports and select RAM locations. Another feature is the inclusion of four bank selectable working register sets, which greatly reduce the time required to perform the context switches to enter and leave interrupt service routines. With one instruction, the 8051 can switch register banks, avoiding the time-consuming task of transferring the critical registers to RAM.

Once a UART, and a timer if necessary, has been configured, the programmer needs only write a simple interrupt routine to refill the send 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 simply by reading and writing 8-bit data to stacks.

Derivative features

As of 2013, new derivatives are still being developed by many major chipmakers, and major compiler suppliers such as IAR Systems, Keil and Altium Tasking [6] continuously release updates.

MCS-51 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. External RAM and ROM share the data and address buses. 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 (denoted "1T"), and have clock frequencies of up to 100 MHz, and are thus capable of an even greater number of instructions per second. All Silicon Labs, some Dallas (now part of Maxim Integrated) and a few Atmel (now part of Microchip) devices have single cycle cores. [7] [8] [9]

8051 variants may include built-in reset timers with brown-out detection, on-chip oscillators, self-programmable flash ROM program memory, built-in external RAM, extra internal program storage, bootloader code in ROM, EEPROM non-volatile data storage, I2C, SPI, and USB host interfaces, CAN or LIN bus, Zigbee or Bluetooth radio modules, PWM generators, analog comparators, analog-to-digital and digital-to-analog converters, RTCs, extra counters and timers, in-circuit debugging facilities, more interrupt sources, extra power saving modes, more/less parallel ports etc. Intel manufactured a mask programmed version, 8052AH-BASIC, with a BASIC interpreter in ROM, capable of running user programs loaded into RAM.

MCS-51 based microcontrollers have been adapted to extreme environments. Examples for high-temperature variants are the Tekmos TK8H51 family for −40 °C to +250 °C [10] or the Honeywell HT83C51 for −55 °C to +225 °C (with operation for up to 1 year at +300 °C). [11] Radiation-hardenend MCS-51 microcontrollers for use in spacecraft are available; e.g., from Cobham (formerly Aeroflex) as the UT69RH051 [12] or from NIIET as the 1830VE32 (Russian : 1830ВЕ32). [13]

In some engineering schools, the 8051 microcontroller is used in introductory microcontroller courses. [14] [15] [16] [17]

Family naming conventions

8051 is the original name by Intel with 4 KB ROM and 128 byte RAM. Variants starting with 87 have a user programmable EPROM, sometimes UV erasable. Variants with a C as the third character are some kind of CMOS. 8031 and 8032 are ROM-less versions, with 128 and 256 bytes RAM. The last digit can indicate memory size, e.g. 8052 with 8 KB ROM, 87C54 16 KB EPROM, and 87C58 with 32 KB EPROM, all with 256 byte RAM.

Memory architecture

The MCS-51 has four distinct types of memory: internal RAM, special function registers, program memory, and external data memory. To access these efficiently, some compilers [18] utilize as many as 7 types of memory definitions: Internal RAM, single-bit access to internal RAM, special function registers, single-bit access to selected (divisible by 8) special function registers, program RAM, external ram accessed using a register indirect access, using one of the standard 8-bit registers, and register indirect external RAM access utilizing the 16-bit indirect access register.

The 8051's instruction set is designed as a Harvard architecture with segregated memory (data and instructions); it can only execute code fetched from program memory, and has no instructions to write to program memory. However, the bus leaving the IC has a single address and data path, and strongly resembles a Von Neumann architecture bus.

Most 8051 systems respect the instruction set, and require customized features to download new executable programs, e.g. in flash memory.

Internal RAM

Internal RAM (IRAM) has an 8-bit address space, using addresses 0 through 0xFF. IRAM from 0x00 to 0x7F contains 128 directly addressable 1-byte registers, which can be accessed using an 8-bit absolute address that is part of the instruction. Alternatively, IRAM can be accessed indirectly: the address is loaded into R0 or R1, and the memory is accessed using the @R0 or @R1 syntax, or as stack memory through the stack pointer SP, with the PUSH and POP operations; and *CALL and RET operations.

The original 8051 has only 128 bytes of IRAM. The 8052 added IRAM from 0x80 to 0xFF, which can only be accessed indirectly (e.g. for use as stack space). Most 8051 clones also have a full 256 bytes of IRAM.

Direct accesses to the IRAM addresses 80-FF are, instead, mapped onto the special function registers (SFR), where the accumulators A, B, carry bit C, and other special registers for control, status, etc., are located.

Special function registers

Special function registers (SFR) are located in the same address space as IRAM, at addresses 0x80 to 0xFF, and are accessed directly using the same instructions as for the lower half of IRAM. They cannot be accessed indirectly via @R0 or @R1 or by the stack pointer SP; indirect access to those addresses will access the second half of IRAM, instead.

The special function registers (SFR) include the accumulators A (or ACC, at E0) and B (at F0) and program status word (or PSW, at D0), themselves, as well as the 16-bit data pointer DPTR (at 82, as DPL and 83 as DPH). In addition to these, a small core of other special function registers - including the interrupt enable IE at A8 and interrupt priority IP at B8; the I/O ports P0 (80), P1 (90), P2 (A0), P3 (B0); the serial I/O control SCON (98) and buffer SBUF (99); the CPU/power control register PCON (87); and the registers for timers 0 and 1 control (TCON at 88) and operation mode (TMOD at 89), the 16-bit timer 0 (TL0 at 8A, TH0 at 8C) and timer 1 (TL1 at 8B, TH1 at 8D) - are present on all versions of the 8051. Other addresses are version-dependent; in particular, the timer 2 registers for the 8052: the control register T2CON (at C8), the 16-bit capture/latch (RCAP2L at CA, RCAP2H at CB) and timer 2 (TL2 at CC and TH2 at CD), are not included with the 8051.

Register windows

The 32 bytes in IRAM from 0x00–0x1F contains space for four eight-byte register windows, which the 8 registers R0–R7 map to. The currently active window is determined by a two-bit address contained in the program status word.

Bit registers

The 16 bytes (128 bits) at IRAM locations 0x20–0x2F contains space for 128 1-bit registers, which are separately addressable as bit registers 00-7F.

The remaining bit registers, addressed as 80-FF, are mapped onto the 16 special function registers 80, 88, 90, 98, ..., F0 and F8 (those whose addresses are multiples of 8), and therefore include the bits comprising the accumulators A, B and program status word PSW. The register window address, being bits 3 and 4 on PSW, is itself addressable as bit registers D3 and D4, respectively; while the carry bit C (or CY), at bit 7 of the PSW, is addressable as bit register D7.

Program memory

Program memory (PMEM, though less common in usage than IRAM and XRAM) is up to 64 KB of read-only memory, starting at address 0 in a separate address space. 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.

In addition to code, it is possible to store read-only data such as lookup tables in program memory, retrieved by the MOVCA,@A+DPTR or MOVCA,@A+PC instructions. The address is computed as the sum of the 8-bit accumulator and a 16-bit register (PC or DPTR).

Special jump and call instructions (AJMP and ACALL) slightly reduce the size of code that accesses local (within the same 2 KB) program memory. [19]

When code larger than 64K is required, a common system makes the code bank-switched, with general-purpose I/O selecting the upper address bits. Some 8051 compilers [18] make provisions to automatically access paged code. In these systems the interrupt vectors and paging table are placed in the first 32K of code, and are always resident.

External data memory

External data memory (XRAM) is a third address space, also starting at address 0, and allowing 16 bits of address space. 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 kilobytes of XRAM on the chip.

The first 256 bytes of XRAM may be accessed using the MOVXA,@R0, MOVXA,@R1, MOVX@R0,A, and MOVX@R1,A instructions. The full 64KB may be accessed using MOVXA,@DPTR and MOVX@DPTR,A. The 16-bit address requires the programmer to load the 16-bit index register. For this reason, RAM accesses with 16-bit addresses are substantially slower.

Some CPUs [20] permit the 8-bit indirect address to use any 8-bit general purpose register.

To permit the use of this feature, some 8051-compatible microcontrollers with internal RAM larger than 256 bytes, or an inability to access external RAM [20] access internal RAM as if it were external, and have a special function register (e.g. PDATA) that permits them to set the upper address of the 256-byte page. This emulates the MCS8051 mode that can page the upper byte of a RAM address by setting the general-purpose I/O pins.

When RAM larger than 64K is required, a common system makes the RAM bank-switched, with general-purpose I/O selecting the upper address bits. Some 8051 compilers [18] make provisions to automatically access paged data.

Registers

The only register on an 8051 that is not memory-mapped is the 16-bit program counter (PC). This specifies the address of the next instruction to execute. Relative branch instructions supply an 8-bit signed offset which is added to the PC.

Eight general-purpose registers R0–R7 may be accessed with instructions one byte shorter than others. They are mapped to IRAM between 0x00 and 0x1F. Only eight bytes of that range are used at any given time, determined by the two bank select bits in the PSW.

The following is a partial list of the 8051's registers, which are memory-mapped into the special function register space:

Stack pointer, SP (0x81)
This is an 8-bit register used by subroutine call and return instructions. The stack grows upward; the SP is incremented before pushing, and decremented after popping a value.
Data pointer, DP (0x82–83)
This is a 16-bit register that is used for accessing PMEM and XRAM.
Program status word, PSW (0xD0)
This contains important status flags, by bit number:
  1. Parity, P. Gives the parity (XOR of the bits) of the accumulator, A.
  2. User defined, UD. May be read and written by software; not otherwise affected by hardware.
  3. Overflow flag, OV. Set when addition produces a signed overflow.
  4. Register select 0, RS0. The low-order bit of the register bank. Set when banks at 0x08 or 0x18 are in use.
  5. Register select 1, RS1. The high-order bit of the register bank. Set when banks at 0x10 or 0x18 are in use.
  6. Flag 0, F0. May be read and written by software; not otherwise affected by hardware.
  7. Auxiliary carry, AC. Set when addition produces a carry from bit 3 to bit 4.
  8. Carry bit, C. Often used as the general register for bit computations, or the "Boolean accumulator".
Accumulator, A (0xE0)
This register is used by most instructions.
B register (0xF0)
This is used as an extension to the accumulator for multiply and divide instructions.

256 single bits are directly addressable. These are the 16 IRAM locations from 0x20–0x2F, and the 16 special function registers 0x80, 0x88, 0x90, ..., 0xF8. Any bit of these bytes may be directly accessed by a variety of logical operations and conditional branches.

Note that the PSW does not contain the common negative (N), or zero (Z) flags. For the former, the most significant bit of the accumulator can be addressed directly, as it is a bit-addressable SFR. For the latter, there are explicit instructions to jump on whether or not the accumulator is zero. There is also a two-operand compare and jump operation.

The parity (P) bit is often used to implement serial modes that include parity. To support this, the standard MCS51 UARTs could send 9 bits.

Microarchitecture

The microarchitecture of the Intel MCS8051 is proprietary, but published [21] features suggest how it works. It is a multi-cycle processor. The MCS8051 used 12 clock cycles [21] for most instructions. Many instructions utilize an accumulator. [21] In contrast, most compatible computers execute instructions in one to three cycles, except for the multiply and divide instructions. The much higher speed is a major reason why these have replaced the MCS8051 in most applications.

Each interrupt has four priorities. [21] Within each priority, the interrupts of devices are in a fixed priority. [21]

Instruction set

Instructions are all 1 to 3 bytes long, consisting of an initial opcode byte, followed by up to 2 bytes of operands.

14 of the opcode bytes, x0–x3, are used for irregular opcodes.

34 of the opcode bytes, x4–xF, are assigned to 16 basic ALU instructions with 12 possible operands. The least significant nibble of the opcode selects the primary operand as follows:

The most significant nibble specifies the operation as follows. Not all support all addressing modes; the immediate mode in particular is unavailable when the primary operand is written to. Instruction mnemonics use destination, source operand order.

0y:INCoperand
Increment the specified operand. Immediate mode (opcode 0x04) specifies the accumulator, INCA.
1y:DECoperand
Decrement the specified operand. Immediate mode (opcode 0x14) specifies the accumulator, DECA.
2y:ADDA,operand
Add the operand to the accumulator, A. Opcode 0x23 (RLA, "rotate left" but actually a shift left) may be thought of as ADDA,A.
3y:ADDCA,operand
Add the operand, plus the C bit, to the accumulator. Opcode 0x33 (RLCA, rotate left through carry) may be thought of as ADDCA,A.
4y:ORLA,operand
Logical OR the operand into the accumulator. Two memory-destination forms of this operation, ORLaddress,#data and ORLaddress,A, are specified by opcodes 0x43 and 0x42.
5y:ANLA,operand
Logical AND the operand into the accumulator. Two memory-destination forms of this operation, ANLaddress,#data and ANLaddress,A, are specified by opcodes 0x53 and 0x52.
6y:XRLA,operand
Logical exclusive-OR the operand into the accumulator. Two memory-destination forms of this operation, XRLaddress,#data and XRLaddress,A, are specified by opcodes 0x63 and 0x62.
7y:MOVoperand,#data
Move immediate to the operand. Immediate mode (opcode 0x74) specifies the accumulator, MOVA,#data.
8y:MOVaddress,operand
Move value to an IRAM or SFR register. Immediate mode (opcode 0x84) is not used for this operation, as it duplicates opcode 0x75.
9y:SUBBA,operand
Subtract the operand from the accumulator. This operation borrows and there is no subtract without borrow.
Ay:MOVoperand,address
Move value from an IRAM or SFR register. Immediate mode (opcode 0xA4) is not used, as immediates serve only as sources. Memory direct mode (opcode 0xA5) is not used, as it duplicates 0x85.
By:CJNEoperand,#data,offset
Compare operand to the immediate #data, and jump to PC + offset if not equal. Immediate and memory direct modes (opcodes 0xB4 and 0xB5) compare the operand against the accumulator, CJNEA,operand,offset. Note that there is no compare and jump if equal instruction, CJE.
Cy:XCHA,operand
Exchange the accumulator and the operand. Immediate mode (opcode 0xC4) is not used for this operation.
Dy:DJNZoperand,offset
Decrement the operand, and jump to PC + offset if the result is non-zero. Immediate mode (opcode 0xD4), and register indirect mode (0xD6, 0xD7) are not used.
Ey:MOVA,operand
Move operand to the accumulator. Immediate mode is not used for this operation (opcode 0xE4), as it duplicates opcode 0x74.
Fy:MOVoperand,A
Move accumulator to the operand. Immediate mode (opcode 0xF4) is not used, as it would have no effect.

Only the ADD, ADDC, and SUBB instructions set PSW flags. The INC, DEC, and logical instructions do not. The CJNE instruction modifies the C bit only, to the borrow that results from operand1operand2.

The irregular instructions comprise 64 opcodes, having more limited addressing modes, plus several opcodes scavenged from inapplicable modes in the regular instructions.

8051/8052 irregular instructions
Opcodex0x1x2x3x4
0yNOP
  • AJMPaddr11,
  • ACALLaddr11
LJMPaddr16RRA (rotate right)INCA
1yJBCbit,offset (jump if bit set with clear)LCALLaddr16RRCA (rotate right through carry)DECA
2yJBbit,offset (jump if bit set)RETRLA (rotate left)ADDA,#data
3yJNBbit,offset (jump if bit clear)RETIRLCA (rotate left through carry)ADDCA,#data
4yJCoffset (jump if carry set)ORLaddress,AORLaddress,#dataORLA,#data
5yJNCoffset (jump if carry clear)ANLaddress,AANLaddress,#dataANLA,#data
6yJZoffset (jump if zero)XRLaddress,AXRLaddress,#dataXRLA,#data
7yJNZoffset (jump if non-zero)ORLC,bitJMP@A+DPTRMOVA,#data
8ySJMPoffset (short jump)ANLC,bitMOVCA,@A+PCDIVAB
9yMOVDPTR,#data16MOVbit,CMOVCA,@A+DPTRSUBBA,#data
AyORLC,/bitMOVC,bitINCDPTRMULAB
ByANLC,/bitCPLbitCPLCCJNEA,#data,offset
CyPUSHaddressCLRbitCLRCSWAPA
DyPOPaddressSETBbitSETBCDAA (decimal adjust)
EyMOVXA,@DPTRMOVXA,@R0MOVXA,@R1CLRA
FyMOVX@DPTR,AMOVX@R0,AMOVX@R1,ACPLA
85
MOVaddress,address move directly between two IRAM or SFR registers.
A5
Unused
B5
CJNEA,address,offset compare accumulator to an IRAM or SFR register, and jump to PC + offset if not equal.
D6–7
XCHDA,@R01 exchange low-order nibble of operands.

The SJMP (short jump) opcode takes a signed relative offset byte operand and transfers control there relative to the address of the following instruction. The AJMP/ACALL opcodes combine the three most significant bits of the opcode byte with the following byte to specify an 11-bit destination that is used to replace 11 bottom bits of the PC register (top 5 bits of PC register remain intact). For larger addresses, the LJMP and LCALL instructions allow a 16-bit destination.

One of the reasons for the 8051's popularity is its range of operations on single bits. Bits are always specified by absolute addresses; there is no register-indirect or indexed addressing. Instructions that operate on single bits are:

A bit operand is written in the form address.number. Because the carry flag is bit 7 of the bit-addressable program status word, the SETBC, CLRC and CPLC instructions are shorter equivalents to SETBPSW.7, CLRPSW.7 and CPLPSW.7.

Programming

There are various high-level programming language compilers for the 8051. Several C compilers are available for the 8051, most of which 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. [22] Small Device C Compiler (SDCC) is a popular open source C compiler. [23] Other high level languages such as C++, Forth, [24] [25] [26] [27] BASIC, Object Pascal, Pascal, PL/M and Modula-2 are available for the 8051, but they are less widely used[ citation needed ] than C and assembly.

Because IRAM, XRAM, and PMEM (read only) 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 include the memory space, or by storing metadata with the pointer.

Intel 8031 microcontrollers INTEL8031AH.png
Intel 8031 microcontrollers
Intel D87C51 microcontroller Intel D87C51-3183.jpg
Intel D87C51 microcontroller

Intel discontinued its MCS-51 product line in March 2007; [28] [29] however, there are plenty of enhanced 8051 products or silicon intellectual property added regularly from other vendors.

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. An Intel 8049 served a similar role in the Sinclair QL. The 8048 and derivatives are still used today for basic model keyboards.

The 8031 was a reduced version of the original 8051 that had no internal program memory (read-only memory, ROM). To use this chip, external ROM had to be added containing the program that the 8031 would fetch and execute. An 8051 chip could be sold as a ROM-less 8031, as the 8051's internal ROM is disabled by the normal state of the EA pin in an 8031-based design. A vendor might sell an 8051 as an 8031 for any number of reasons, such as faulty code in the 8051's ROM, or simply an oversupply of 8051s and undersupply of 8031s.

Intel P8044AH microcontroller Intel P8044AH.jpg
Intel P8044AH microcontroller

The 8044 (as well as the ROM-less 8344 and the 8744 with EPROM) added an SDLC controller to the 8051 core (especially for Bitbus applications). [30]

The 8052 was an enhanced version of the original 8051 that featured 256 bytes of internal RAM instead of 128 bytes, 8 KB of ROM instead of 4 KB, and a third 16-bit timer. Most modern 8051-compatible microcontrollers include these features.

The 8032 had these same features as the 8052 except lacked internal ROM program memory.

The 8751 was an 8051 with 4 KB EPROM instead of 4 KB ROM. They were identical except for the non-volatile memory type. This part was available in a ceramic package with a clear quartz window over the top of the die so UV light could be used to erase the EPROM. Related parts are: 8752 had 8 KB EPROM, 8754 had 16 KB EPROM, 8758 had 32 KB EPROM.

The 80C537 (ROM-less) and 80C517 (8 KB ROM) are CMOS versions, designed for the automotive industry. Enhancements mostly include new and enhanced peripherals. The 80C5x7 has fail-safe mechanisms, analog signal processing facilities, enhanced timer capabilities, and a 32-bit arithmetic peripheral. Other features include:

Derivative vendors

More than 20 independent manufacturers produce MCS-51 compatible processors. [ citation needed ]

Other ICs or IPs compatible with the MCS-51 have been developed by Analog Devices, [31] Integral Minsk, [32] Kristall Kyiv, [33] and NIIET Voronezh. [13]

Use as intellectual property

Today, 8051s are still available as discrete parts, but they are mostly used as silicon intellectual property cores. [34] Available in hardware description language source code (such as VHDL or Verilog) or FPGA netlist forms, these cores are typically integrated within embedded systems, in products ranging from USB flash drives to washing machines to complex wireless communication systems on a chip. Designers use 8051 silicon IP cores, because of the smaller size, and lower power, compared to 32-bit processors like ARM Cortex-M series, MIPS and BA22.[ citation needed ]

Modern 8051 cores are faster than earlier packaged versions. Design improvements have increased 8051 performance while retaining compatibility with the original MCS 51 instruction set. The original Intel 8051 ran at 12 clock cycles per machine cycle, and most instructions executed in one or two machine cycles. A typical maximum clock frequency of 12 MHz meant these old 8051s could execute one million single-cycle instructions, or 500,000 two-cycle instructions, per second. In contrast, enhanced 8051 silicon IP cores now run at one clock cycle per machine cycle, and have clock frequencies of up to 450 MHz. That means an 8051-compatible processor can now execute 450 million instructions per second.

MCUs based on 8051

Silicon Storage Technology 89V54RD2 Apple TV, 1st generation - mainboard - Silicon Storage Technology 89V54RD2-3214.jpg
Silicon Storage Technology 89V54RD2

Digital signal processor (DSP) variants

Several variants with an additional 16-bit digital signal processor (DSP) (for example for MP3 or Vorbis coding/decoding) with up to 675 million instructions per second (MIPS) [44] and integrated USB 2.0 interface [45] or as intellectual property [46] exist.

Enhanced 8-bit binary compatible microcontroller: MCS-151 family

In 1996 Intel announced the MCS-151 family, an up to 6 times faster variant, [3] that's fully binary and instruction set compatible with 8051. Unlike their 8051 MCS-151 is a pipelined CPU, with 16-bit internal code bus and is 6x the speed. The MCS-151 family was also discontinued by Intel, but is widely available in binary compatible and partly enhanced variants.

8/16/32-bit binary compatible microcontroller: MCS-251 family

The 80251 8/16/32-bit microcontroller with 16 MB (24-bit) address-space and 6 times faster instruction cycle was introduced by Intel in 1996. [3] [47] It can perform as an 8-bit 8051, has 24-bit linear addressing, an 8-bit ALU, 8-bit instructions, 16-bit instructions, a limited set of 32-bit instructions, 16 8-bit registers, 16 16-bit registers (8 16-bit registers which do not share space with any 8-bit registers, and 8 16-bit registers which contain 2 8-bit registers per 16-bit register), and 10 32-bit registers (2 dedicated 32-bit registers, and 8 32-bit registers which contain 2 16-bit registers per 32-bit register). [48]

It features extended instructions [49] – see also the programmer's guide [50] – and later variants with higher performance, [51] also available as intellectual property (IP). [52] It is 3-stage pipelined. The MCS-251 family was also discontinued by Intel, but is widely available in binary compatible and partly enhanced variants from many manufacturers.

See also

Related Research Articles

<span class="mw-page-title-main">Motorola 68HC11</span> 8-bit microcontroller

The 68HC11 is an 8-bit microcontroller (µC) family introduced by Motorola in 1984. Now produced by NXP Semiconductors, it descended from the Motorola 6800 microprocessor by way of the 6801. The 68HC11 devices are more powerful and more expensive than the 68HC08 microcontrollers, and are used in automotive applications, barcode readers, hotel card key writers, amateur robotics, and various other embedded systems. The MC68HC11A8 was the first microcontroller to include CMOS EEPROM.

<span class="mw-page-title-main">Zilog Z80</span> 8-bit microprocessor

The Z80 is an 8-bit microprocessor introduced by Zilog as the startup company's first product. The Z80 was conceived by Federico Faggin in late 1974 and developed by him and his 11 employees starting in early 1975. The first working samples were delivered in March 1976, and it was officially introduced on the market in July 1976. With the revenue from the Z80, the company built its own chip factories and grew to over a thousand employees over the following two years.

<span class="mw-page-title-main">Intel 8085</span> 8-bit microprocessor by Intel

The Intel 8085 ("eighty-eighty-five") is an 8-bit microprocessor produced by Intel and introduced in March 1976. It is software-binary compatible with the more-famous Intel 8080 with only two minor instructions added to support its added interrupt and serial input/output features. However, it requires less support circuitry, allowing simpler and less expensive microcomputer systems to be built. The "5" in the part number highlighted the fact that the 8085 uses a single +5-volt (V) power supply by using depletion-mode transistors, rather than requiring the +5 V, −5 V and +12 V supplies needed by the 8080. This capability matched that of the competing Z80, a popular 8080-derived CPU introduced the year before. These processors could be used in computers running the CP/M operating system.

<span class="mw-page-title-main">PIC microcontrollers</span> Line of single-chip microprocessors from Microchip Technology

PIC is a family of microcontrollers made by Microchip Technology, derived from the PIC1650 originally developed by General Instrument's Microelectronics Division. The name PIC initially referred to Peripheral Interface Controller, and is currently expanded as Programmable Intelligent Computer. The first parts of the family were available in 1976; by 2013 the company had shipped more than twelve billion individual parts, used in a wide variety of embedded systems.

x86 assembly language is the name for the family of assembly languages which provide some level of backward compatibility with CPUs back to the Intel 8008 microprocessor, which was launched in April 1972. It is used to produce object code for the x86 class of processors.

Addressing modes are an aspect of the instruction set architecture in most central processing unit (CPU) designs. The various addressing modes that are defined in a given instruction set architecture define how the machine language instructions in that architecture identify the operand(s) of each instruction. An addressing mode specifies how to calculate the effective memory address of an operand by using information held in registers and/or constants contained within a machine instruction or elsewhere.

The National Semiconductor COP8 is an 8-bit CISC core microcontroller. COP8 is an enhancement to the earlier COP400 4-bit microcontroller family. COP8 main features are:

In computer engineering, an orthogonal instruction set is an instruction set architecture where all instruction types can use all addressing modes. It is "orthogonal" in the sense that the instruction type and the addressing mode vary independently. An orthogonal instruction set does not impose a limitation that requires a certain instruction to use a specific register so there is little overlapping of instruction functionality.

<span class="mw-page-title-main">Fairchild F8</span> 8-bit microprocessor first shipped in 1975

The Fairchild F8 is an 8-bit microprocessor system from Fairchild Semiconductor, announced in 1974 and shipped in 1975. The original processor family included four main 40-pin integrated circuits (ICs); the 3850 CPU which was the arithmetic logic unit, the 3851 Program Storage Unit (PSU) which contained 1 KB of program ROM and handled instruction decoding, and the optional 3852 Dynamic Memory Interface (DMI) or 3853 Static Memory Interface (SMI) to control additional RAM or ROM holding the user programs or data. The 3854 DMA was another optional system that added direct memory access into the RAM controlled by the 3852.

The Atmel AVR instruction set is the machine language for the Atmel AVR, a modified Harvard architecture 8-bit RISC single chip microcontroller which was developed by Atmel in 1996. The AVR was one of the first microcontroller families to use on-chip flash memory for program storage.

<span class="mw-page-title-main">Signetics 2650</span> 8-bit microprocessor

The Signetics 2650 was an 8-bit microprocessor introduced in July 1975. According to Adam Osborne's book An Introduction to Microprocessors Vol 2: Some Real Products, it was "the most minicomputer-like" of the microprocessors available at the time. A combination of missing features and odd memory access limited its appeal, and the system saw little use in the market.

TLCS is a prefix applied to microcontrollers made by Toshiba. The product line includes multiple families of CISC and RISC architectures. Individual components generally have a part number beginning with "TMP". E.g. the TMP8048AP is a member of the TLCS-48 family.

The VEX prefix and VEX coding scheme are an extension to the x86 and x86-64 instruction set architecture for microprocessors from Intel, AMD and others.

Each time Intel launched a new microprocessor, they simultaneously provided a system development kit (SDK) allowing engineers, university students, and others to familiarise themselves with the new processor's concepts and features. The SDK single-board computers allowed the user to enter object code from a keyboard or upload it through a communication port, and then test run the code. The SDK boards provided a system monitor ROM to operate the keyboard and other interfaces. Kits varied in their specific features but generally offered optional memory and interface configurations, a serial terminal link, audio cassette storage, and EPROM program memory. Intel's Intellec development system could download code to the SDK boards.

<span class="mw-page-title-main">ST6 and ST7</span>

The ST6 and ST7 are 8-bit microcontroller product lines from STMicroelectronics. They are commonly used in small embedded applications like washing machines.

<span class="mw-page-title-main">WDC 65C816</span> 8/16-bit microprocessor

The W65C816S is a 16-bit microprocessor (MPU) developed and sold by the Western Design Center (WDC). Introduced in 1983, the W65C816S is an enhanced version of the WDC 65C02 8-bit MPU, itself a CMOS enhancement of the venerable MOS Technology 6502 NMOS MPU. The 65C816 is the CPU for the Apple IIGS and, in modified form, the Super Nintendo Entertainment System.

RL78 Family is a 16-bit CPU core for embedded microcontrollers of Renesas Electronics introduced in 2010.

The PIC instruction set refers to the set of instructions that Microchip Technology PIC or dsPIC microcontroller supports. The instructions are usually programmed into the Flash memory of the processor, and automatically executed by the microcontroller on startup.

<span class="mw-page-title-main">STM8</span>

The STM8 is an 8-bit microcontroller family by STMicroelectronics. The STM8 microcontrollers use an extended variant of the ST7 microcontroller architecture. STM8 microcontrollers are particularly low cost for a full-featured 8-bit microcontroller.

The Mostek MK5065 was an 8-bit microprocessor introduced by Mostek in early 1974. The design was originally developed by Motorola for use in an Olivetti electronic calculator, and was licensed to Mostek for use in non-calculator roles. It featured three sets of processor registers, allowing it to switch to an interrupt handler in a single cycle, and a wait-for-data mode that aided direct memory access.

References

  1. John Wharton: An Introduction to the Intel MCS-51 Single-Chip Microcomputer Family , Application Note AP-69, May 1980, Intel Corporation.
  2. Intel 8051 Microprocessor Oral History Panel (PDF), Computer History Museum, September 16, 2008, archived from the original (PDF) on February 25, 2012, retrieved November 17, 2018
  3. 1 2 3 "Intel MCS 151 and MCS 251 Microcontrollers". datasheets.chipdb.org.
  4. John Wharton: Using the Intel MCS-51 Boolean Processing Capabilities Archived 2016-03-03 at the Wayback Machine Application Note AP-70, May 1980, Intel Corporation.
  5. "8051 Tutorial: Interrupts". Archived from the original on 2012-12-28. Retrieved 2012-12-21.
  6. "TASKING". www.tasking.com.
  7. 1 2 "8-bit Microcontrollers - 8-bit MCUs - EFM8 - Silicon Labs". www.silabs.com. Retrieved 2021-06-21.
  8. "Site Search | Maxim Integrated". www.maximintegrated.com. Retrieved 2021-06-21.
  9. 1 2 "8051 MCUs | Microchip Technology". www.microchip.com. Retrieved 2021-06-21.
  10. "TK80H51 250°C Microcontroller". Tekmos Inc. Archived from the original on 20 August 2017. Retrieved 23 August 2017.
  11. "HIGH TEMPERATURE 83C51 MICROCONTROLLER" (PDF). Honeywell. Retrieved 23 August 2017.
  12. "Microcontrollers and Microprocessors". Cobham Semiconductor Solutions. Archived from the original on 23 August 2017. Retrieved 23 August 2017.
  13. 1 2 "Микроконтроллеры" [Microcontrollers] (in Russian). Voronezh: OAO "NIIET". Archived from the original on 22 August 2017. Retrieved 22 August 2017.
  14. "Download link Youtube: ELEC2700 - 8051 Ultrasonic Radar". Archived from the original on 2017-08-22. Retrieved 2017-08-22.
  15. Archived at Ghostarchive and the Wayback Machine : "ELEC2700 Assignment 1 2014: 1D Pong". YouTube .
  16. "ELEC2700 - Computer Engineering 2 - University of Newcastle - Textbooks | Zookal.com". www.zookal.com.
  17. "ELEC2700 Assignment 3: Ultrasonic Radar" (PDF). justanswer.com. 29 June 2012. Retrieved 30 April 2023.
  18. 1 2 3 Keil C51 Users' Manual. Keil, a division of ARM Inc. 2021. Retrieved 17 May 2021.
  19. ACALL is a 2-byte subroutine calling instruction, it can access locations within the same 2 KB segment of memory. The absolute memory address is formed by the high 5 bits of the PC and the 11 bits defined by the instruction.
  20. 1 2 "Silergy 71M6513 Data sheet". Silergy electricity metering ICs. Silergy Corp. Retrieved 17 May 2021.
  21. 1 2 3 4 5 MCS-51 Microcontroller Family User's Manual (PDF). publication number 121517: Intel. 1994. Retrieved 17 May 2021.{{cite book}}: CS1 maint: location (link)
  22. Han-Way Huang. "Embedded System Design with C8051". p. 238.
  23. Lewin A. R. W. Edwards. "So, You Wanna be an Embedded Engineer: The Guide to Embedded Engineering, from Consultancy to the Corporate Ladder". 2006. p. 51.
  24. Bradford J. Rodriguez. "CamelForth/8051".
  25. Brad Rodriguez. "Moving Forth Part 7: CamelForth for the 8051".
  26. "8051 SwiftX Forth development". Archived 2015-09-24 at the Wayback Machine
  27. "MPE VFX Forth 7 cross compilers".
  28. Ganssle, Jack (2006-05-29). "Intel bows out, discontinues MCS-51".
  29. "MCS 51, MCS 251 and MCS 96 Microcontroller Product Lines, the Intel 186, Intel386 and Intel486 Processors Product Lines, and the i960 32 Bit RISC Processor, PCN 106013-01, Product Discontinuance, Reason for Revision: Add Key Milestone information and revise description of change" (PDF). Intel. 2006-05-02.
  30. "8044AH/8344AH/8744AH High Performance 8-bit Microcontroller with On-Chip Serial Communication Controller" (PDF). Intel. October 1994.
  31. "MicroConverter, 12-Bit ADCs and DACs with Embedded 62 kB Flash MCU" (PDF). analog.com. Retrieved 30 April 2023.
  32. "Микроконтроллеры и супервизоры питания Серии 1880; 1881; 1842; 588; 1345; 5518АП1ТБМ" [Microcontrollers and Power Supervisors Series 1880; 1881; 1842; 588; 1345; 5518AP1TBM] (in Russian). Minsk: OAO "Integral". Retrieved 6 January 2017.
  33. "Однокристальные микро-эвм" [Single-chip microcomputers] (in Russian). Kyiv: Kristall. Archived from the original on 30 May 2012. Retrieved 5 January 2017.
  34. Hussaini (20 August 2019). "Why do we have to use the 8051? Isn't it too old?". Technobyte. Retrieved 5 July 2023.
  35. "PSoC 3 - Infineon Technologies". Infineon . Archived from the original on 2022-09-21. Retrieved 2023-05-20.
  36. "DS80C320 High-Speed/Low-Power Microcontrollers - Maxim Integrated". www.maximintegrated.com. Retrieved 2021-06-21.
  37. "Syntill8 - Products". www.syntill8.com. Retrieved 2021-06-21.
  38. "SDA30C164 Datasheet" (PDF). www.semiee.com. Retrieved 2022-05-15.
  39. "Silergy Metering ICs". Silergy Corp. Retrieved 12 May 2021.
  40. "Silergy Energy Measurement ICs". Silergy Corp. Retrieved 12 May 2021.
  41. datasheetq.com. "89V54RD2 Datasheet PDF Download - Silicon Storage Technology". www.datasheetq.com. Retrieved 2020-01-18.
  42. "STC Microcontroller---STCmicro Technology Co,.Ltd". www.stcmicro.com. Retrieved 2017-02-19.
  43. "site index - Nanjing Qinheng Microelectronics Co., Ltd". wch-ic.com. Retrieved 2021-06-21.
  44. "TI Delivers new low-cost, high-performance audio DSP for Home and Car w/ 8051". Archived from the original on 2016-11-13. Retrieved 2013-05-06.
  45. "Atmel AT85C51SND3 Audio DSP Data Sheet with USB 2.0" (PDF). Retrieved 30 April 2023.
  46. Salim, A.J.; Othman, M.; Ali, M.A. Mohd (October 5, 2006). "Integration of 8051 With DSP in Xilinx FPGA". 2006 IEEE International Conference on Semiconductor Electronics. pp. 562–566. doi:10.1109/SMELEC.2006.380694. ISBN   0-7803-9730-4. S2CID   21616742 via IEEE Xplore.
  47. The 8051 microcontroller By Kenneth J Ayala Google books
  48. "MCSÉ 251 Architecture Overview" (PDF). chipdb.org. Retrieved 30 April 2023.
  49. "Temic TSC80251 Architecture" (PDF).
  50. "Atmel TSC80251 Programmers Guide" (PDF). Archived from the original (PDF) on 2016-03-04. Retrieved 2013-05-06.
  51. DQ80251 32bit Microcontroller DCD
  52. R80251XC 32bit Microcontroller Evatronix[ dead link ]

Further reading

Books
Intel
Misc

Commons-logo.svg Media related to MCS-51 at Wikimedia Commons