TheΒ 16F84 is deserves looking at because it is the GranDaddy of PIC Microcontrollers but you should not use it for new designs (see Below)β¦
The PIC16F84 is a the most well known and most well used of all the PIC microcontrollers β it is used in numerous projects that you can find across the web.
Even though the 16F84 is getting on a bit, it is one of the most popular of the PIC microcontrollers and there are hundreds of circuits for it on the web but it does have limited memory, RAM and peripherals (See diagram below). As of 2015 microchip are recommending that you use 16F84A instead of 16F84 with the only difference being that the A-version runs at 20MHz using a 20MHz crystal (the non-A version runs at 10MHz crystal speed only).
It is an 8 bit mid-range microcontroller having 1024 words of program memory, 68 bytes of RAM and 64 bytes of long term EEPROM storage and a single peripheral β an 8 bit timer β Timer0. The real innovation of this device is that it can be re-programmed using ICSP in circuit β and the interesting thing is that this same scheme is used in all PIC devices proving that the design was and is good from the start. The same can be said of Timer0 which is also used throughout the PIC family ranges, although in 18F devices you can set a control bit that turns it into a 16 bit timer. Of course the 8-bit implementation in that device is still the same as the 16F84!
ICSP
The most useful feature of this microcontroller is that itβs flash based so Β it can be re-programmed many times. Β In addition if you design the circuit correctly you can re-program it in-circuit without removing the chip using (ICSP) In Circuit Serial Programming.
Warning the 16F84 is obsolete.
The 16F88,1FF628,16F627 have the same pinout
and are cheaper!
(There are also many other similar chips with different RAM/EPROM/internal peripherals).
Even so if you already have a PIC16F84 then this introductionΒ will show you how to program it with a ICSP programmer. For a comparison betweenΒ the 16F84 and someΒ other PIC micros (including the 16F88) you can compare bubble diagramsΒ showing PIC features visuallyΒ here.
In fact the 16F88 is a good PIC micro to progress onto after starting out on the 16F84 as the 16F88 is backwards compatible with the 16F84 -it has the same number of pins and same pin functions. Β Some pins are more flexible but still backwards compatible with the 16F84.
Note: You canβt easily go from a 16F88 back to a 16F84A, as the 16F88 lets you use pins in a more flexible mannerΒ e.g. the 16F88 has an internal oscillator and you can use the crystal oscillator pins either for an external crystal oscillator (as in the 16F84) or as normal I/O pins. This lets the 16F88 have 16 I/O pins as compared to the 16F84 with 13 I/O pins.
For this introduction you need a PIC programmerΒ with an ICSP output connector e.g. PICKit3.
Youβll also need to download the C compiler for source code re-compilation (if you want the re-compile code). The compiler is free for the small amounts of code used here.
Jump to Circuit diagram.
PIC 16F84 Index |
Features |
Programming |
ICSP Connection |
Power Supply |
Oscillator modes |
Starter circuit and software |
Before you start have a look at the following for background info:
- Programming with PIC ICSP (In Circuit Serial Programming).
- PIC ICSPΒ signals and βrealβ circuit.
- General purpose ICSP programmer circuit (this is a parallel port programmer) β For USB ports use a PICKit3 or PICKit2.
- MikroC compiler (Use the Free [<2k] download link).
- General usage of the MikroC Compiler.
PIC16F84 Features
The 16F84 is packaged in an 18 pin chip and although it has limited peripherals it is usable in many circuits. Here are its features and a short comparison.
Comparison | 16F84 | 16F88 |
Program Memory | 1024 Words | 4096 Words |
RAM | 68 Bytes | 368 Bytes |
EEPROM | 64 Bytes | 256 Bytes |
I/O PINS | 13 | 16 |
PERIPHERALS | 1 | 9 |
List of peripherals | Timer:1 | Timers:3, ADC 7 i/ps, 2 Analogue comparators, CCP,SSP, USART |
The following bubble diagram shows the major peripherals and features of the 16F84 in a visual format:
16F84
Note: You can compare this chip (using bubble diagrams) to some others used on this site by clicking here
PIC16F84 Programming
For more detail: PIC16F84 Introduction