Hi, Andre !
Vorweg Frage: -877 oder -84 ?
wie auch immer: SHIFTEN
Ein Byte hat 8 Bit, also auch nur 8 Mal shiften. Das Shift Register speichert mit der STEIGENDEN Flanke.
Also vorweg das CodeFragment für ein Byte rausschieben
Annahme PortB 0 DATA
PortB 2 Clock
counter equ 0xnn ; irgendwo
shiftbyte equ 0xnn ; woanders, mit dem zu shiftenden Byte
SHIFTOUT
movlw 0x08 ; Counter 8 Bit
movwf counter
SHIFTLOOP
rlf shiftbyte, f
bcf PORTB, 0 ; annahme carry = 0 ( =Data = 0)
btfsc STATUS, C ; 0/ 1 ? skip, if no carry
bsf PORTB, 0 ; muss doch 1 sein ( =Data = 1)
bcf PORTB, 2 ; Clock runter
nop ; gib dem -595 ne chance, es zu bemerken
bsf PORTB, 2 ; Clock rauf, jetzt is ein Bit reingeshiftet
decfsz counter, f
b SHIFTLOOP ; weiter geht's
E_BIEN das war mal ein Byte
Wie du richtig sagst, es ist wurst, ob er irgendein Carry rechts wieder reinschiebt.
Hab' keinen Schaltplan gekriegt. Ist ein Shift für die Rows (Y) und eines für die Columns (X) ? isses so ? mfg mal robert
Anm: das Raus-Shiften zu Fuß ist beim -877 nicht unbedingt notwendig, geht aber dafür auch beim -84 so. Es ist nur deutlich langsamer, daher die Gefahr, daß die LED's flackern. Aber für's erste soll's ja mal überhaupt funktionieren, denk' ich
Lesezeichen