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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.