| PIC Programming Course Introduction
 Page 1
 
 
   
  
        
This PIC Programming Course has been designed to get the BEGINNER into programming the 
PIC12C508A and PIC16F84 microcontrollers.The '508A is the
            "baby" in the range with 6 lines that can be configured as input or
  output (GP3 can  only  be an input line) and the 'F84 is the "one-and-a-half-port"
            version with 13 lines.
 Both of these are very small devices in the
            "micro" world but they are the place to start.
 Before starting this course we have prepared a discussion by Jim Brown
        BSc(Eng), HDipEdAd, GDE (Wits) on the PIC16F84 microcontroller. Just
read the first 25% and come back to our course. You can gradually read the
remainder later.
        Click HERE
for the discussion.
 
      
            The pin-out for the two chips we are covering in this courseare as follows:
 
 
  
 
      POWERING A
 PROJECT   
All projects need to be powered from a power-source. This can be a battery,
power-supply or even a set of solar-cells. Click HERE for
an article on Powering A Project.
 
 THE PIC'S
 We have chosen these two out of the range of PIC devices as
they are the cheapest and the best (for the beginner). You will see what we mean, AND AGREE, after you read the course.
 Maybe you are wondering why we have produced so much information on
programming these chips, as there is already an enormous amount available in
books and on web sites.
 The reason is the information is generally of a highly technical nature and
not designed to get the REAL BEGINNER into programming.  
What is needed is an absolute beginners course. One that introduces the least
amount of complication to get a program up-and-running.
 And that's what we have done. You don't have to know Boolean Algebra, complex
mathematics or the effect of double XOR'ing a file, to be able to program. 
We do everything in a simple
way. The course also shows you how to interface the chips to external devices and
by taking ideas from one project and applying them to another you can create a
totally new circuit with the least amount of technical skill.
 There's an amazing
thing about programming. A program can  be constructed using highly
complex thinking or very simple thinking. The end result is the same but the
simple approach may take a few more instructions to achieve the end result. Who cares
about a few more instructions when the micro is processing at 1,000,000
instructions per second!
 We start off with a simple five-line program to turn on a LED with a
PIC12C508A microcontroller.
 
 
 
               
          | 
      
        | SetUp | MOVLW 3E   ;Make GP0 output TRIS 06         ;Load TRISB file
 |  
        | Out0 | MOVLW 01   ;Load W with 1 MOVWF 06   ;Make GP0 HIGH
 GOTO Out0
 |  |  
               | This is the simplest program for the '508A. It turns on a LED as
                  shown in the animation below: |  
      
 Click on the animation below and you will see it turn on the LED connected to
 GP0 (General Purpose IN-OUT line ZERO - Pin 7):
            
           
            
    
        This is what the program is doing:In the first two lines the input/output port is set-up so that the first line
(GP0) is an output.
 GP0 is turned ON and this will illuminate the LED connected to the
line. The program goes to the fifth line and is sent back to the third line.
Instructions 3, 4 and  form a loop and the micro constantly executes these
until the power is removed.
 The diagram above is very simple. The power switch is turned ON and the LED
illuminates.
 You don't need a microcontroller to turn on the LED but this is the simplest
circuit to explain how the microcontroller operates.
 The important point to note is the operation of the micro. It does not execute the 5
instructions in the program above, then
stop. It keeps going as the oscillator inside the chip keeps
operating all the time. The instruction-set for the PIC12C508A does not have a STOP or HALT
instruction, so you must write the program so that the micro loops around a
number of instructions. These instructions are sometimes called
"do-nothing" instructions.
 In the example above, the micro loops around instructions 3, 4 and 5, by
executing 3, 4, 5, 3, 4, 5, 3, 4, 5, etc.  The flowchart for the micro is
shown below:
 
            
      
            
    USING A PIC16F84
      
 The same program can be written for the PIC16F84 microcontroller. Although
    the two chips do not have exactly the same set of instructions, about 90% of
    the instruction-set is the same and in this course we are going to concentrate on the
    instructions that are common to both chips.
 The instruction to access lines GP0 to GP5, for the PIC12C508A are the same
    as accessing RB0 to RB5 for the PIC16F84 chip.
 This means many of the programs and projects we will be presenting can be
    "burnt" into either chip.
 "Burning" is an old name for "programming" and we use it
 to
    differentiate between the operation of  writing a program - commonly called
    Programming, from the operation of  downloading a program into a chip - also
    called Programming.
 As soon as a project requires more than 5 or 6 lines (input/output lines)
    the PIC16F84 micro will be used.
 But this is getting too advanced too quickly, getting back to the simplest
 program, it can be "burnt" or "downloaded " into a PIC16F84
 and the circuit below will turn on a LED.
 The instruction:               
      MOVWF 06 will turn ON (make HIGH) GP0 for a PIC12C508A
 or Line RB0 for a PIC16F84.
 The PIC12C508A has an internal oscillator and no external components are
 required.
 The PIC16F84 has some internal oscillator components and you must add the
 timing components (the resistor and capacitor). These two components are shown
 in the diagram below:
 
           
           
           
            
        
            
     
            
  FLASHING A LED
      
 Suppose you want to make the LED flash with an on-time of 0.1seconds and off-time=0.9seconds.  This requires a 4-step program
 shown in the Flowchart below:
  
 From
          the flow-chart you can see you need to do 4 things: All the information you need to write a program on a template is contained on page
24 of this course.  The page contains a .zip
called: Blank_F84.zip and the file in
the zip is called Blank_F84.asm 
 Load and save it as detailed on the page. With it you will be able to write programs on a text editor
and run them in a PIC16F84.1.  Turn ON an output
 2. Keep the output ON for a period of time - called the Delay
time
 3.  Turn OFF the output
 4. Keep the output turned OFF for a period of time - called the
Delay time
 
 The thing you must remember is the processor (the heart of the
          microcontroller chip) must be kept running all the time. The
PIC12C508A chip contains a 4MHz oscillator and this frequency is
            internally divided by 4 so that one instruction is processed every microsecond. 
            This makes it very easy to produce accurate delay
            routines.
 The PIC16F84 chip requires external components to complete the oscillator
circuit. By using a 4k7 and 22p capacitor the oscillator circuit will operate a
4MHz.
 In our example we can create a delay by knowing that each instruction takes 1 microsecond to execute
or 2 microseconds if a branch is
involved.
 This means we need to produce a sub-routine of
          100,000 "DO-NOTHING" cycles to create a delay of 0.1
seconds.
 To produce a delay of 0.9 seconds, the delay above is called 9 times.
 To create the routine needed to flash the LED, you can start from scratch
            by reading the notes we have provided in our chapters or go to the Library
            of Routines
 chapter.
 
 
 
 These are the lines of code you will need:
 
 
              
              
                
                
                  | FlashLED1 
 
 
 Loop1
 
 
 
 
 AA1
 
 
 
 
 
 Delay1
 
 DelX
 
   | BSF 03h,5 MOVLW 00
 MOVWF 06
 BCF 03h,5
 BSF 06,0
 CALL Delay1
 BCF 06,0
 MOVLW 09
 MOVWF 0C
 CALL Delay1
 DECFSZ 0C
 GOTO AA1
 GOTO 
              Loop1
 
 
 MOVLW 82h
 MOVWF 1A
 DECFSZ 1B
 GOTO DelX
 DECFSZ 1A
 GOTO DelX
 RETLW 00
 | ;Select
                    Page1 ;to make GP0 output
 
 ;Select Page0
 ;SET bit0 HIGH
 
 ;Make bit0 LOW
 ;Put 9 in W
 ;0C is the loop file
 
 
 
 
 
 
 ;130
      
      
 loops
 
 ;256 decrements
 ;2uS
              instruction
 |  
                  | This
                    program turns ON a LED for 0.1sec (Delay1 routine) then OFF for 0.9s 
                    by calling Delay1  nine
                  times.  |  The
            following animation shows the result of burning the code into a
            '508A:  
 The
program can be downloaded into a PIC16F84 and the circuit below will flash a
LED: 
 But
            just before you rush out and do anything, you must understand that a
            PIC12c508A chip can only be burnt ONCE because the cells holding the
            program receive a charge during programming and this charge cannot
            be removed. The chip is guaranteed to hold a program for many years
but you only use this chip when you are completely satisfied with a
            program and the project is ready for completion. 
 TWO CHIPS
 This course concentrates on two chips. The  PIC12C508A and PIC16F84. At the
moment you don't know how powerful these chips are and the type of projects
they can drive. This knowledge will come "down the track" so we will
explain our policy:
 We firstly try to use a PIC12C508A for a project. If the project requires less than 5 input and/or output lines, the
PIC12C508A will be suitable. If not, you will have to use the PIC16F84.
 Programming a PIC16F84 is easy because it is programmed in
the Multi Chip Programmer and placed in the project being developed.
 If the project needs a PIC12C508A, you will need an adaptor. The adaptor holds a PIC16F84 and has 
oscillator components soldered to the pins. An 8-pin IC socket is soldered to
the 18-pin socket and fits onto the project being developed. The PIC16F84 chip
is taken out of the adaptor and "burnt" in the multi Chip Programmer.
It is then placed into the adaptor and it functions exactly like a PIC12C508A
chip.
 When the program works perfectly, you can burn a real PIC12C508A chip and fit it
to the project.
 The diagram below shows how the adaptor holds the PIC16F84 chip and plugs into
    an 8-pin socket on the project you are developing.
 
 This
is the cheapest way to design a project with the PIC12C508A chip. Any other way
is very expensive. The  PIC12C508A can
    only be programmed ONCE and the development of a project may take 50 or
    more "adjustments" until it is operating correctly. You can use 50
PIC12C508A chips or buy the EPROM version. These are
    very expensive and you will need at least 5 - 10 because they need
    to be erased for 20 minutes before a new program can be written into them and this slows down the
time for development. You will
    also need an erasing lamp.
 Our 8-pin to 18-pin adaptor costs very little and makes developing a program
very simple.
 You can program the PIC16F84 with instructions that suit the PIC12C508A and
    the program can be "burnt" into a PIC12C508A.
 For the example we have used our  Logic Probe project. This project takes an 8-pin
PIC12C508A chip and by using the  8-pin to 18-pin adaptor and a PIC16F84,
a program can be developed at almost NO COST.
 One clever trick is to fit a PIC chip to an IC socket and keep the two together
when transferring from the programmer to a project. The chip is much easier to
get out of the socket (in the project) with your fingers. See photo below:
  The PIC chip is fitted into an IC socket
 for easy removal during programming.
 The diagram below shows the PICF84 being burnt on the Multi Chip
    Programmer, fitted to the   8-pin to 18-pin adaptor and
    plugged into the Logic Probe  project.
 Fitting the PIC chip (and
IC socket) into the adaptor 
 and into a project under development.
 
Why do we use the  PIC12C508A?
 The '508A is much cheaper than the '84 and if your project is very simple,
    it is ideal.  Very small, cheap projects can be created with the
    PIC12C508A and this opens up a whole new field of projects.
 The PIC16F84 can be programmed and erased over 1,000 times and is ideal for
    development work.
 There are lots of projects designed around a PIC12C508A but the
    development costs are considerable if you don't use our approach.
 As you will read in the chapters, this course is entirely PRACTICAL and it
gets you into programming at the least expense.
 Because of this we have not used any of the "STAMP" concepts as
they are very expensive and reduce the capability of the chip enormously.
 Our aim is to get you into programming so you can produce microcontroller
projects and sell programmed chips for as little as $5.00 each (in large quantities). This is something that has never been aimed-at before.
 That's why this course stands out from everything else.
 As soon as you get into PIC programming, you should search the web for PIC user
groups as they have a wealth of valuable information on their sites to help you
understand PIC programming.
 The chips we have chosen will allow you to get into creating projects equivalent to 6 or 8 chips
(or even more in
the old technology of gates and counters etc) and produce things such as electronic locks using
card
access, security tags that transmit up to a metre or so, displays, games, telephone devices, alarms,
interfacing devices, oscillators, robotics and lots more. As one programmer
said: "You will never use a 555 again!" Any of the ideas and projects
that have already been produced on and for a "STAMP-type"
module can now be created in a single chip and produced at less than 1/4 of the
cost.
 Surprisingly, our course will
have enormous appeal to those already programming with one of these expensive
modules. Quite often an idea will come up that is suitable for marketing. That's
when the project will have to be converted to a much cheaper design to make it
marketable. And that's where we step in. For the cost of a chip and a $5.00
prototyping PC board, you will be able to
launch your own product. But obviously you will have to start at the beginning
and familiarize yourself with the code and capabilities of the chip.
 In the next section of this e-magazine we have designed a number of projects
that use both chips. Some of the projects are simple while others are quite
complex. However I can assure you they are less than half the complexity of a
discrete design.
 All the programming is
"linear" (very simple) and by going through each line you
will be able to see exactly what is being done at each step.
 The biggest problem with the STAMP concept is the cost of duplication. The
first prototype may cost $40 to $70 but additional copies will cost more
than $20. With our approach a fully programmed chip can be sold by
you for $5.00 to $8.00 (they cost as lost as $2 in large
            quantities), and an assembled PC board for less than $12.00. This
gives you a head-start in the world of marketing and makes you competitive in
manufacturing and selling your ideas.
 Many will say the "STAMP concept" gets a program up and running
with very few instructions but we have combated this by designing a set of
routines to perform many of the operations you will require in the development
of a program and placed them in a LIBRARY OF ROUTINES.
 This chapter is included on this site. In this way you can get a program up
and running with very little effort. The advantage of our approach is the micro
runs at full speed, the program memory space can be fully utilized, no
additional chips are required to store the program and  all the input-output lines of the chip
are available. There is really no comparison between the two concepts and the differences will not be
mentioned again.
 The biggest advantage of doing things our way is you
are fully in-charge of the program. If something doesn't work, you don't have to
wonder if the routine provided by the "STAMP or CLONE" is not doing the operation, or if your code has a bug. By
            directly using the micro's instructions (from the
set of approx 33 instructions) you can see exactly what is happening and why it's not
working.
 This PIC course will be available in printed format very soon so you can have
all the content at your fingertips. The book will cost $25.00 plus postage and
its exact release date will be announced soon.
 The book will be very popular as it is already 400 pages in size and this
represents a
lot of information to search on the web.
 
  
To Top 
 
 
   
 |