RS232 und LCD gleichzeitig mit PIC

Gast #28948
Lesenswert?

Hallo,

ich hab ein funktionierendes Programm das mit printf() Texte über die 
UART schicken kann, und ich hab ein funktionierendes Programm das mit 
lcd_puts() Texte auf ein 4x20 Display schreiben kann.
Ich will nun beide vereinen um beide Schnittstellen gleichzeitig nutzen 
zu können. Sie liegen auch auf verschieden PINs. UART liegt auf PortB 5 
und 6. Lcd liegt auf PortB 0-3 und rs auf PortA2 und En auf PortA3. 
Jedoch stören sich (vermutlich) die beiden folgenden initialisierungen:


#define INIT_PORTS {TRISA = 0x00; TRISB = 0x00; TRISC = 0xBF; 
TRISD = 0xFF; TRISE = 0x07;}
//---------------------------------------------------------------------- 
------------
void RegInit(void)
//---------------------------------------------------------------------- 
------------
{
 //Pull-up port B
 RBPU = 0;

 INIT_PORTS;

 BRGH=1;    // high baud rate
 SPBRG=22;     //set the baud rate 22-9600Bd,11-19200(3.58MHz)
 SYNC=0;    // asynchronous
 SPEN=1;    // enable serial port pins
 CREN=1;    // enable reception
 SREN=0;    // no effect
 TXIE=0;    // disable tx interrupts
 RCIE=0;    // disable rx interrupts
 TX9=0;    // 0-8 or 1-9bit transmission
 RX9=0;    // 0-8 or 1-9bit reception
 TXEN=1;    // enable the transmitter
}

void
lcd_init(void)
{
  LCD_RS = 0;  // write control bytes
  DelayMs(15);  // power on delay
  PORTB = 0x3;  // attention!
  LCD_STROBE;
  DelayMs(5);
  LCD_STROBE;
  DelayUs(50);
  LCD_STROBE;
  DelayMs(5);
  PORTB = 0x2;  // set 4 bit mode
  LCD_STROBE;
  DelayUs(40);
  lcd_write(0x28); // 4 bit mode, 1/16 duty, 5x8 font
  lcd_write(0x0F);  // display on, blink curson on
  lcd_write(0x04);  // entry mode
  lcd_write(0x01);  // Display Löschen
}

Bin für jede Hilfe Dankbar!
MFG
Holger

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren