"PIC'n Techniques"
PIC MICROCONTROLLER APPLICATIONS GUIDE

Table of Contents

INTRODUCTION

8-PIN MICROCONTROLLERS - PIC12C508

PIC12C508 pins and functions
Packages
Clock oscillator
Configuration bits
Reset
Port
GPIO register
TRIS register
Architecture
Program memory
File registers
Stack
Reset vector
OSCCAL calibration constant
   Internal clock applications
   External clock applications
OSCCAL considerations and rules restated
Program counter
Option register
Status register
Timing and counting
PIC12C508 programming example - internal clock
PIC12C508 programming example - external clock
TEST EQUIPMENT FOR TIMING AND COUNTING EXPERIMENTS
Test equipment for detecting a short single pulse and measuring it's width
Pulse generator - 32 microseconds
Pulse generator - 128 microseconds
Pulse generator - 2000 microseconds
Pulse generator - 65280 microseconds
Test equipment for generating a frequency output
USING TIMER 1, TIMER 2 AND THE CAPTURE/COMPARE/PWM (CCP) MODULE
PIC16C63 test circuit
Before we take off
TMR2: 8-bit timer
TMR2 description
How to choose/select mode of operation
Interrupts
TMR2 applications
   Free running mode (via TMR2 interrupt)
   Free running mode (via period register)
TMR1: 16-bit timer/counter and capture/compare module
TMR1/CCP module simplified
TMR1 description
CCP module - capture mode
CCP module - compare mode
CCP module - PWM mode
How to choose/select mode of operation
T1CON register
CCP1CON register
Interrupts
Reading and writing TMR1
Long time intervals
Controlling the CCP1 pin in compare mode
More than one way to do timing stuff
Timing and counting experiments
Free running output (via TMR1 interrupt)
Event counting (via TMR1)
Count events, read TMR1 contents
Capture TMR1 count when external event occurs
Count events up to predetermined number and generate an output (compare)
Single time interval output (via TMR1 and CCP, compare mode)
Start TMR1, auto end
      500 milliseconds
      128 microseconds
Free running output (via TMR1 and CCP, compare mode)
      Clear TMR1 each cycle
      Free running TMR1, add interval value to compare register each cycle
Time measurement (period/interval/time between events)
      (via TMR1 read)(interval input via port pin)
      (via TMR1 and CCP, capture mode)(interval input via CCP1 pin,
      two captures,subtract)
Frequency measurement (via TMR1, gate via TMR0)
External 32,768 Hz watch crystal-based clock for TMR1
Pulse width modulation (PWM) using TMR2 and the CCP module
Analog output - increase/decrease buttons - PWM - 8-bit mode
Duty cycle - 10-bit mode
Analog output - increase/decrease buttons - PWM - 10-bit mode
DESIGNING AND BUILDING YOUR OWN TEST EQUIPMENT
Keypad/LCD user interface
5-digit decimal to 16-bit binary entry program
Using the 5-digit decimal to 16-bit binary entry program
Digital pulse generator
Digital frequency generator
Time interval measurement instrument
Frequency measurement instrument
Creating your own combination signal generator and measurement instrument
TALKING TO A PIC16 WITH A PC VIA A TERMINAL PROGRAM
"U-turn" experiment
PC-to-PC "2-lane highway" experiment
Importing a text file into a spreadsheet program
Windows 3.x
Windows 95
PC/PIC
PC baud rates
Modify ser_in subroutine
Modify ser_out subroutine
PIC to PIC at 4800 baud, LSB first
RS-232 interface for PIC16
RS-232 converter circuit using MAX233
PC to PIC serial communication
Display one ASCII character via 8 LEDs
PIC to PC serial communication
Send one ASCII character
Code for formatting PIC16 data on a PC screen
Sending a text file
PC to PIC/LCD
Control characters
Sending a text file (control characters and data)
SIMPLE DIGITAL VOLTMETER EXPERIMENT

SIMPLE DATA LOGGER EXPERIMENT

Main program
Data logging
Display data sequentially via LCD
Uploading data to a PC
Code
Operating procedure
Spreadsheet and graphing data - Windows 3.x
Spreadsheet and graphing data - Windows 95
APPENDIX A - Program listings vs. page number

APPENDIX B - PIC16C63 control registers

APPENDIX C - '84 on a board

APPENDIX D - PIC/LCD schematic and code

APPENDIX E - Keypad

APPENDIX F - Sources

[an error occurred while processing this directive]