bigeggmc,
das kann man z.B. so machen (Rotation nach rechts):
Code:
in r16,PINA ; Input Pins von PortA nach r16 einlesen
mov r17,r16 ; Arbeitskopie nach r17
lsr r17 ; schiebt alle 8 Bits um eins nach rechts, setzt Bit7 auf Null
sbrc r17,3 ; nächste Anweisung überspringen, wenn Bit3 Null ist
or r17,0x80 ; Bit7 auf 1 setzen
andi r17,0xF0 ; untere 4 Bits in r17 löschen
andi r16,0x0F ; oberer 4 Bits in r16 löschen
or r16,r17 ; beide Halb-Bytes in r16 wieder zusammensetzen
; r16 enthält jetzt wieder den urspünglichen Port-Inhalt, aber die
; oberen 4 Bits sind um eins nach rechts rotiert.
Das Programmstück lässt sich leicht für die Linksrotation modifizieren .
mare_crisium
Lesezeichen