in zeile 197 stand: LCD_WriteString(" ,wie geht's");
hab es etwas abgeändert, jetzt bezieht sich der fehler zwar auf eine andere zeile, aber das ist ja unwichtig, es geht um die gleiche funktion.
wodrann kann das liegenCode:/** D E F I N I T I O N S ****************************************************/ #define PORTLCD LATB #define TRIS_LCD TRISB #define LCD_E PORTBbits.RB0 #define LCD_RS PORTBbits.RB2 #define LCD_RW PORTBbits.RB3 #define nop _asm nop _endasm /**************************************************************************** /*****************************************************************************/ //#pragma udata glob_point /*****************************************************************************/ #pragma code /**delay for PicLSBK (16MHz Taktzyklus = 4 MHz Befehlszyklus)*****************/ void delay100us(unsigned char multiplikator) { while(multiplikator--) Delay10TCYx(40); //40*10*0,25µs = 100 µs } /****************************************************************************/ void enable(void) { nop; LCD_E = 1; // Daten übernehmen delay100us(1); LCD_E = 0; nop; } /**LCD_BUSY*****************************************************************/ void LCD_BUSY(void) { unsigned char temp1; do { TRIS_LCD = 0xF0; // LCD-PORT = high nibbles:eingang; low nibbles:ausgang //Display abfrage LCD_RS = 0; // LCD im Befehls-Mode LCD_RW = 1; // LCD im Lesen-Mode enable(); temp1 = PORTLCD; temp1 = temp1 & 0x80; enable(); // high nibble abfragen (wird für busy-flag abfrage nich weiter benötigt) } while (temp1==0x80); // wiederhole schleife bis busy-flag (LCD DATA PIN D7) low delay100us(2); LCD_RW = 0; // Busy = low: LCD im Schreiben-Mode TRIS_LCD = 0x00; // LCD-PORT = Ausgänge PORTLCD = 0x00; // Daten und Steuerleitungen LOW } void LCD_WriteZeichen( char zeichen) { unsigned char x; LCD_BUSY(); // Warten bis LCD bereit ist x = zeichen & 0xf0; PORTLCD = x; // höherwertiges nibbel an LCDPORT übergeben LCD_RS = 1; // LCD im Daten-Mode LCD_RW = 0; // LCD im Schreiben-Mode enable(); // high nibble bei fallenden Flanke von enable an LCD senden x = zeichen; x = (x << 4)& 0xf0; //niederwertiges nibbel an LCDPORT übergeben PORTLCD = x; LCD_RS=1; LCD_RW = 0; enable(); // low nibble bei fallenden Flanke von enable an LCD senden LCD_RS = 0; PORTLCD = 0x00; // Daten und Steuerleitungen LOW } void LCD_WriteString(char *string) { unsigned char temp; temp=*string; while(temp) { LCD_WriteZeichen(temp); // zeichen am LC-Display ausgeben string++; temp=*string; } } void LCD_WriteRegister(unsigned char data) { unsigned char x; LCD_BUSY(); // Warten bis LCD bereit ist x = data & 0xf0; PORTLCD = x; //höherwertiges nibbel an LCD senden LCD_RW = 0; // LCD im Schreiben-Mode LCD_RS = 0; // LCD im Befehl-Mode enable(); x = data; x = (x << 4)& 0xf0; //niederwertiges nibbel an LCD senden PORTLCD = x; enable(); } void LCD_Init(void) { // LCD initialisieren TRIS_LCD = 0x00; // LCD-PORT = Ausgänge PORTLCD = 0x00; // Daten und Steuerleitungen LOW delay100us (151); delay100us (151); // warte über 30ms PORTLCD = 0x30; // Interface auf 8-Bit setzen enable(); delay100us(46); //warte 4,5ms // Interface auf 8-Bit setzen enable(); // Enable (LCD) delay100us(2); //warte 100µs enable(); // Interface auf 8-Bit setzen // Enable (LCD) delay100us(2); //warte 100µs PORTLCD = 0x20; // Interface auf 4-Bit setzen enable(); // Enable (LCD) LCD_WriteRegister(0x28); // 2-zeilig, 5x8-Punkt-Matrix LCD_WriteRegister(0x08); // Display aus LCD_WriteRegister(0x01); // Display löschen LCD_WriteRegister(0x06); // Kursor nach rechts wandernd, kein Display-Shift LCD_WriteRegister(0x0f); // Display ein [ 0x0C = ein, 0x08 = aus ] } void main (void) { LCD_Init(); LCD_WriteZeichen('H'); LCD_WriteZeichen('a'); LCD_WriteZeichen('l'); LCD_WriteZeichen('l'); LCD_WriteZeichen('o'); LCD_WriteString(" ,wie geht's"); // compiler meldet Warning [2066] type qualifier mismatch in assignment while(1); }







Zitieren

Lesezeichen