PIC16: Sätta/rensa en bit beroende på carry
PIC16: Sätta/rensa en bit beroende på carry
Jag gör ett antal taloperationer (skift, bland annat) i en applikation, och jag vill låta RB3 få det värde som carry har efter varje operation.
Finns det något sätt att direkt kopiera carry till RB3 (eller generellt sett, till en annan bit) utan att behöva använda btfsc/btfss?
Finns det något sätt att direkt kopiera carry till RB3 (eller generellt sett, till en annan bit) utan att behöva använda btfsc/btfss?
Re: PIC16: Sätta/rensa en bit beroende på carry
Om biten man vill kopiera råkar ha samma bit-position kan man använda
en kombination av AND och OR för att, så att säga, kopiera biten mellan
två register. Men den generella metoden är en liten kombination av
bit-tester och BCF/BSF. Men vad är problemet med BTFSS/BTFSC ?
en kombination av AND och OR för att, så att säga, kopiera biten mellan
två register. Men den generella metoden är en liten kombination av
bit-tester och BCF/BSF. Men vad är problemet med BTFSS/BTFSC ?
Re: PIC16: Sätta/rensa en bit beroende på carry
Tex:
Kod: Markera allt
BSF RB3 ;Sätt RB3
BTFSS STATUS, C ;Om Carry
BCF RB3 ;Rensa RB3
Re: PIC16: Sätta/rensa en bit beroende på carry
Ja, det är OK *om* det är OK med en liten "glitch" på RB3...
Re: PIC16: Sätta/rensa en bit beroende på carry
Kod: Markera allt
BTFSC STATUS, C ;Om inte Carry
BSF RB3 ;Sätt RB3
BTFSS STATUS, C ;Om Carry
BCF RB3 ;Rensa RB3
Re: PIC16: Sätta/rensa en bit beroende på carry
sodjan: Det är förstås inget egentligt problem med btfsc/btfss. Jag sitter och mikrooptimerar en loop där timingen är av yttersta vikt, så jag måste tänka utanför ramarna för att lösa vissa saker. När jag kom till situationen att carry ska förflyttas till RB3 på enklast möjliga vis så uppstod frågan om man kan kopiera en bit "rakt över" utan att behöva testa den först.
Re: PIC16: Sätta/rensa en bit beroende på carry
OK, och svaret är att det inte finns något enskilt kommando som gör det.
Men det är ju lätt att kolla, det är ju bara knappt 40 kommandon totalt...
Men det är ju lätt att kolla, det är ju bara knappt 40 kommandon totalt...
