PICDEM™ 17 Demonstration Board User’s Guide
DS39024B-page 44
2001 Microchip Technology Inc.
{
// The data bits must be either a 8-bit port or the upper or
// lower 4-bits of a port. These pins are made into inputs
#ifdef BIT8
// 8-bit mode, use
whole port
DATA_PORT = 0;
TRIS_DATA_PORT = 0xff;
#else
// 4-bit mode
#ifdef UPPER
// Upper 4-bits of
the port
DATA_PORT &= 0x0f;
TRIS_DATA_PORT |= 0xf0;
#else
// Lower 4-bits of
the port
DATA_PORT &= 0xf0;
TRIS_DATA_PORT |= 0x0f;
#endif
#endif
TRIS_RW = 0;
// All control sig-
nals made outputs
TRIS_RS = 0;
TRIS_E = 0;
RW_PIN = 0;
// R/W pin made low
RS_PIN = 0;
// Register select
pin made low
E_PIN = 0;
// Clock pin made low
// Delay for 15ms to allow for LCD Power on reset
DelayPORXLCD();
// Setup interface to LCD
#ifdef BIT8
// 8-bit mode inter-
face
TRIS_DATA_PORT = 0;
// Data port output
DATA_PORT = 0b00110000;
// Function set
cmd(8-bit interface)
#else
// 4-bit mode inter-
face
#ifdef UPPER
// Upper nibble
interface
TRIS_DATA_PORT &= 0x0f;
DATA_PORT &= 0x0f;
DATA_PORT |= 0b00110000;
// Function set
cmd(4-bit interface)
#else
// Lower nibble
interface
TRIS_DATA_PORT &= 0xf0;
DATA_PORT &= 0xf0;
DATA_PORT |= 0b00000011;
// Function set
cmd(4-bit interface)
#endif
#endif
E_PIN = 1;
// Clock the cmd in
DelayFor18TCY();
E_PIN = 0;
// Delay for at least 4.1ms
DelayXLCD();