The PIC16C84, PIC16F84 and PIC16F84A are 14-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 Windows operating system.
The PIC16x84 is a microcontroller in the PIC family of controllers produced by Microchip Technology. It 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, PIC16F84 uses EEPROM memory, so it's easy to erase and requires no special tools to do so. It also has a 64 byte EEPROM for storage of user data.
The PIC16C84 was easily tweaked to allow crackers to read its protected contents, simple disassemblers could then produce the source assembly files. Microchip corrected this by introducing the PIC16F84 (and later the PIC16F84A) and mothballing the PIC16C84.
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).
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.