Eingangspin direkt in Register

OP #561710
Lesenswert?

Hallo,
Ich möchte gern serielle Daten in einen MC von Atmel aufnehmen. dafür 
habe ich einen Pin am PortA auf Eingang geschaltet und möchte den 
Zustand von diesem nun in das Nullte Bit in einem Register schreiben 
dieses denn Schieben usw.
Nun geht das nicht ganz so wie ich mir das vorgestellt oder besser 
Programmiert habe nun ist das auch in gewisser weise nachvollziehbar da 
ich nicht weiß wie das nullte Bit in einem Register durch den IN Befehl 
beschrieben wird.
Währe toll wenn mir jemand dabei helfen kann.
Gast #561722
Lesenswert?

Hallo,

auch wenn Du sehr sparsam mit Infos umgehst (welcher Atmel? Welche 
Programmiersprache, welches Datenformat haben die seriellen Daten?),

bei den AVR liest IN PINx,register den Zustand des Ports komplett in das 
angegeben Register.

Von da ab mußt Du dann selber sortieren.

Möglich wäre z.B.:

CLR r17

IN PINA,r16
ROR r16 schiebt Bit 0 in Carry
ROL r17 schiebt Carry in Bit 0

Serielle Daten empfängst Du damit aber noch nicht, ist nur eine mögliche 
Lösung für Deine konkrete Frage, wie man den Zustand von Bit0 eines 
Ports in Register schieben kann.

Gruß aus Berlin
Michael

#561745
Lesenswert?

Oder
1
 clc                 ;Carry erstmal auf 0
2
 sbic pinb,3         ;Pegel an PB3 ermitteln, überspringen, wenn L (0)
3
 sec                 ;Carry setzen, wenn Pegel H (1) war
4
 rol r2              ;Carry in das Register r2 rotieren (reinschieben)

Aber das ist noch keine komplette serielle Kommunikation...
Danach hattest Du aber auch nicht gefragt, oder?

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren