The PIC 16F84 is a versatile little microcontroller which has become very popular with hobbyists because of its EEPROM program memory, which makes the software development cycle quick and easy.
When starting out, it's difficult to know which choices to make, as there are numerous programmers and development tools available. When choosing a programmer, it's important to get something that will work with your system, especially if you happen to be using Linux, as some programmers only have software available for DOS or Windows.
I used the No Parts Pic Programmer, or "NOPPP", because it's a simple design [some PIC programmers are over-complex IMHO], plus Linux software is available to drive it. I've made some modifications to NOPPP to enable it to be used with other PICs.
Ramsey Electronics sell a kit called PICPRO based on NOPPP, though I think it is rather overpriced, especially as they're too cheap to include a ZIF socket for the PIC. You really need a ZIF socket. They do, however, provide a PC board and parts for a simple test project, so you can verify that everything works right away.
Oatley Electronics sell a similar kit, at a much better price, but they too don't supply a ZIF socket, and this kit doesn't come with a case and PSU.
For software, start by looking at GnuPIC. Every other PIC page you look at will have a link to GnuPIC, but most of them point to the old location which doesn't exist anymore. There's an Alternate GnuPIC site hosted in the Netherlands.
The first thing you'll want to grab is a copy of GPASM, a GPL assembler for PIC. GPASM is MPASM compatible, so most of the source code you can find on the web will work without modification.
One thing you will find when you first set out to use GPASM, is this line in most source code:
include "p16F84.inc"It took me a while to figure out where to get these ".inc" files. You have to download MPASM to get these files.
Next you may want to start looking at high level languages. There are a number of BASIC implementations targeted at the PIC processors, but if you're a C programmer like me, try out C2C. They have a Linux version, which I find works quite well, although sometimes the code is not as optimal as I'd like. It is however a simple matter to hand-optimise the code if speed or size is critical. I find it's much quicker to bash out a concept in C and get it working, and then hack the assembler around than working with assembler all the time.
Some other things you'll need [if you don't have them already] are a 5v regulated power supply, and a breadboard for lashing up prototype circuits. A DVM is always useful, an oscilloscope is nice to have too, though it's easy enough to manage without one.
A very worthwhile site with frequent updates is the PIC / Scenix Developers page. I find this an excellent reference.