User manual
Table Of Contents
- Chapter 1. Overview
- 1.1 Introduction
- 1.2 Highlights
- 1.3 PICDEM™ Lab Development Kit Contents
- 1.4 PICDEM™ Lab Development Board Construction and Layout
- 1.5 Target Power
- 1.6 Connecting the PICkit™ 2 Programmer/Debugger
- 1.7 Solderless Prototyping Area Strip Configuration
- Chapter 2. Getting Started
- 2.1 Introduction
- 2.2 Prerequisites
- 2.3 The Software Control Loop
- 2.4 MPLAB® IDE Download Instructions
- 2.5 Installing the Included Lab Files
- Chapter 3. General Purpose Input/Output Labs
- 3.1 Introduction
- 3.2 General Purpose Input/Output Labs
- 3.3 GPIO Output Labs
- 3.3.1 Reference Documentation
- 3.3.2 Equipment Required for GPIO Output Labs
- 3.3.3 PICDEM Lab Development Board Setup for GPIO Output Labs
- Figure 3-1: PICDEM Lab Schematic for GPIO Output Labs
- 3.3.4 Lab 1: Light LEDs
- Figure 3-2: MAIN() Software Control Loop Flowchart for Lab 1
- Figure 3-3: Step One
- Figure 3-4: Step Two
- Figure 3-5: Step Three
- Figure 3-6: Step Four
- Figure 3-7: Summary
- Figure 3-8: Project Window
- Figure 3-9: PICkit 2 PROGRAMMER/DEBUGGER TOOLBAR
- Figure 3-10: Lab 1 LED Output
- 3.3.5 Lab 2: Flash LEDs (Delay Loop)
- Figure 3-11: Main() Software Control Loop Flowchart for Lab 2
- Figure 3-12: Timing() Delay Routine Flowchart for Lab 2
- 3.3.6 Lab 3: Simple Delays Using Timer0
- Equation 3-1: TMR0 Overflow Period using FOSC/4
- Equation 3-2: TMR0 Overflow Period when including the Prescaler
- Equation 3-3: Calculating a TMR0 PreLoad Value to generate a 10mS Overflow Period
- Figure 3-13: Delay_10mS() using Timer0
- Equation 3-4: Maximum TMR0 Overflow Period
- Figure 3-14: Delay_1S() using Timer0
- 3.3.7 Lab 4: Rotate LEDs
- Figure 3-15: Main() Software Control Loop Flowchart for Lab 4
- Figure 3-16: Decide() Flowchart for Lab 4
- Figure 3-17: Results of Do_Output()
- 3.4 GPIO Input Labs
- 3.4.1 Reference Documentation
- 3.4.2 Equipment Required for GPIO Input Labs
- 3.4.3 PICDEM Lab Development Board Setup for GPIO Input Labs
- Figure 3-18: PICDEM Lab Schematic for GPIO Input Labs
- 3.4.4 Lab 5: Adding a Push Button
- Figure 3-19: Main() Software Control Loop Flowchart for Lab 5
- Figure 3-20: Get_Inputs() Software Flowchart for Lab 5
- Figure 3-21: Delay_5mS() Software Flowchart for Lab 5
- Figure 3-22: Decide() Software FlowChart for Lab 5
- 3.4.5 Lab 6: Push Button Interrupt
- Figure 3-23: Main() Software Control Loop Flowchart for GPIO Lab 6
- Figure 3-24: pb_pressISR() for Lab 6 Showing Switch Debounce
- 3.4.6 Lab 7: Push Button Interrupt-on-Change
- Figure 3-25: pb_pressisr Flowchart for Lab 7
- 3.4.7 Lab 8: Using Weak Pull-Ups
- Chapter 4. Comparator Peripheral Labs
- 4.1 Introduction
- 4.2 Comparator Labs
- 4.2.1 Reference Documentation
- 4.2.2 Comparator Labs
- 4.2.3 Equipment Required
- 4.2.4 Lab 1: Simple Compare
- Figure 4-1: Schematic for Comparator Lab 1
- Figure 4-2: Main() software Control Loop Flowchart for Comparator Lab 1
- 4.2.5 Lab 2: Using the Comparator Voltage Reference
- Equation 4-1: CVref Output Voltage
- Equation 4-2: Calculating a 2.5V Internal Reference (Low-Range Method)
- Figure 4-3: Schematic for Comparator Lab 2
- 4.2.6 Lab 3: Higher Resolution Sensor Readings Using a Single Comparator
- Figure 4-4: Basic Relaxation Oscillator Circuit
- Figure 4-5: Schematic for Comparator Lab 3
- Figure 4-6: Main() software Control Loop Flowchart for Comparator Lab 3
- Figure 4-7: TMR0_ISR Flowchart for Comparator Lab 3
- Chapter 5. Analog-to-Digital Converter Peripheral Labs
- 5.1 Introduction
- 5.2 ADC Labs
- Figure 5-1: Schematic for ADC Lab 1
- Figure 5-2: Main() software Control Loop Flowchart for Comparator Lab 1
- Figure 5-3: Main() software Control Loop Flowchart for Comparator Lab 1
- Figure 5-4: ADC Result Bit Significance
- Figure 5-5: Schematic for ADC Lab 2
- Figure 5-6: Main() software Control Loop Flowchart for ADC Lab 2
- Appendix A. Schematic
- Worldwide Sales

General Purpose Input/Output Labs
© 2009 Microchip Technology Inc. DS41369A-page 27
The Do_Outputs() changes somewhat from the previous lab by implementing the
XOR operator to toggle the value in each PORTC bit location each time through the
software loop. The XOR operator is implemented in code as follows:
RCx ^= 1;
This translates to: “Make RCx equal to the current value in RCx XOR’d with 1”
When a value is XOR’d with itself, the result is ‘0’ (i.e., 1 XOR’d with 1 = 0, 0 XOR’d
with 0 = 0). When a value is XOR’d with a value different than itself, the result is ‘1’ (i.e.,
1 XOR’d with 0 = 1). Therefore, each time through the loop PORTC bits will toggle from
1-to-0 or 0-to-1 depending on its current value.
3.3.5.2 PROCEDURE
Using the code developed in the previous lab, make the following changes:
1. Copy/paste the code in Example 3-4 over the Initialize() code from the
previous lab.
EXAMPLE 3-4: INITIALIZE() CODE FOR LAB 2
The only change from the previous lab is that the PORTC bits are all set high to 1.
2. Copy/paste the code in Example 3-5 over the Do_Outputs() code from the
previous lab to accommodate the XOR bit toggle.
Note: The reader may wish to create a new project as per the previous lab called
GPIO_Lab2.mcp
//Set all PORTC bits HIGH (to a known state)
PORTC = 0b11111111;
//Configure PORTC's ANALOG/DIGITAL pins as all Digital
ANS4 = 0;//Associated with RC0
ANS5 = 0;//Associated with RC1
ANS6 = 0;//Associated with RC2
ANS7 = 0;//Associated with RC3
ANS8 = 0;//Associated with RC6
ANS9 = 0;//Associated with RC7
//Configure PORTC pins as all output
//i.e. 1 = Input, 0 = Output
TRISC0 = 0;//Make RC0 (pin 16) output
TRISC1 = 0;//Make RC1 (pin 15) output
TRISC2 = 0;//Make RC2 (pin 14) output
TRISC3 = 0;//Make RC3 (pin 7) output
TRISC4 = 0;//Make RC4 (pin 6) output
TRISC5 = 0;//Make RC5 (pin 5) output
TRISC6 = 0;//Make RC6 (pin 8) output
TRISC7 = 0;//Make RC7 (pin 9) output