pic programering - BTFSS

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
rotsom
Inlägg: 1
Blev medlem: 24 januari 2008, 12:05:30
Ort: umeå

pic programering - BTFSS

Inlägg av rotsom »

Hej alla kunniga.
Sitter och försöker förstå hur denna snutt med kod fungerar:

movf 0x0c,0
subwf 0x0d,0
btfss 3,0
call subrutin
...mer kod

Förstår allt utom vad som händer i btfss.
Vad jag har kunnat läsa mig till så är btfss 3,0 det samma som btfss status, "bit 0"

Är det någon som kan förklara lite enkelt vad som händer?

//R
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Hela den där snutten är ren skit-kod !

Den borde ha sett ut så här :

Kod: Markera allt

   <två RES för att allokera två register, här kallade REG1, REG2>

   movf  REG1, W
   subwf REG2, W
   btfss STATUS, C
   call  subrutin
   ...mer kod 
Nu borde det vara uppenbart vad som händer, eller hur ?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

BTFSS läsas som "Bit Test Flag, Skip next instruction if Set"

Alltså: om den utpekade flaggan är '1' ska nästa instruktion hoppas över.

Och i detta exempel:
Hoppa över "call subrutin" om Carry-flaggan i Status-registret är '1'.

"btfss 3,0" pekar ut byten på adress 3, bit 0 vilket är avsevärd enklare att tyda på sättet som sodjan skriver det vilket är anledningen till att man ALLTID ska göra på det vis.

Edit: och "BTFSC" kollar på samma vis men då om den utpekade bit är '0'.
Skriv svar