Lesson #1: Overview of the PIC microcontroller from a
software perspective.
Lesson #2: Download and installation of the MPLAB Integrated
Development Environment.
Lesson #3: First MPLAB project to validate that the
installation is working correctly.
Lesson #4: Here are some experiments using a few basic
instructions in the PIC that manipulate
the working register (W) and the file register (F).
Lesson #5: In the previous lesson we saw some of the simpler
instructions in the PIC. Many of the
more interesting instructions affect a special
register called the status register. In this lesson
we explore those instructions. (Right-click
to download Lesson5a.asm)
Lesson #6: "Subroutines: -- Often we have logic we wish to
use several places in our programs. The subroutine
provides a way to do this effectively. In this
section, we will review subroutines, and look
at delay
timers, which
is one example of where we may use subroutines. Right-click to download
Lesson6b.asm
or
to download
Lesson6c.asm code.
Downloading these files will save you some time in typing
the examples used in this lesson.
Lesson #7: The PIC stores data as 8-bit bytes. Up until now,
we have only used values of 8 bits or
less.
What if we have a greater range of values? In this
section we examine addition and subtraction
of larger numbers.
Lesson #8:
Up until now all of our programs have lived within the simulator. In
this lesson we examine how the
PIC can sense its environment and how it can
influence the circuit where it lives.
Lesson #9:
In this lesson we cover assembler directives not covered elsewhere in
the course: number formats
(binary, octal, ascii, decimal, hex), radix, #define,
ifdef-else-endif, erorlevel, mssg, listing interpretation,
page, title, subtitle and list.
Lesson #10: Here's where we describe how to install software
called "FPP" onto your PC that communicates
with the PIC-EL board. FPP gives you the ability to
burn new software into the onboard PIC.
Lesson #11: In this lesson we use the FPP program to load
our code into a PIC.
Lesson #12: In this lesson we write a small program to
exercise our hardware, and learn how using macros can
simplify our code. Right-click to download Lesson12a.asm, Lesson12b.asm and Lesson12c.asm code.
Downloading these source files will save you some
time in typing the examples used in this lesson.
Lesson #13: Timer
register, TMR0 is the focus of this lesson. TMR0 can, among other
things, be used to manage
performing multiple tasks simultaneously.
Right-click to download Lesson13a.asm, Lesson13b.asm
and Lesson13c.asm code.
Downloading these source files will save you some time in typing the
examples used in this lesson.
Lesson #14:
Frequently, an application needs some sort of table. There are several
ways of implementing tables
depending on the application requirements. In this
chapter we examine some of the more common
approaches. Right-click to download Lesson14a.asm, Lesson14b.asm, Lesson14c.asm, Lesson14d.asm,
and Lesson14e.asm. Downloading
these source files will save you some time in typing the
examples used in this lesson.
Lesson #15:
Have you noticed how many of the microcontroller projects available
these days use a rotary encoder to
control functions, dial frequency, and more? In
this lesson we will examine the types of encoders available
and how to deal with them
programmatically. Right-click to download Lesson15a.asm, Lesson15b.asm,
Lesson15c.asm, and Lesson15d.asm. Downloading
these source files will save you some
time in typing the examples used in this lesson.
Lesson #16:
Trying to use code from previous projects can be very tedious with the
absolute code model discussed so
far. Relocatable code helps with these issues.
Right-click to download Lesson16code.zip. Once
downloaded
to a new folder on your computer, double-click on
the file to unzip it and extract all files to that same folder.
You'll then have access to all the source assembler
and library files for this lesson.
Lesson #17:
Most PIC projects seem to involve no more than some sort of input
conditioning and a
liquid crystal display.
In this lesson, we examine how to control an LCD
module. Right-click to download Lesson17code.zip.
Once downloaded to a new folder on your computer,
double-click on the file to unzip it and extract all files
to that same folder. You'll then have access to all
the source assembler and library files for this lesson.
Lesson #18: In the previous lesson we saw how to display
ASCII text to the liquid crystal display. Frequently we want to
display the result of a calculation or sensor.
However, rarely is this data already in the ASCII format needed
for the LCD. Some sort of conversion is frequently
needed. In this lesson we will discuss methods of preparing
data for display. Right-click to download Lesson18code.zip. Once
downloaded to a new folder on your computer,
double-click on the file to unzip it and extract all
files to that same folder. You'll then have access to all the
source assembler and library files for this lesson.
Lesson #19: When the designer makes a new circuit, there is
often some time spent in developing the software for that circuit.
Removing the PIC from the circuit and inserting it
into a programmer, then reversing the process for each change
soon
gets tedious. Programming the PIC while still in the target circuit
certainly speeds up debugging (and
reduces wear and tear on the PIC's pins.). However,
allowance for in-circuit programming needs to be made when
designing the target circuit. In this lesson, we
will examine the requirements for designing circuits including PICs,
and look at special considerations required if we
wish to program the PIC in-circuit. We will use our demonstration
circuit as an excuse to explore two peripherals
lacking in the 16F84A, the analog input and the pulse width
modulation output. Right-click to download Lesson19code.zip. Once
downloaded to a new folder on your
computer, double-click on the file to unzip it and
extract all files to that same folder. You'll then have access to
all the source assembler and library files for this
lesson.
Lesson
#20: In
many applications we want the PIC to “walk and chew gum” at the same
time. By periodically polling
inputs or polling timers, the PIC can appear to
carry out multiple tasks. However to be responsive to rapidly
occurring events, the polling must be done very
frequently. But more frequent polling means fewer compute
cycles available for the "background" task. Using
interrupts allows fast response to external events without
wasting compute time on polling. Right-click
to download Lesson20.zip. Once
downloaded to a new folder
on your computer, double-click on the file to unzip
it and extract all files to that same folder. You'll then have
access to all the source assembler and library files
for this lesson. [NOTE: This
lesson is a tad different in that
the zip file not only contains the necessary sources
and library, but also a library for those using newer versions
of MPLAB, and a library and makefile for those using
gputils.]
Appendix "A": "Other
PICs" -- This one is
an appendix that students can read at any time.
In
it we examine the wide array of PIC microcontrollers and try to give the
hobbyist some
help in selecting a microcontroller for future
projects.
Appendix "B": How to design a circuit to support In-circuit
Serial Programming (ICSP™).
Appendix
"C": In
Lesson 16, we discussed relocatable code, and how to use a library. In
this appendix, we review the mechanics of constructing a library.
Appendix
"D": In Lesson 16, we mentioned that there were times when we
might want to edit the linker script file. In this appendix we examine
the linker script and discuss how we might want to change it.
Library
File for Latest MPLAB 7.21: Although
we started the PIC Elmer series on MPLAB 6.30, and all lessons have been
tested with 6.30, some students have downloaded more recent versions of
MPLAB, either due to starting late, getting new PCs, or needing support
for some new part. This has not been a problem until recently, as a new
version of the linker around MPLAB 7.21 introduced a new library format.
The symptom shows up as an error of the form: "Error - Coff file
format for xxxx.o is out of date"
Please download the new
library file to resolve
that issue. This is only for users of MPLAB >7.21, and for any lessons
that require the LCD (17 and 19). Users of earlier versions of MPLAB
should continue to to use the LCDlib distributed with the lesson.
Future lessons will include both.
|