erstmal danke für die Antworten. leider geht das nicht, ich hol mal ein
wenig weiter aus:
ich habe eine Funktion welche Buchstaben auf einem LCD anzeigt. diese
heist lcd_data(unsigned char temp1); (die gleiche wie im Tutorial)
dieser funktion muss ich einen Buchstaben übergeben.
nun bekommt meine Funktion ein wort, welches buchstabenweise an die
funktion lcd_data weitergeleitet werden soll. nur halt nicht wie in der
Funktion lcd_string(); sondern in einer anderen Reihenfolge. ich möchte,
das der text sozosagen einfliegt von links, also, dass erst der lezte
Buchstabe, dann die beiden letzten usw. angezeigt werden. hierzu
benötige ich die einzelnen buchstaben. so soll das dann ungefär im
programm ablaufen:
1 | funktion("hallo"); // aufruf mit Wort
|
2 |
|
3 | void funktion(char *data){
|
4 |
|
5 | lcd_data(data[4]);
|
6 | lcd_clear();
|
7 | lcd_data(data[3]);
|
8 | lcd_data(data[4]);
|
9 | ...
|
10 | // natürlich mit schleifen verallgemeinert
|
11 | }
|
weder das funktioniert noch das vorherige Umwandeln in der form mit
sprintf, wie es oben vorgeschlagen wurde.
hier nochmal die Funktion lcd_data:
1 |
|
2 | void lcd_data(unsigned char temp1)
|
3 | {
|
4 | unsigned char temp2 = temp1;
|
5 |
|
6 | LCD_PORT |= (1<<LCD_RS); // RS auf 1 setzen
|
7 |
|
8 | temp1 = temp1 >> 4;
|
9 | temp1 = temp1 & 0x0F;
|
10 | LCD_PORT &= 0xF0;
|
11 | LCD_PORT |= temp1; // setzen
|
12 | lcd_enable();
|
13 |
|
14 | temp2 = temp2 & 0x0F;
|
15 | LCD_PORT &= 0xF0;
|
16 | LCD_PORT |= temp2; // setzen
|
17 | lcd_enable();
|
18 |
|
19 | _delay_us(42);
|
20 | }
|