Sida 1 av 1

pic programering - BTFSS

Postat: 24 januari 2008, 12:17:57
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

Postat: 24 januari 2008, 12:44:57
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 ?

Postat: 24 januari 2008, 13:54:05
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'.