För det första...
Det är omöjligt att säga något vettigt om du håller inne med din kod. Du får lätta lite på dimmorna och visa vad du håller på med.
Pacman> Hur brukar man göra om man t.ex. vill hoppa till <label> om W=0?
Har du kollat BTFSC/BTFSS ?
På något sätt måste W ha blivit = h'00', och antagligen sattes W flaggan då, och i så fall (mycket gissningar här, men det blir det utan kod exempel), så blir det något i stil med :
Kod: Markera allt
movf reg1, w
btfsc status,w
goto <label>
<fortsätt med något annat...>
Angeånde bank-bitarna (RP0/RP1):
Pacman> så måste jag alltså ange det i STATUS-registret, stämmer det?
Du behöver läsa igenom manualen till MPASM (33014h). Kolla speciellt BANKSEL (sidan 60). Och sidan om "Data Memory Organization" i databladet.
Pacman> Tycker att kompilatorn borde protestera när jag försöker skriva till ett register i en annan bank än den som är vald,
strombom> ...men visst, den kanske kunde ha varnat...
Den (MPASM) kan inte veta det, så det går inte...
Pacman> ...faktiskt ger ett meddelande om det, men det blir inget error. "Register in operand not in bank 0. Ensure that bank bits are correct.".
Rätt, det är en *varning*, därför att MPASM inte kan vara säker på att det är ett *fel* . Det är en uppmaning till dig att kolla att RP-bitarna är korrekt satta (enklast är alltså att använda BANKSEL direktivet).
Sen är det en annan sak att man ju kan göra motsatt fel, ha bankbitarna satta till någon annan bank en bank0, och försöka accessa en FSR i bank0, men då får man inngen varning...
