265x Filetype PDF File size 0.16 MB Source: www.inf.pucrs.br
PICAssemblyLanguageforthe
CompleteBeginner
MichaelA.Covington
Artificial Intelligence Center
TheUniversityofGeorgia
Athens,Georgia 30602-7415
http://www.ai.uga.edu/mc
This article appeared in Electronics Now Magazine in 1999 and is
reprinted here by permission. Some web addresses have been up-
dated but the content has not; you will find that MPLAB, for instance,
nowlooks somewhatdifferent.
You may print out this article for personal use but not for further pub-
lication.
c
Copyright
1999 Gernsback Publications, Inc.
c
Copyright
1999, 2004 Michael A. Covington.
These days, the field of electronics is divided into “haves” and “have-
nots” – people who can program microcontrollers and people who can’t.
If you’re one of the “have-nots,” this article is for you.
1
Microcontrollers areone-chipcomputersdesignedtocontrolotherequip-
ment, and almost all electronic equipment now uses them. The average
American home now contains about 100 computers, almost all of which
are microcontrollers hidden within appliances, clocks, thermostats, and
evenautomobile engines.
Although some microcontrollers can be programmed in C or BASIC,
youneedassemblylanguagetogetthebestresultswiththeleastexpensive
micros. The reason is that assembly language lets you specify the exact
instructions that the CPU will follow; you can control exactly how much
timeandmemoryeachstepoftheprogramwilltake. Onatinycomputer,
this can be important. What’s more, if you’re not already an experienced
programmer, you may well find that assembly language is simpler than
BASICorC.Inmanywaysit’smorelike designing a circuit than writing
software.
The trouble with assembly language is that it’s different for each kind
of CPU.There’soneassemblylanguageforPentiums,anotherforPICmi-
crocontrollers, still another for Motorola 68000s, and so forth. There are
even slight differences from one model of PIC to another. And that leads
to a serious problem – each assembly-language manual seems to assume
that you already know the assembly language for some other processor!
So as you look from one manual to another in puzzlement, there’s no way
to get started.
That’s the problem this article will address. I won’t teach you all of
PICassembly language, just enough to get you started. For concreteness,
I’ll use just one processor, the PIC16F84. To be very precise, I’ll use the
2
PIC16F84-04P, which operates up to 4 MHz and is housed in a plastic DIP
package.1 ThisisaproductofMicrochip,Inc. (Chandler,Arizona),andit’s
closely related to the rest of the PIC family – which, however, I’ll ignore to
prevent confusion.
Todotheexperimentsdescribedinthisarticle,you’llneedoneormore
PIC16F84-04P chips; we strongly recommend having more than one so
you can rule out a damaged PIC if your circuit doesn’t work. You’ll also
needtheotherpartsforthecircuitsyouwanttobuild(seetheschematics).
Andyou’ll needaPC-compatiblepersonalcomputer, the MPASMassem-
bler software (which you can download from http://www.microchip.com),
and a PIC programmer such as Ramsey Electronics’ “PICPRO-1” or the
NOPPP programmer published in this magazine, September 1998, and
described at http://www.covingtoninnovations.com/noppp. The PIC16F8X
datasheet,actually a122-pagemanual,willalsocomeinhandy;it’scalled
PIC16F8X because it covers both PIC16F84 and PIC14F83, and you can
downloaditorrequestaprintedcopyfromMicrochip.
1 PART1-MEETTHEPIC
1.1 What’sinsideaPIC?
Figure 1 shows the pinout of the PIC16F84, and Figure 2 shows the most
important parts inside. The PIC is a tiny but complete computer. It has a
CPU(central processing unit), program memory (PROM), working mem-
1Noteadded2004: The10-MHzversionisnowmorecommonandwillworkinallthe
samecircuits.
3
PIC16F84
1
A2
A1
18
2
A3
A0
17
3
A4
O1
16
4
MCLR
O2
15
5
GND
V+
14
6
B0
B7
13
7
B1
B6
12
8
B2
B5
11
9
B3
B4
10
Figure 1: Pinout of PIC16F84.
ory (RAM),andtwoinput-outputports.
The CPU is, of course, the “brain” of the computer. It reads and exe-
cutesinstructionsfromtheprogrammemory. Asitdoesso,itcanstoreand
retrieve data in working memory (RAM). Some CPUs make a distinction
between “registers” located within the CPU and “RAM” located outside
it; the PIC doesn’t, and its general-purpose working RAM is also known
as“fileregisters.” Onthe’F84,thereare68bytesofgeneral-purposeRAM,
located at addresses hex 0C to hex 4F.
Besidesthegeneral-purposememory,thereisaspecial“workingregis-
ter” or “W register” where the CPU holds the data it’s working on. There
are also several special-function registers each of which controls the oper-
4
no reviews yet
Please Login to review.