

|
A microcontroller is a computer-on-a-chip used to control electronic devices. It is a type of microprocessor emphasizing self-sufficiency and cost-effectiveness, in contrast to a general-purpose microprocessor, the kind used in a PC. A typical microcontroller contains all the memory and I/O interfaces needed, whereas a general purpose microprocessor requires additional chips to provide these necessary functions.
Microcontrollers are a component in many kinds of electronic equipment (see embedded system). They are the vast majority of all processor chips sold. Over 50% are "simple" controllers, and another 20% are more specialized digital signal processors (DSPs). A typical home in the Western world is likely to have only one or two general-purpose microprocessors but somewhere between one and two dozen microcontrollers. They can be found in almost any electrical device, washing machines, microwave ovens, telephones etc.
Most microcontrollers today are based on the Harvard architecture, which clearly defined the four basic components required for an embedded system. These include a CPU core, memory for the program (ROM or Flash memory), memory for data (RAM), one or more timers (customisable ones and watchdog timers), as well as I/O lines to communicate with external peripherals and complementary resources — all this in a single integrated circuit. A microcontroller differs from a general-purpose CPU chip in that the former generally is quite easy to make into a working computer, with a minimum of external support chips. The idea is that the microcontroller will be placed in the device to control, hooked up to power and any information it needs, and that's that.
A traditional microprocessor won't allow you to do this. It requires all of these tasks to be handled by other chips. For example, some number of RAM memory chips must be added. The amount of memory provided is more flexible in the traditional approach, but at least a few external memory chips must be provided, and additionally requires that many connections must be made to pass the data back and forth to them.
For instance, a typical microcontroller will have a built in clock generator and a small amount of RAM and ROM (or EPROM or EEPROM), meaning that to make it work, all that is needed is some control software and a timing crystal (though some even have internal RC clocks). Microcontrollers will also usually have a variety of input/output devices, such as analog-to-digital converters, timers, UARTs or specialised serial communications interfaces like I²C, Serial Peripheral Interface and Controller Area Network. Often these integrated devices can be controlled by specialised processor instructions.
Originally, microcontrollers were only programmed in assembly language, or later in C code. Recent microcontrollers integrated with on-chip debug ciruit accessed by In-circuit emulator via JTAG enables a programmer to debug the software of an embedded system with a debugger.
More recently, however, some microcontrollers have begun to include a built-in high-level programming language interpreter for greater ease of use. BASIC is a common choice, and is used in the popular BASIC Stamp MCUs.
Microcontrollers trade away speed and flexibility to gain ease of equipment design and low cost. There's only so much room on the chip to include functionality, so for every I/O device or memory increase the microcontroller includes, some other circuitry has to be removed. Finally, it must be mentioned that some microcontroller architectures are available from many different vendors in so many varieties that they could rightly belong to a category of their own. Chief among these are the 8051 and Z80 derivatives.
Until May 2004, these µCs were developed and marketed by IBM, whose 4xx family was sold to Applied Micro Circuits Corporation.
Until 2004, these µCs were developed and marketed by Motorola, whose semiconductor division was spun-off to establish Freescale.
(Renesas is a joint venture of Hitachi and Mitsubishi.)
For almost every bare microcontroller manufacturer, there are a dozen little companies repacking them into a more hobbyist friendly package. Their product is often an MCU preloaded with a BASIC interpreter, soldered onto a Dual Inline Pin board along with a power regulator and other goodies. PICs seem to be very popular here, possibly due to good static protection. More powerful examples (e.g. faster execution, more RAM and code space) seem to be based on Atmel AVR or Hitachi chips.
This author's favorite. They're cheap, nothing more than a PIC with BASIC loaded. A programmer is simply a serial plug with 3 resistors. Their BASIC offers great functionality hampered by limited variables and IF..GOTO.
The ZX series MCUs are based on the Atmel ATmega32 processor and run a Virtual Machine that features built-in multi-tasking, 32-bit floating point math and over 1K of RAM for user's programs. Multi-tasking facilitates a more structured approach to coding for interface devices that require prompt service, e.g. serial devices, infrared remotes, etc.
The programming language for the ZX series is ZBasic, a modern dialect of Basic modeled after Microsoft's Visual Basic. The biggest improvement over the typical MCU Basic dialect is parameterized subroutines/functions that support local variables. Strong type checking is another improvement that aids in writing correct programs more quickly.