Gast
#206991
Hallo,
ich hab ein sonderbares Problem mit dem Befehl sbis(c) beim ATmega16.
Ich versuche am PortC den Zustand der Pins abzufragen, PortC wurde mit
0x00 im DDRC als Eingang definiert.
Hier der Ausschnitt aus dem Porgramm:
...
ldi temp1, 0x00 ;Port c = Eingang
out DDRC, temp1
ldi temp1, 0x00 ;Port d = Eingang
out DDRD, temp1
ldi temp1, 0xFF ;Port b = Ausgang
out DDRB, temp1
ldi temp1, 0xFF ;Port a = Ausgang
out DDRA, temp1
rcall lcd_init ;Display initialisieren
loop: rcall lcd_clear ;Display löschen
sbis PINC, 4
rcall LabelA
sbis PINC, 1
rcall LabelB
sbis PINC, 2
rcall LabelC
sbic PINC, 0
rcall LabelD
rjmp loop
...
Mein Problem:
Nur Pin 0 und 1 werden quasi vom Controller erfasst!! Bei den
restlichen Pins kann ich machen was ich will, er überspringt nicht den
nächsten Befehl!!
z.B. Pin (Bit) Nr. 4, ich lege +5V an den Pin aber er überspringt nicht
den Befehl "rcall LabelA"!! So ist es auch bei den restlichen außer
Pin 1 und 0. Selbst wenn ich die Bits vertausche, also Bit 0 oder 1 auf
LabelA beziehen lasse, funktioniert dann zwar das überspringen von
LabelA aber das war's auch schon.
Die Reihenfolge ist auch egal nur Pin 0 und 1 funktionieren.
Ich habe den Controller schon getauscht und die Spannungen
nachgemessen. Also am Controller und der Spannung scheint es dann wohl
nicht zu liegen.
Hab ich irgendwas nicht beachtet? Wo liegt der Hund begraben?