PIC16: Sätta/rensa en bit beroende på carry

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

PIC16: Sätta/rensa en bit beroende på carry

Inlägg av bos »

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?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16: Sätta/rensa en bit beroende på carry

Inlägg av sodjan »

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 ?
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: PIC16: Sätta/rensa en bit beroende på carry

Inlägg av v-g »

Tex:

Kod: Markera allt

BSF RB3		;Sätt RB3
BTFSS STATUS, C	;Om Carry
	BCF RB3	;Rensa RB3
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16: Sätta/rensa en bit beroende på carry

Inlägg av sodjan »

Ja, det är OK *om* det är OK med en liten "glitch" på RB3...
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: PIC16: Sätta/rensa en bit beroende på carry

Inlägg av vfr »

Kod: Markera allt

BTFSC STATUS, C   ;Om inte Carry
BSF RB3      ;Sätt RB3
BTFSS STATUS, C   ;Om Carry
   BCF RB3   ;Rensa RB3
Så blir det ingen glitch.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: PIC16: Sätta/rensa en bit beroende på carry

Inlägg av bos »

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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16: Sätta/rensa en bit beroende på carry

Inlägg av sodjan »

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... :-)
Skriv svar