Hallo, ich bin neu hier und habe auch schon ein Paar dinge aus Tutorial probiert. Ich verwende eine AT90S4433, AVR-Studio und Yaap Jetzt meine Frage: "ist port B = 00110011 dann ausgabe von 01010101 nach port D" "ist port B = 00111011 dann ausgabe von 00001111 nach port D" usw. PS: Ich bin Gehörlos, deswegen ist meine Rechtschreibung auch nicht so gut. Danke schon im Vorraus. MK
Oh, sorry. Ich wollte schreiben: Wie kann ich sowas Programmieren: "ist port B = 00110011 dann ausgabe von 01010101 nach port D" "ist port B = 00111011 dann ausgabe von 00001111 nach port D" MK
wenns nur ein paar Abfragen sind, gehts am einfachsten so: "ist port B = 00110011 dann ausgabe von 01010101 nach port D" in temp, PINB //einlesen von PIN B cpi temp, 0b00110011 //1.Vergleich brne chk_2 //wenn nicht gleich, anderer Vergleich ldi temp, 0b01010101 //Ausgabewert für condition1 rjmp ausgabe chk_2: cpi temp, 0b00111011 brne chk_3 .... ausgabe: out PORTD, temp ret
Estmal "DANKE" Geht dass so: ;Grundeinstellungen .include "4433def.inc" ;AVR-Typ wählen ldi r16, 0xFF ;Port B durch Ausgabe von 0xFF ins out DDRB, r16 ;Richtungsregister DDRB als Eingang ;konfigurieren ldi r16, 0x00 ;Port D durch Ausgabe von 0x00 ins out DDRC, r16 ;Richtungsregister DDRD als Ausgang ;konfigurieren ldi r16, 0x00 ;Port D durch Ausgabe von 0x00 ins out DDRD, r16 ;Richtungsregister DDRD als Ausgang ;konfigurieren ldi r16, 0x00 ;0x00 in Register r16 laden out PORTC, r16 ;Register r16 nach Port C ausgeben ldi r16, 0x00 ;0x00 in Register r16 laden out PORTD, r16 ;Register r16 nach Port D ausgeben ;Programm loop: in temp, PINB ;einlesen von PIN B cpi r16, 0b00110011 ;1.Vergleich brne chk_2 ;wenn nicht gleich, anderer Vergleich ldi r17, 0b01010101 ;Ausgabewert für condition1 rjmp ausgabe chk_2: cpi r16, 0b00111011 ;2.Vergleich brne chk_3 ;wenn nicht gleich, anderer Vergleich ldi r17, 0b00001111 ;Ausgabe für condition2 rjmp ausgabe .... .... .... ausgabe: out PORTD, r17
Die PORTC-/DDRC-Konfiguration kannst Du Dir für dieses Beispiel sparen. Aber evtl. benötigst Du den Port ja noch später im Programm. Außerdem solltest Du "brne chk_3" durch "brne ausgabe" ersetzen, sofern Du keine weiteren Zustände abfragen willst.
Port C wird noch benötigt. Und es werden 11 zustände abgefragt. (dann kommt "rjmp loop" erst später im Programm) Herzlichen Dank an alle. MK
Bei 11 Abfragen könnte man sich auch das Anlegen einer Tabelle überlegen - sieht schöner aus, bringt aber sonst keine Vorteile.
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.