Problem bitweiser vergleich PIC ASM

Gast #1797992
Lesenswert?

Servus

bräuchte mal kurz hilfe, vielleicht fällt einem eine elegante lösung 
ein:
uC PIC in assembler

ich lese in meinem projekt unter anderem meine ports ein, und habe immer 
2 pins mit entgegengesetzem pegel, ich möchte überprüfen, ob das immer 
der fall ist oder ob ein fehler vorliegt und dementsprechend leds 
setzen.

led setzen aber nur pro pärchen ob defekt und das nur wenn mindestens 2 
mal oder öfter dieser fehler hintereinander  beim selbem pärchen 
auftritt.

für jeden möglichen fall jeweils eine abfrage mit abspeicherung zu 
machen finde ich sehr unelegant aufwendig und vorallem verbraucht es 
sicher zu viele ressourcen...

hat jemand eine idee oder kann er mir in assembler schreiben wie es 
aussehen müsste? wären portb also 8 pins, also 4 pärchen.

Ich danke schonmal im vorraus, vielleicht weiß jemand eine elegante und 
kurze lösung
Gast #1798179
Lesenswert?

wäre das demnach so richtig? wie muss die fehlerausgabe dann sein?

[code]
sigveri
    rrf altshift,f      ; rightshift in f
    movfw alt           ;
    xorwf altshift,f    ; exclusiv-oder in f
    rrf neushift,f      ; rightshift in f
    skpz                ; skip if zero
    incf fehler         ; increment fehler
    movfw neu           ;
    xorwf shiftfehler,f ; exclusiv-oder in f
    skpz                ; skip if zero
    incf shiftfehler    ; increment fehler
    btfss shiftfehler,1 ; wenn fehler = 2
    b  fehler
    clrf shiftfehler  ; clear fehler
    b   sigend
;---------------------------
fehler  btfsc
    bsf LED_A_Fehler
    btfsc
    bsf LED_B_Fehler
    btfsc
    bsf LED_C_Fehler
    b  sigend
Persönliche Seite #1799214
Lesenswert?

war ein irrtum, rotieren geht doch und das Carry ist egal, da nur die 
geraden Bits vergelichen werden:

[code]

rrf   PortB, w    ;rotiere Port B nach rechts in W
movwf mirror      ;und speichere ab
comf  PortB, w    ;lade PortB invertiert nach W
xorf  mirror, w   ;vergleiche
andlw b'00010101  ;maskiere bit 0,2,4
bnz  fehler       ;wenn bit 0 oder bit 2 oder  bit 4 = 1 -> fehler
goto weitergehts

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