HTEB1

User manual

LCD_DATA_CTRL = LCD_IN; SET_LCD_EN;

status = LCD_DATA_PORT; CLEAR_LCD_EN; LCD_DATA_CTRL = LCD_OUT;

return status;

}

 

void LCDInit(void)

// inits the LCD

{

 

u16 cnt=0;

 

CLEAR_LCD_RS;

 

CLEAR_LCD_RW;

 

CLEAR_LCD_EN;

 

PCR7 = 0x30;

// Set RS+RW = Output

PCR2 = 0x01;

// Set EN = Output

LCD_DATA_CTRL = LCD_OUT;

// Set DDR to Output

// required 3 times pls. ref. data sheet

LCDWriteCmd(0x38); // 8Bit-IF, 2

Lines, 5x7 character font

while(--cnt);

 

LCDWriteCmd(0x38); // 8Bit-IF, 2

Lines, 5x7 character font

while(--cnt);

 

LCDWriteCmd(0x38); // 8Bit-IF, 2

Lines, 5x7 character font

while(--cnt);

 

LCDWriteCmd(0x38); // 8Bit-IF, 2

Lines, 5x7 character font

while(--cnt);

 

LCDWriteCmd(0x0c); // DisplayOn,

CursorOff, BlinkingOff

LCDReadStatus();

 

LCDWriteCmd(0x06); // Enter Mode, AutoIncrement

LCDReadStatus();

 

LCDWriteCmd(0x14); // MoveCursor

right

LCDReadStatus();

 

LCDWriteCmd(0x80); // Set DD RAM

Address = 0x00

LCDReadStatus();

 

}

// writesomedata from 1st position in #line (0/1) void LCDWriteLine(u8 line, u8 *data)

{

 

LCDWriteCmd(0x80 + line*0x40);

// select line

while (*data)

 

{

 

LCDWriteData(*data);

 

data++;

 

}

 

}

 

#define ADDR_A (*(volatile unsigned short *)(0xFFB0)) #define ADDR_B (*(volatile unsigned short *)(0xFFB2))

u16 Read_AD(u8 channel)

{

 

u8 dummy;

 

u16 adval;

 

dummy = ADCSR;

// dummy read

ADCSR = 0x00;

// reset A/D

ADCSR = (0x20 + (channel &0x01));

// start A/D, channel 0 or 1

 

while (!(ADCSR & 0x80));

// wait conversion end

 

 

if (channel & 0x01)

adval = ADDR_B;

// read A/D-value

 

else adval = ADDR_A;

 

 

 

return adval>>6;

 

 

}

 

 

 

 

u8

Line0[]

= " A/D#0=P1=0x

\0";

 

u8

Line1[]

= " A/D#1=P2=0x

\0";

 

// convert int to ASCII-HEX

void ShowHexValue(u16 code, u8 line)

Issue 0.2

Page 42

07/2002

Page 42
Image 42
IBM H8 user manual Lcddatactrl = Lcdin Setlcden