Du brauchst nur folgenden Code in die rp5plus.inc von hup mit einfügen:
Code:
#define lcd_port  1
#define lcd_rw    12
#define lcd_rs    13
#define lcd_e     14


// ---- LCD Routinen ---

char lcd_param;
char lcd_buf;


// Kommando oder Zeichen an Display senden
void LCD_Write() {
  OutByte(lcd_port,lcd_buf|(lcd_param >> 4));    // Hi-Nibble
  Toggle(lcd_e);
  Toggle(lcd_e);
  OutByte(lcd_port,lcd_buf|(lcd_param & 0x0F));  // Lo-Nibble
  Toggle(lcd_e);
  Toggle(lcd_e);
}

// LCD-Kommando
void LCD_WriteCMD() {
  lcd_buf=0x00;
  LCD_Write();
}

// Zeichenausgabe
void LCD_WriteChar() {
  lcd_buf=32; //&B00100000
  LCD_Write();
}

// Nummernausgabe
void LCD_WriteNum() {
  lcd_param+=48;
  LCD_WriteChar();
}

// Display loeschen
void LCD_Clear() {
  lcd_param=0x02; LCD_WriteCMD();
  lcd_param=0x01; LCD_WriteCMD();
}

void LCD_Init() {
// alle ports 0
  OutByte(lcd_port,0x00);

// 8-Bit-Modus aktivieren
  lcd_param=0x38; LCD_WriteCMD();

// mit 8-Bit-Command in 4-Bit-Modus umschalten
  OutByte(lcd_port,2); //&B00000010
  Toggle(lcd_e);
  Toggle(lcd_e);

// ab jetzt 4-Bit-Modus
  lcd_param=0x28; LCD_WriteCMD();
  lcd_param=0x0C; LCD_WriteCMD();
  LCD_Clear();
}

// Zeilenwechsel
void LCD_GotoLine() {
  if (lcd_param==1) lcd_param=0x80;
  if (lcd_param==2) lcd_param=0xC0;
  LCD_WriteCMD();
}

// Ausgabe: Hallo! Mein Name ist RP5!
// Unbedingt beachten, dass vor dem ersten Gebrauch der LCD Funktionen LCD_Init aufgerufen wird!
void LCD_Demo1() {
 LCD_Clear();
 lcd_param=1; LCD_GotoLine();
 lcd_param='H'; LCD_WriteChar();
 lcd_param='a'; LCD_WriteChar();
 lcd_param='l'; LCD_WriteChar();
 lcd_param='l'; LCD_WriteChar();
 lcd_param='o'; LCD_WriteChar();
 lcd_param='!'; LCD_WriteChar();
 lcd_param=' '; LCD_WriteChar();
 lcd_param='M'; LCD_WriteChar();
 lcd_param='e'; LCD_WriteChar();
 lcd_param='i'; LCD_WriteChar();
 lcd_param='n'; LCD_WriteChar();
 lcd_param=' '; LCD_WriteChar();
 lcd_param=' '; LCD_WriteChar();
 lcd_param=2; LCD_GotoLine();
 lcd_param='N'; LCD_WriteChar();
 lcd_param='a'; LCD_WriteChar();
 lcd_param='m'; LCD_WriteChar();
 lcd_param='e'; LCD_WriteChar();
 lcd_param=' '; LCD_WriteChar();
 lcd_param='i'; LCD_WriteChar();
 lcd_param='s'; LCD_WriteChar();
 lcd_param='t'; LCD_WriteChar();
 lcd_param=' '; LCD_WriteChar();
 lcd_param='R'; LCD_WriteChar();
 lcd_param='P'; LCD_WriteChar();
 lcd_param='5'; LCD_WriteChar();
 lcd_param='!'; LCD_WriteChar();
}
Leider werden dadurch noch weitere, wertvolle Register verbraucht.