Setting up the C Programming Tutorial
Course:
C programming tutorial course:
Setting up hardware and software.
The course is built around mainly standard components except
for the following
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).
ICSP Programmer - if you are
using a different programmer then check the following
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.
- Hardware
(Bill Of Materials)
The circuit
Compiler setup:
IPreparing the
16F88
Starting the
16F88
ICPROG (legacy programmer)
This is for older
computers that have a serial port or parallel port.
Use only for older computers that have a parallel port
or serial port (and appropriate programming hardware that you make or
buy).
Click to find out
details of ICPROG
The
Compiler (Free for this course!)
NEW
Updated all C Project Course files to MikroC PRO V5.00
The first thing you need to do is down load the compiler :
Click Here
. Download the executable to
your computer,
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 code below this limit.
First
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
this will form part of the dice circuit later on.
Note:
Layout this circuit noting that
the diode D7
is
the top right diode in a dice display so
allow
room to the left and below D7.
Initial
circuit for the C programming tutorial course

Note:
Layout this circuit noting that
the diode D7
is
the top right diode in a dice display so
allow
room to the left and below D7.
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
| Item |
Part |
Description |
Qty |
IDs |
| 1 |
10u |
electrolytic capacitor |
2 |
C1 C3 |
| 2 |
100n |
Capacitor |
3 |
C2 C4 C5 |
| 3 |
1u |
electrolytic capacitor |
4 |
C6 C7 C8 C9 |
| 4 |
DB9F-90 |
Dtype connector 9 way
RS232 on PC COM port |
1 |
CN1 |
| 5 |
2.1mm jack |
Power Connector socket
showing NC connection |
1 |
CN2 |
| 6 |
1N4001 |
diode |
1 |
D1 |
| 7 |
RED |
Light emitting diode |
6 |
D2 D3 D4 D5 D6 D7 |
| 8 |
1N4148 |
diode |
1 |
D9 |
| 9 |
1x4 |
Header 4 way |
1 |
HD1 |
| 10 |
Push button |
push button normally
open |
2 |
PB1 PB2 |
| 11 |
100 |
resistor |
1 |
R10 |
| 12 |
10k |
resistor |
2 |
R1 R2 |
| 13 |
1k |
resistor |
7 |
R3 R4 R5 R6 R7 R8 R9 |
| 14 |
16F88 |
Microcontroller |
1 |
U1 |
| 15 |
MAX232CP |
RS232 level translator |
1 |
U2 |
| 16 |
LM7805C |
5V 1A voltage regulator |
1 |
U3 |
| 17 |
LM324 |
Quad opamp |
1 |
U4 |
| 18 |
20k |
Resistor |
4 |
R10-R13 |
| 19 |
100 |
Resistor |
1 |
R14 |
End of C
Programming Tutorial BOM.
The last 3 components are for the curve tracer which also uses 10k
resistors for gain setting.
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 Programming Tutorial:
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 pin.
C Programming tutorial directory preparation.
Create a working directory:
c:\pic-c-course
Download
hex 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 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 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.
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
options menu.
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.
Load hex file
Now open the file (in ICPROG)
c:\pic-c-course\prog00-16F88-intro\prog00-16F88-intro.hex
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.
Congratulations...
...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 I/O pins.
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
ICPROG
setup:
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 button.
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.
Finding icprog.sys
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:
IC-Prog NT/2000
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 ICPROG
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 starts.
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.
 |
Don't
forget
to Sign Up for your
Microcontroller
Newsletter
With "Essential tips and techniques",
..."New Site Info" and more...
|
 |
|
|
|
|
|
 |
Including a
free project :
How to drive
an LCD and 12key keypad using "Only
One 8 Bit Port"
with no
interface logic!...
(Works for any microcontroller)
This costs you : Nothing... 
Just fill out the form below and you'll get full C source code and
project schematic and description.
|
|
|