* It provides many functions (CPU, RAM, ROM, I/O, interrupt logic, timer, etc.) in a single package
* 8-bit ALU, Accumulator and Registers; hence it is an 8-bit microcontroller
* 8-bit data bus – It can access 8 bits of data in one operation
* 16-bit address bus – It can access 216 memory locations – 64 kB ( 65536 locations ) each of RAM and ROM
* On-chip RAM – 128 bytes (“Data Memory”)
* On-chip ROM – 4 kB (“Program Memory”)
* Four byte bi-directional input/output port
* UART (serial port)
* Two 16-bit Counter/timers
* Two-level interrupt priority
* Power saving mode
A particularly useful 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 internal registers and RAM. This feature helped to 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 of storing interrupt context on a stack.
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 communications with no external components. A mode compatible with an RS-485 multi-point communications environment is achievable, but the 8051′s real strength is fitting in with existing ad-hoc protocols, e.g when controlling serial-controlled devices.
Once a UART – and a timer, if necessary, have been configured, the programmer needs only to 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.
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.
Even higher speed single cycle 8051 cores, in the range 130 MHz to 150 MHz, are now available in internet downloadable form for use in programmable logic devices such as FPGAs, and at many hundreds of MHz in ASICs, for example the netlist from www.e8051.com.
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 non-volatile data storage, I²C, SPI, and USB host interfaces, PWM generators, analog comparators, A/D and D/A converters, RTCs, extra counters and timers, in-circuit debugging facilities, more interrupt sources, and extra power saving modes.
Thank you for the great read, even though it took quite a long time to complete reading. (English is not my national tongue) Can I ask where you got your sources from? Many thanks!