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.
|