Forum: Mikrocontroller und Digitale Elektronik einfachs Programme geht nicht, Portausgabe


von Nitro86 (Gast)


Lesenswert?

Hallo zusammen...

ich bin gerade am verzweifeln.
Ich teste momentan ein Teil von einem großeren Projekt. Darin lese ich 
über die Pins PinC(4:1) werte ein die von einem BCD-Codierer kommen. Da 
mir dieser Schalter entweder die Pins auf GND schaltet oder sie in der 
luft hängen sind die Pull-ups aktiviert. Wenn ich mit dem Mulitmeter 
nachmesse passt auch alles.
Jetzt habe ich das programm soweit vereinfacht das ich die eingelesenen 
Pins mit kleiner verarbeitung einfach auf PortD ausgebe. aber da 
passiert nichts. Wenn ich PortD nachmesse ist alles auf GND.

Hier mal mein Quelltext. Ich hoffe mal um hilfe oder nützliche Tipps.

.include "m8def.inc"

//Stack initalisieren
ldi r16, LOW(RAMEND)
out SPL, r16
ldi r16, HIGH(RAMEND)
out SPH, r16

 //Ausgänge festlegen
ldi r16, 0x00
out DDRC, r16        //PortC ist ein Eingang
ldi r16, 0b00011110
out PortC, r16        //Pullupwiderstände aktivieren
ldi r16, 0xff
out DDRD, r16        //PortD ist ein Ausgang

//Register initialisieren
ldi r22, 0x00
ldi r16, 0x00

//################################################## start
start:

check_Baudrate:
in r20, PinC    //kompletten Pin-Port einlesen
lsr r20      //Register nach rechts verschieben

ldi r16, 0xFF  //Beginn Warteschleife, zur Softwareentprellung
loop_check_Baudrate1:
ldi r17, 0xFF
loop_check_Baudrate2:
dec r16
brne loop_check_Baudrate1
dec r17
brne loop_check_Baudrate2  //Ende Warteschleife


in r21, PinC  //kompletten Pin-Port einlesen
lsr r21    //Register nach rechts verschieben

cp r20, r21  //sind beide eingelesenen Werte identisch?
brne check_Baudrate  //wenn nicht nochmal einlesen

ldi r17, 0b00001111
and r20, r17    //wenn gelich, Register r20 formatieren

out PortD, r20    //Auf PortD ausgeben
rjmp start

von Gast (Gast)


Lesenswert?

Gibt es für das Programm eine Möglichkeit diese Schleifen zur 
Softwareentprellung wieder zu verlassen?

von Nitro86 (Gast)


Lesenswert?

asche auf mein haupt...
hab das in der simulation immer auskommentiert weil ich halt net warten 
wollte...
danke danke ;)

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
Noch kein Account? Hier anmelden.