Arizona 17 Network Card User Manual


 
PICDEM 17 Demonstration Board Users Guide
DS39024B-page 52 2001 Microchip Technology Inc.
* must check to see if the LCD controller is
* busy before calling this routine. The address
* is read from the character generator RAM or
* the display data RAM depending on what the
* previous SetxxRamAddr routine was called.
*******************************************************************
**/
unsigned char ReadAddrXLCD(void)
{
char data; // Holds the data retrieved
from the LCD
#ifdef BIT8 // 8-bit interface
RW_PIN = 1; // Set control bits for the
read
RS_PIN = 0;
DelayFor18TCY();
E_PIN = 1; // Clock data out of the LCD
controller
DelayFor18TCY();
data = DATA_PORT; // Save the data in the reg-
ister
E_PIN = 0;
RW_PIN = 0; // Reset the control bits
#else // 4-bit interface
RW_PIN = 1; // Set control bits for the
read
RS_PIN = 0;
DelayFor18TCY();
E_PIN = 1; // Clock data out of the LCD
controller
DelayFor18TCY();
#ifdef UPPER // Upper nibble interface
data = DATA_PORT&0xf0;// Read the nibble into the upper nibble
of data
#else // Lower nibble interface
data = (DATA_PORT<<4)&0xf0;// Read nibble to upper nibble of
data
#endif
E_PIN = 0; // Reset the clock
DelayFor18TCY();
E_PIN = 1; // Clock out the lower nib-
ble
DelayFor18TCY();
#ifdef UPPER // Upper nibble interface
data |= (DATA_PORT>>4)&0x0f;// Read nibble to lower nibble of
data
#else // Lower nibble interface
data |= DATA_PORT&0x0f; // Read nibble to lower nib-
ble of data
#endif
E_PIN = 0;
RW_PIN = 0; // Reset the control lines
#endif
return (data&0x7f); // Return the address, Mask
off the busy bit
}