Datasheet

PICkit™ 3 Debug Express
DS41370C-page 32 © 2009 Microchip Technology Inc.
In the PIC18F45K20, the RB0 pin is shared with analog input AN12. Such pins must
be configured as either digital or analog inputs. This is important because RB0 will be
used as a digital input pin to read the state of the switch in register PORTB. If RB0 is
configured as an analog input, it will always
read ‘0’ and not the actual state of the
switch. Pins are configured as analog or digital in the SFRs ANSEL and ANSELH.
FIGURE 3-23: ANSELH: ANALOG REGISTER 1
We clear ANSELH to set all pins to digital functionality: ANSELH = 0x00;
Now we can use RB0 as a digital input, so the TRISB bit is set to configure it as an
input: TRISBbits.TRISB0 = 1;
3.4.3.3 ROTATING THE LEDS
This program uses a simpler method of rotating the LEDs than Lesson 3, which used
the look-up table for demonstration purposes. 04 Switch Input.c uses a single set
bit in the LED_Display variable which is written to LATD and shifted each time the
display is updated. The bit will eventually be shifted out of the Most Significant bit of
LED_Display, so the code checks for this, and sets LED_Display to ‘1’ again.
For more information on I/O port pins, see Section 10 “I/O Ports” of the PIC18F45K20
Data Sheet (DS41303).
3.4.4 Build and Program the Lesson 4 Code
Build the Lesson 4 project and program the code into the demo board using the PICkit
3 Programmer.
Press the Demo Board Switch button to rotate the LEDs. The LEDs will advance once
for each button press.