Setting up the C Programming Tutorial Course
This page shows you how to setup everything for the course and
setting up hardware and software in a fair bit of detail. There is a
information to go through because everything has to be in place.
In fact the first setup is the most difficult part of any
project to get
going and you are going to have learning curves for each piece of
take some time to go though this information carefully.
Setting up hardware and software.
For the programmer I would recommend a PicKit3 as
these are USB based
and have the necessary ICSP interface. You can easily get these from
use the free MPLAB X software to program the PIC device.
If you need an alternative, you can use ICPROG, which is only
you want to use an older computer with a serial or parallel port
Instructions for using this legacy method are at the end of the page.
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
RS232 is needed and this can also be bought on ebay.
Note: You can use a serial
port adaptor that does not require you to use an
RS232 chip - it plugs directly to the PIC chip.
The course is built around mainly standard components except
Chips You may not have on the bench:
External hardware you need is:
Programmer - if you are using a different programmer then check the
- Serial Port
adaptor : A USB to Serial converter (a good place to get these is ebay)
or serial port adaptor.
programmer : A PicKit 3 (again you can get these from
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
You will also need to purchase the following hardware:
Hardware needed Serial Port USB interface adaptorfor the
Hardware needed ICSP programmer for the PC.
(Bill Of Materials)
Preparing the 16F88
MPLAB X programmer (recommended)
(Free for this course!)
all C Project Course
files to MikroC PRO V6
The first thing you need to do is down load the compiler :
. Download the executable to
double click it and follow the instructions.
*** NOTE: DO
NOT BUY THE COMPILER
It has free output up to 2kHex Bytes!
You don't need to buy it.
The course works fantastically well within this limit.
Note: This compiler
allows you free use up to
2k output (hex file) size - all the examples in this course generate
circuit for the C
Programming Tutorial Course:
Next you need to construct the following circuit:
Note D7 should be placed at the top right of your development board as
will form part of the dice circuit later on.
circuit, noting that the
is the top
right diode in a dice
to the left and below
Initial circuit for the C programming tutorial course
Layout this circuit, noting that
is the top
right diode in a dice
to the left and below
BOM for the C
programming tutorial course.
For this page - see below for BOM for the 1st complete circuit.
Here is the list of parts for the above circuit (or Bill Of Materials):
C programming tutorial BOM
||C2 C4 C5
||C6 C7 C8 C9
||Dtype connector 9 way RS232 on PC
||Power Connector socket showing NC
||Light emitting diode
||D2 D3 D4 D5 D6 D7
||Header 4 way
||push button normally open
||R3 R4 R5 R6 R7 R8 R9
||RS232 level translator
||5V 1A voltage regulator
Programming Tutorial BOM.
The last 3 components are for the curve tracer which also uses 10k
for gain setting.
You also need a circuit board to work on, or a solderless breadboard
for connecting up the circuit.
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
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
off the LVP fuse and at the same time it flashes the LED so once the
programmed you can see that it's working.
At this point you don't need to do any compilation or C coding so lets
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
control is always set to off in the compiler project edit control panel
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
C Programming tutorial directory preparation.
Create a working directory:
file for setting up the C programming tutorial
Download the following zip file:
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
the windows shell - meaning you can right click in explorer and
Unzip the file 'prog00-16F88-intro.zip' in the
It will create a directory
c:\pic-c-course\prog00-16F88-intro\ in which will
be a hex file.
This is the prefered method : Create a pre-built project in
MPLABX in the
directory that contains the hex file and hit the programming button.
I have created a pages that details this process here:
MPLAB X pre-built hex file programming
LEGACY INFORMATION FOLLOWS ###########
LEGACY programmer ICPROG
C programming tutorial: Program the 16F88 using ICPROG
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.
More details on using ICPROG here.
For this C programming tutorial you should have installed
start that program up now. Setup the hardware interfaces for
using the options menu.
Note: You can set the
I/O delay to zero
(tested on my parallel port programmer) - this will program the device
faster. Also if you use XP you'll need to select the Windows
(in the above box).
If you are using the parallel port programmer then the setup details
in the image below:
Note: For Windows XP use Windows API.
Note see module 1 of the
course for a video
tutorial on ICPROG.
Load hex file
Now open the file (in 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
the "hello World" program you usually find in the start of C courses
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
...you have programmed the microcontroller correctly and are now ready
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
crystal or RC network. Similarly the reset circuit is also
these features save pins as what was once a dedicated reset pin can now
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 )
is recommended that you use a
such as a PicKit 2 or
Use only for older computers that have a parallel port or
(and appropriate programming hardware)
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
check on this website for details of that parallel port programmer as
need to inculde the transmission line termination impedance to make it
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.
use it either on a parallel port, serial port or USB port with a USB to
adapter - ( USB <-> Serial untested).
Note: Look in left frame
Setting the path to ICPROG
You should setup the environment variable to icprog.exe so that it can
called from anywhere but if you don't you can still start icprog by
clicking icprog.exe in its installation directory.
installation location is up to you
but you should put it into a directory that is in the current path so
windows can find it or add the directory (where you put ICPROG) to the
path environment variable.
Unfortunately setting up the windows path is different for
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
For XP you can set the path from Start --> Control panel
--> Advanced (tab) --> Environment variables.
You can set the path for
a user or the system. I usually set the system path but see
Note : Do not delete the
path variables and
only add to the end of them. If unsure select the system path value and
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
everything works as before - if it does not go back and set the path to
you started with.
ICPROG for Windows
Windows 2000 and XP stop you using the parallel port directly by adding
of software between your program and the parallel port. It's
so that no more than one process (e.g. printer) or user can access it
same time - but a 'PC' is a personal computer usually used by one
"feature" just gets in the way.
What this means is it is a pain if you want to use the parallel port
hardware. To get round this you have to install another piece
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
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
your icprog install directory i.e. in the same
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
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)
Programming Tutorial: Windows XP and
Using explorer select icprog.exe, right click. Then select
menu then the Compatibility tab. Make sure compatibility mode
is disabled -
icprog will set this for you as you follow the next
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
Back to start page.
| About Me
Claim Your: Useful
"Arduino Software Guide"