User manual

Table Of Contents
General Purpose Input/Output Labs
© 2009 Microchip Technology Inc. DS41369A-page 55
The PB_PressISR() now checks to see if the voltage level on RA2 has changed
state from a 1-to-0 or from 0-to-1. Each condition will change the direction that the
LEDs flash sequentially. Note that the direction bit toggle used in previous labs has
been replaced by assigning either a ‘1’ for the left-to-right direction or ‘0’ for the
right-to-left direction. As discussed earlier, the PORTA register must be read before the
first interrupt can occur and at the end of each subsequent ISR execution to ensure that
the microcontroller has an up-to-date reference to measure the current state of the RA2
pin.
The Initialize() for this lab configures the peripherals and interrupts as follows:
•PORTC
-Clears PORTC
- Configures all pins as digital output
•PORTA
-Clears PORTA
- Configures RA2 as a digital input
•Timer0
- Uses the F
OSC/4 as clock source
- Increment TMR0 on rising F
OSC/4 clock edge
- Use Prescaler at 1:32
Global Variables
- Initialize direction to ‘0
- Initialize LED_Output to ‘0
Interrupt
- Enable RA2 Interrupt-on-Change
- Enable change interrupts in INTCON by setting the RABIE bit
- Clear the RABIF change interrupt flag in INTCON
- Enable Global Interrupts by setting GIE
- Read PORTA to latch current value on RA2 for reference
3.4.6.3 PROCEDURE
Using the firmware developed in the previous lab, make the following changes:
1. Copy/paste the code in Example 3-26 into the PB_PressISR() over the code
from the previous lab.