Hi,
geht schon, so von Betriebsschlosser zu Betriebsschlosser.
Ich bastel seit den 70gern mit Digitalelektronik, da sammelt sich was an...
Da die oberen 4 Bit vom Datenbus für andere Zwecke frei sind ( und benutzt werden ), kann man nicht so ohne weiteres Adressen ausgeben. Bei Ausgabe einer Adresse < 16 durch einfache zuweisung werden die oberen 4 Bit "zwangsgelöscht".
Bei Ausgabe der Adresse Bit für Bit kommt es zu unerwünschten zwischenstellungen- der µC brauch ja etwas Zeit zwischen den einzelnen Ausgaben, der Decoder ist aber schnell genug, "falsche" Adressen zu generieren, was eine vernünftige Adressierung nahezu verhindert.
Bei den oberen 4 Bit ist es ähnlich- nach der Adressausgabe jedesmal neu setzen führt zu ständigen ein/aus der angeschlossenen schaltungen.
Daraus folgt, Adressport immer als ganzes (Byteport) ansprechen.
Also die oberen 4 bit in einer Bytevariable zwischenspeichern -merken muss man sie sich ja sowieso- und die Adressen so(ähnlich) ausgeben:
Byteport= adr OR merkerbyte ( das meinte ich mit verODERN )
( Die oberen 4 Bit kann man per Bitportbefehl setzen/löschen, dann aber nicht vergessen, das Merkerbyte zu aktualisieren)
Besser aber, Merkerbyte ändern, und mittels Byteport= Merkerbyte AND 15 ( &b00001111 ) ausgeben. - das setzt die Adresse auf 0, deswegen hatte ich vorgeschlagen, diese freizulassen.
FAZIT:
Diese beiden Befehle reichen für Ausgaben auf den Adressport:
Byteport= adr OR merkerbyte ' -> gewünschte Adresse vorher in Variable adr schreiben, obere 4bit werden nicht verändert;
Byteport= Merkerbyte AND 15 ' -> setzt Adresse auf 0, Merkerbyte wird ausgegeben.
MfG Lutz
€:
Um Missverständnissen vorzubeugen: Die unteren 4 Bit des Merkerbyte freilassen, die sind für die Adressen "reserviert".
Lesezeichen