Forum: Mikrocontroller und Digitale Elektronik Port in ASM30 (dsPIC/PIC24) Maskieren


von Blubb (Gast)


Lesenswert?

Mir brennt grad der Kopf. Folgendes, wenn ich Ausgänge schalte schreibe 
ich zuerst in ein Shadow Register (zB. LATD_S) dieses wird vom T1 aller 
xxx ms auf den eigentlichen Port (LATD) geschrieben, allerdings sollen 
nur RD0 und RD2 geändert werden, die restlichen Augänge sollen untouched 
bleiben.

Gibts das auch was mit IOR / AND ?

von Rainer U. (r-u)


Lesenswert?

Bit setzen: OR mit Maske = 1 an den passenden Stellen, Rest 0.
Bit löschen: AND mit Maske = 0 an den passenden Stellen, Rest 1.

von Heinz V. (heinz_v)


Lesenswert?

Blubb schrieb:
> Mir brennt grad der Kopf. Folgendes, wenn ich Ausgänge schalte schreibe
> ich zuerst in ein Shadow Register (zB. LATD_S) dieses wird vom T1 aller
> xxx ms auf den eigentlichen Port (LATD) geschrieben, allerdings sollen
> nur RD0 und RD2 geändert werden, die restlichen Augänge sollen untouched
> bleiben.
>
> Gibts das auch was mit IOR / AND ?


BTW: IOR = Inklusive OR OR IOR = Immediate OR?

egal...

1
Pseudocode:
2
...
3
IN  Hilfsregister1, Ausgangsregister; Istwert des Ausgangsregister holen
4
AND Hilfsregister1, 11111010b       ; Bits 0 und 2 löschen
5
MOV Hilfsregister2, Sollwert        ; zur Bearbeitung
6
AND Hilfsregister2, 00000101b       ; alle Bits ausser 0 und 2 löschen
7
OR  Hilfsregister1, Hilfsregister2  ; die Daten kombinieren
8
OUT Ausgangsregister, Hilfsregister2; wieder ausgeben
9
...

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.