Contents
[align=left:7bd6805823]Introduction xi
Chapter One:Getting Familiar with PICs and PicBasic . . . . . . . . . . . .1
PIC Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2
Software for PICs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
Assembly Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
PicBasic Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
Chapter Two:PicBasic Compiler (PBC) . . . . . . . . . . . . . . . . . . . . . . . .13
How PBC Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
Variables,Memory,and I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
Program Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
PBC Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
Using PBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
Chapter Three:The PicBasic Pro Compiler . . . . . . . . . . . . . . . . . . . .51
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
Numeric and ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
I/O Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
I/O Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Math Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
Binary Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
PBPro Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
Chapter Four:Inside the PIC Microcontroller . . . . . . . . . . . . . . . . .117
Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
Program Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Reset Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
Data Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
STATUS Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
I/O Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
A/D Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123
Peripheral Interrupt Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
OPTION Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127
INTCON Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132
Chapter Five:Simple PIC Projects . . . . . . . . . . . . . . . . . . . . . . . . . .133
Project #1—Flashing an LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Project #2—Scrolling LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
Project #3—Driving a 7-Segment LED Display . . . . . . . . . . . . . . . . . . . . .146
Six:Moving on with the 16F876 . . . . . . . . . . . . . . . . . . . . . .153
Project #4—Accessing Port A I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153
Project #5—Analog-to-Digital Conversion . . . . . . . . . . . . . . . . . . . . . . . .162
Project #6—Driving a Servomotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173
Chapter Seven:Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . .183
Project #7—Driving a LCD Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183
Project #8—Serial Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195
Project #9—Driving a LCD with a Single Serial Connection . . . . . . . . . . .204
Chapter Eight:Memory and Sound . . . . . . . . . . . . . . . . . . . . . . . . . .221
Project #10—Using External Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . .222
Project #11—Accessing Internal Memory . . . . . . . . . . . . . . . . . . . . . . . . .232
Project #12—Making Music . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241
Chapter Nine:Robotics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249
Project #13—Robot Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
Project #14—Line Tracker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
Project #15—Obstacle Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284
APPENDIXA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .305
APPENDIXB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .309
INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .315
[/align:7bd6805823]