PIC16x84

The PIC16C84, PIC16F84 and PIC16F84A are 8-bit microcontrollers of which the PIC16C84 was the first introduced in 1993 and hailed  as the first PIC microcontroller to feature a serial programming algorithm and EEPROM memory. It is a member of the PIC family of controllers, produced by Microchip Technology. The memory architecture makes use of bank switching. Software tools for assembler, debug and programming were only available for the Microsoft DOS and Windows operating systems.

Description
The PIC16x84 is a microcontroller in the PIC family of controllers produced by Microchip Technology (originally named " Arizona Microchip"). It was Microchip's first microcontroller that utilised "EEPROM" memory technology for the program memory. The use of "EEPROM" technology for program memory has now been disused in favour of "FLASH" memory that is considerably cheaper to manufacture, releases less toxins into the atmosphere and is much more reliable than "EEPROM". Both "EEPROM" and "FLASH" utilise similar forms of "floating gate" technologies to operate. The device features one 8-bit timer, and 13 I/O pins. The PIC16x84 became popular in many hobbyist applications because it uses a serial programming algorithm that lends itself to very simple programmers. Additionally, the PIC16C84 uses EEPROM memory, so it is easy to erase and requires no special tools to do so. The PIC16F84 and its updated version, the PIC16F84A both utilised FLASH program memory. The PIC16C84, PIC16C84A, PIC16F84 and the PIC16F84A all contain an additional 64 Bytes of EEPROM addressed from the "DATA" memory map. This additional memory is intended for use as "user data", hence the reason it can only be addressed from the "DATA" memory mapping.

F-version
The PIC16F84/PIC16F84A is an improved version of the PIC16C84, and almost completely compatible, with better program security and using flash memory instead of EEPROM memory for program memory. The PIC16F84/PIC16F84A has 68 bytes of RAM whilst the PIC16C84 has 36 bytes.

Since the two chips are so similar they are often referred to by the term PIC16x84 (x is used as a wildcard when referring to chips).

History
The PIC16C84 was introduced in 1993 and has been hailed as the first PIC microcontroller to feature a serial programming algorithm and EEPROM memory (it was preceded by the Motorola MC68HC805B6 and MC68HC805C4 along with the MC68HC11E2 with serial bootloader and EEPROM program storage released in the late 1980s). These chips lend themselves to hobby use: only a simple and cheap programmer is required to program, erase and reprogram the chip. As PIC16C84 supplies became limited due to it being discontinued, the PIC16F84 became popular as it is an almost drop-in replacement. New programming software was needed as the programming algorithm is different but the programming hardware required was the same.

Even later (1998) Microchip Technology introduced the improved PIC16F84A which allowed for faster clock speeds (up to 20 MHz), faster programming, and decreased the current draw of the chip.

The PIC16x84 microcontroller is a member of Microchip's 14-bit series (the instruction word size is 14 bits for all instructions), making the '84 a good development prototype for other similar but cheaper one-time-programmable 14-bit devices.

Recent pin-compatible variants
Microchip's product line has gone through many revisions since the 16x84 and more powerful, flexible, cheaper pin-compatible PICs have been developed.

Existing PIC 16x84 code may require some modifications for these variants, namely making sure pins with multiple functions have been set up properly.


 * PIC 16F84A - 1K program memory, 68 bytes data memory, 64 bytes EEPROM, 1× timer (listed as a comparison)
 * PIC 16F628A - 2K program memory, 224 bytes data memory, 128 bytes EEPROM, 3× timers, hardware PWM, onboard 4 MHz/37 kHz RC oscillator.
 * PIC 16F648A - Same as 16F628A with 4K program memory.
 * PIC 16F88 - Nanowatt Technology variant, 4K program memory, 368 bytes data memory, 256 bytes EEPROM, 3× timers, hardware PWM, on-board 8 MHz/37 kHz precision oscillator, 7-input 10-bit ADC, synchronous serial port supporting SPI and I²C.
 * PIC 16F1827 - Nanowatt XLP Technology variant, 4K program memory, 368 bytes data memory, 256 bytes EEPROM, 5× timers, hardware PWM, onchip 32 MHz/31 kHz precision oscillator, 12-input 10-bit ADC, 4× PLL.
 * PIC 16F1847 - Nanowatt XLP Technology variant, 8K program memory, 1024 bytes data memory, 256 bytes EEPROM, 5× timers, hardware PWM, onchip 32 MHz/31 kHz precision oscillator, 12-input 10-bit ADC, 4× PLL. 5-bit DAC.

This is an 8-bit enhanced mid-range core with 14 additional instructions and optimizations for the C Programming Language.