Gast
#28948
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