Gast
#407982
Hallo Leute,
sitze hier und versuche mit einem Renesas M16C/6N4(10MHz) ein
LC-Display zu steuern. Klappt auch alles ganz gut nur möchte ich die
Abfrage des Busy Flag nutzen, um nicht auf Warteschleifen angewiesen zu
sein.
Habe ein 4x20 Display, 8Bit Daten auf Port 0 (0=LSB;7=MSB)
RS;R/W;E auf Port 10.5 - 10.7
Folgendes Unterprogramm, das bei Wartezeiten aufgerufen wird, soll das
Busy Flag auswerten:
void busy_LCD (void)
{
P0=0x00; //rücksetzen Daten
P10_bit.P10_5=0; //RS=0
P10_bit.P10_6=1; //R/W = read
P10_bit.P10_7=1; //E=1
PD0=0x00; //Port 0 ist Eingang
while(P0_bit.P0_7==1); //warte solange Busy Flag=1
P10=0x20; //Port 10 Rücksetzen, RS=1;E=0;R/W=0
PD0=0xFF; //Port 0 ist Ausgang
}
Das Unterprogramm wird auch aufgerufen, durchlaufen, nur ist im
Debugger zu sehen, dass das Busy Flag (P0.7) niemals auf eins gesetzt
wird. Der Fehler zeigt sich so, dass die Buchstaben übersprungen
werden. mit for - schleifen statt dessen funktioniert es einwandfrei.
Hat jemand von euch einen Rat für mich?
Vielen Dank
Funksta