Hallo, ich habe ein bißchen Probleme mit meinem Compiler und/oder mit meinem Programm. Ich benutze einen 8535. Der folgende Programmabschnitt soll ein Auswahlmenü werden, bei dem ich jedoch noch die Zahl i hinterher weiter benötige (für Einstellungen der RS232). Ich bin auch ein bißchen bewandert, was C/C++ angeht, aber ich finde den Fehler nicht. Es werden ständig nur die Hälfte der Strings bzw. kein String im LCD dargestellt. Ich habe nun schon 2 verschiedene Methoden eingebaut, aber bei beiden dasselbe. Vielleicht kann mir einer von euch helfen. Hier der Code: flash char bps12[10] = "1200bps"; flash char bps24[10] = "2400bps"; flash char bps48[10] = "4800bps"; flash char bps96[10] = "9600bps"; flash char bps192[10] = "19200bps"; flash char p_none[10] = "kein"; flash char p_even[10] = "gerade"; flash char p_odd[10] = "ungerade"; flash char flash *baud_messages[5]={"1200bps","2400bps","4800bps","9600bps","19200bps"}; . . . void konfig(void) // Unterprogramm zur Konfiguration der RS232-Schnittstelle { unsigned char i = 0; char text[10]; char flash *p_baud[5]; char flash *p_paritaet[3]; p_baud[0] = bps12; p_baud[1] = bps24; p_baud[2] = bps48; p_baud[3] = bps96; p_baud[4] = bps192; p_paritaet[0] = p_none; p_paritaet[1] = p_even; p_paritaet[2] = p_odd; lcd_putsf("Konfigurations-"); lcd_gotoxy(0,1); lcd_putsf("modus!"); for (i=0; i<=3; i++) {delay_ms(250);}; // 1 Sekunde Wartezeit baudrate = 0x33; // Festlegung der Baudrate auf 9600bps rs_config = 0x98; // Festlegung auf 8N1 lcd_clear(); lcd_putsf("Baudrate:"); lcd_gotoxy(0,1); sprintf(text,"%10s",*p_baud[i]); lcd_puts(text); i = 0; do { // lcd_gotoxy(0,1); // sprintf(text,"%8p",*baud_messages[i]); // lcd_puts(text); entprell_status = entprell_d(1); if (entprell_status == 1) { if (i<5) i++; else i = 0; lcd_gotoxy(0,1); sprintf(text,"%10p",*p_baud[i]); lcd_puts(text); }; } while (PIND.4 != 0); lcd_clear(); lcd_putsf("Paritaet:"); lcd_gotoxy(0,1); sprintf(text,"%10s",*p_baud[i]); lcd_puts(text); i = 0; do { entprell_status = entprell_d(1); if (entprell_status == 1) { if (i<2) i++; else i = 0; lcd_gotoxy(0,1); sprintf(text,"%10p",*p_paritaet[i]); lcd_puts(text); }; } while (PIND.4 != 0); lcd_clear(); lcd_putsf("Baudrate:"); lcd_gotoxy(0,1); sprintf(text,"%10s",*baud_messages[i]); lcd_puts(text); i = 0; do { // lcd_gotoxy(0,1); // lcd_puts(text); entprell_status = entprell_d(1); if (entprell_status == 1) { if (i<5) i++; else i = 0; lcd_gotoxy(0,1); sprintf(text,"%p",*baud_messages[i]); lcd_puts(text); }; } while (PIND.4 != 0); lcd_clear(); lcd_putsf("Fertig."); while(1){}; } unsigned char entprell_d(unsigned char e_bit) // Unterprogramm zum Entprellen der Taster an PORT D // gibt "1" zurück, falls Taster noch gedrückt, ansonsten "0" { int maske = 0; maske = ((e_bit << 2) & 0x3C); // ausmaskieren des gewünschten Pin's delay_ms(250); // 250ms Zeitverzögerung zum Entprellen if ((PIND & maske) == 0) return 1; else return 0; } Gruß, Matthias
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.