For the programmer I would recommend a PicKit2 or PicKit3 as these are
USB based and have the necessary ICSP interface. You can easily get these from
For the other components you should have most of the stuff lying around if you
have done any type of electronics except for the programmer, RS232 chip and
PIC. For getting information out of the project and into the PC a USB to RS232
is needed and this can also be bought on ebay.
The course is built around mainly standard components except for the
Chips You may not have on the bench:
External hardware you need is:
Serial Port : A USB to Serial
converter (a good place to get these is ebay).
ICSP programmer : A PicKit 2 or
PicKit 3 (again you can get these from ebay).
Programmer - if you are using a different programmer then check the
You will need an ICSP capable programmer, any will do as long as it has
the following connections:
Also it must be capable of programming a 16F88.
Hardware required for course:
You will also need to purchase the following hardware:
External Hardware needed Serial
Port for the PC.
External Hardware needed ICSP
programmer for the PC.
You also need a circuit board to work on or a solderless breadboard and wire
for connecting up the circuit.
Preparing the 16F88 for the C
R1 stops the part entering the wrong programming mode (LVP mode). LVP mode
is the default mode (Low Volt Programming) and is always enabled for new parts
but it makes the pin unusable for anything else. Since there are not many
pins in this particular part the first task is to disable LVP mode.
You can do this by programming the part with the first program which has turned
off the LVP fuse and at the same time it flashes the LED so once the part is
programmed you can see that it's working.
At this point you don't need to do any compilation or C coding so lets just go
through the programming process.
Note: Later diagrams may not show R1 as it is
only important when 1st programming the part (if you ensure that the LVP
control is always set to off in the compiler project edit control panel - see
videos for more information on that).
Once LVP is programmed off then the PGM pin becomes a 'normal' pin i.e. you
can treat it as normal I/O and use it just like any other programmable I/O
C Programming tutorial directory preparation.
Create a working directory:
Download hex file
for setting up the C programming tutorial
Download the file "prog00-16F88-intro.zip" to that directory.
Note: I use 7zip - just do a google search
for '7zip' if you don't have an unzip program which is free and integrates into
the windows shell - meaning you can right click in explorer and directly
zip/unzip files. Unzip the file 'prog00-16F88-intro.zip' in the pic-c-course directory.
It will create a directory c:\pic-c-course\prog00-16F88-intro\ in which will
be a hex file.
C programming tutorial: Program the 16F88
Note:ICPROG is a legacy progammer.
Follow the instrucitions for your ICSP
programmer to program the chip.
However the process described below is similar for all programmers and is
therefore left here for reference.
For this C programming tutorial you should have installed ICPROG so start that
program up now. Setup the hardware interfaces for your programmer using the
If you are using the parallel port programmer then the setup details are shown
in the image below:
Note: You can set the I/O delay to zero
(tested on my parallel port programmer) - this will program the device slightly
faster. Also if you use XP you'll need to select the Windows API interface
(in the above box).
Note: For Windows XP use Windows API.
Note see module 1 of the course for a video
tutorial on ICPROG.
Now program the file into the PIC Microcontroller.
Note: You can find detailed instructions on
using ICPROG for this C programming tutorial here.
C programming tutorial: Result
You should now have a circuit with a flashing LED - this is the equivalent of
the "hello World" program you usually find in the start of C courses but
because the microcontroller is only concerned with I/O ports there is no way of
displaying a message yet ...
... later on we'll look at RS232 where you can make a hello world program.
...you have programmed the microcontroller correctly and are now ready to
start the C programming tutorial course.
This proves that all the software and hardware is operating correctly.
C programming tutorial: Notes
Things to note about the circuit for the C programming tutorial course:
It uses the internal oscillator.
It has an internal reset circuit.
The internal oscillator is running at 4MHz and saves you using an external
crystal or RC network. Similarly the reset circuit is also internal. Both
these features save pins as what was once a dedicated reset pin can now be used
as an I/O pin. Again using the internal oscillator saves two pins for use as
End of C programming tutorial Setup page.
-------------------------- ICPROG (legacy programmer information )
Note: It is recommended that you use a
USB programmer such as a PicKit 2 or PicKit 3
Use only for older computers that have a parallel port or serial port
(and appropriate programming hardware)
Note: This is for older computers that have a
serial port or parallel port (or you fancy building it all yourself).
I started out by building a parallel port interafce - and it works fine - do
check on this website for details of that parallel port programmer as you will
need to inculde the transmission line termination impedance to make it work
over long cables reliably).
C Programming Tutorial: Programming software : ICPROG (Free!)
Download and install ICPROG which is PC software that
generates the correct serial ICSP signals to program your PIC chip. You can
use it either on a parallel port, serial port or USB port with a USB to serial
adapter - ( USB <-> Serial untested).
Note: Look in left frame for download
C Programming Tutorial:
Setting the path to ICPROG
You should setup the environment variable to icprog.exe so that it can be
called from anywhere but if you don't you can still start icprog by double
clicking icprog.exe in its installation directory.
The installation location is up to you
but you should put it into a directory that is in the current path so that
windows can find it or add the directory (where you put ICPROG) to the system
path environment variable. Unfortunately setting up the windows path is different for every windows
installation from Windows 95 to XP so you will need to find the exact details
for your operating system. Windows 95 uses autoexec.bat and config.sys.
For XP you can set the path from Start --> Control panel --> System
--> Advanced (tab) --> Environment variables. You can set the path for
a user or the system. I usually set the system path but see below:
Note : Do not delete the path variables and
only add to the end of them. If unsure select the system path value and copy
and paste it to a local editor. There edit it keeping all the original - make
sure it is exactly the same with only your additions on the end. e.g. if you
want to put icprog.exe in a directory c:\icprog-path add the text
'c:\icprog-path;' to the end. Note save the text editor text and check
everything works as before - if it does not go back and set the path to what
you started with.
C Programming Tutorial:
ICPROG for Windows 2000/XP users
Windows 2000 and XP stop you using the parallel port directly by adding a layer
of software between your program and the parallel port. It's probably there
so that no more than one process (e.g. printer) or user can access it at the
same time - but a 'PC' is a personal computer usually used by one person this
"feature" just gets in the way.
What this means is it is a pain if you want to use the parallel port for
hardware. To get round this you have to install another piece or software
which *will* allow you access to the parallel port. For ICPROG this program
is a system driver and you can also download it from the ICPROG page it is icprog.sys (see
instructions for getting this driver below)
For a parallel port programmer you need to install icprog.sys to allow the
software to have parallel port access:
Note: A Serial or USB port programmer does
not have this restriction.
Open an explorer window and navigate to the icprog install directory, Download the icprog.sys file to
your icprog install directory i.e. in the same directory as icprog.exe.
The Driver is a little buried on the site but here are instructions for
obtaining it :
To get to the driver, click download link on the left
column at icprog.com and then
in the main page
the scroll the right column to find the text link
(just above the help files) i.e. the link labelled:
Click the link to download the zip file: icprog_driver.zip
Then extract icprog.sys from the zip file
(using winzip or 7zip.com (free)
C Programming Tutorial: Windows XP and
Using explorer select icprog.exe, right click. Then select the Properties
menu then the Compatibility tab. Make sure compatibility mode is disabled -
icprog will set this for you as you follow the next instructions.
Start ICPROG - a privileged instruction error occurs - ignore this - icprog
Now in icprog choose Menu --> Settings --> Options --> Misc (tab) and
set Enable NT/2000/XP Driver - icprog will now re-start with the driver
installed. Back to start page.
An PIC Ultrasonic Distance meter project using a PIC microcontroller which is ideal since it has a capture timer that can accurately measure the ultrasonic echo time, so calculating the distance is ea…