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
pic programering - BTFSS
Hela den där snutten är ren skit-kod !
Den borde ha sett ut så här :
Nu borde det vara uppenbart vad som händer, eller hur ?
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
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'.
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'.