hi hab folgendes Programm: #asm .equ __lcd_port=0x15 #endasm #include <mega8535.h> #include <lcd.h> typedef unsigned char byte; /* table for the user defined character arrow that points to the top right corner */ flash byte char0[8]={ 0b0000000, 0b0001111, 0b0000011, 0b0000101, 0b0001001, 0b0010000, 0b0100000, 0b1000000}; void define_char(byte flash *pc,byte char_code) { byte i,a; a=(char_code<<3) | 0x40; for (i=0; i<8; i++) lcd_write_byte(a++,*pc++); } void main(void) { DDRA = 0x00; lcd_init(16); define_char(char0,0); lcd_gotoxy(0,0); lcd_putsf("Enter Message"); lcd_gotoxy(1,1); if (PINA.7) { lcd_putsf("7"); } if (PINA.6) { lcd_putsf("6"); } if (PINA.5) { lcd_putsf("5"); } if (PINA.4) { lcd_putsf("4"); } if (PINA.3) { lcd_putsf("3"); } if (PINA.2) { lcd_putsf("2"); } if (PINA.1) { lcd_putsf("1"); } if (PINA.0) { lcd_putsf("0"); } while (1); } leider klappt das nicht er sollte doch in der 2. Zeile auf dem 2 Platz den Buchstaben anzeigen von der Taste die gedrückt wird aber es tut sich eifnach nix es kommt nur Enter Message aber Tasten kann ich drücken wie ich will es tut sich nix wer weiß rat? mfg Chris
Hallo, wenn ich Prozessor wäre, würde ich nach dem Reset mal schnell durch die main() rennen, feststellen, das keine Taste dedrückt ist und mich dann ewig in der while(1); langweilen... Gruß asu Berlin Michael
hi danke bin ja sau dumm ;) habs jetzt so gemacht: #asm .equ __lcd_port=0x15 #endasm #include <mega8535.h> #include <lcd.h> #include <delay.h> typedef unsigned char byte; /* table for the user defined character arrow that points to the top right corner */ flash byte char0[8]={ 0b0000000, 0b0001111, 0b0000011, 0b0000101, 0b0001001, 0b0010000, 0b0100000, 0b1000000}; void define_char(byte flash *pc,byte char_code) { byte i,a; a=(char_code<<3) | 0x40; for (i=0; i<8; i++) lcd_write_byte(a++,*pc++); } void main(void) { while(1) { DDRA = 0x00; lcd_init(16); define_char(char0,0); lcd_gotoxy(0,0); lcd_putsf("Enter Message"); lcd_gotoxy(1,1); if (PINA.7) { lcd_putsf("7"); } if (PINA.6) { lcd_putsf("6"); } if (PINA.5) { lcd_putsf("5"); } if (PINA.4) { lcd_putsf("4"); } if (PINA.3) { lcd_putsf("3"); } if (PINA.2) { lcd_putsf("2"); } if (PINA.1) { lcd_putsf("1"); } if (PINA.0) { lcd_putsf("0"); } delay_ms(500); } } neues problem: sobald ich eine Taste gedrückt hab fehlen einige Buchstaben oder er verdreht sie anscheinend willkürlich. an was kann das liegen? mfg chris
Hallo, gibt es einen geheimen Grund, weshalb Du jetzt in der while-Schleife jedesmal die Portrichtung festlegst, das Display initalisiertst, das selbstdefinierte Zeichen reinschreibst und den Begrüssungstext ausgibst? So vergeßlich sind weder AVR noch Display, daß man die da dauernt erinnern muß... Zu den falschen Zeichen: a) ich kenne AVR-CTRL nicht b) ich kenne das Display bzw. die benutzten Bibliotheken nicht c) ich kenne die Taktfrequenz des AVR nicht d) ich weiß also auch nicht, ob man die Bibliothek an Display und Takt von Hand anpassen muß (wäre normal) oder ob das irgend so ein "Programmierbaukasten ist. Vermuten würde ich ein Timingprobkem bei der Display-Ansteuerung, da warte vermutlich eine Funktion nicht ordentlich, bis das Display soweit ist. Gruß aus Berlin Michael
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.