Sida 1 av 1
PIC16: Sätta/rensa en bit beroende på carry
Postat: 24 juni 2010, 22:36:34
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?
Re: PIC16: Sätta/rensa en bit beroende på carry
Postat: 24 juni 2010, 22:40:20
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 ?
Re: PIC16: Sätta/rensa en bit beroende på carry
Postat: 24 juni 2010, 23:03:25
av v-g
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
Postat: 25 juni 2010, 12:35:21
av sodjan
Ja, det är OK *om* det är OK med en liten "glitch" på RB3...
Re: PIC16: Sätta/rensa en bit beroende på carry
Postat: 25 juni 2010, 12:44:41
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.
Re: PIC16: Sätta/rensa en bit beroende på carry
Postat: 25 juni 2010, 12:49:17
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.
Re: PIC16: Sätta/rensa en bit beroende på carry
Postat: 25 juni 2010, 12:53:00
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...
