mpasm fråga

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

mpasm fråga

Inlägg av Bosen »

Jag vill ändra status på en bit.... men för enkelhetens skull säger vi såhär:
Jag vill blinka med en led som sitter på RB1. men jag vill inte att dom andra pinnarna på porten påverkas.
detta är vad jag vill uppnå:

Kod: Markera allt

if RB1=true then RB1=false
else RB1=true
Innan har jag löst det ungefär såhär:

Kod: Markera allt

btfss  portb, 1
goto  1
bcf    portb, 1
goto  2
1    bsf portb, 1
2    
om man skall ändra status på hela porten så kan man ju använda comf
...men finns det något kommando man kan annvända för att bara ändra status på en pinne?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: mpasm fråga

Inlägg av Icecap »

XOR!

00000000 XOR 00010000 = 00010000

Om du använder XORWF kan du uppnå detta på ett enkelt sätt.

MOVLW b'00000001' ; Vilken (vilka...) bit som ska växlas
XORWF PORTA, F ; Växla bit-läget på alla som W har '1' på

Detta växlar läge på PORTA bit 0
Senast redigerad av Icecap 21 februari 2009, 12:00:49, redigerad totalt 1 gång.
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Re: mpasm fråga

Inlägg av Bosen »

tackar...... ska läsa vidare på XORF
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: mpasm fråga

Inlägg av vfr »

Se bara till att du inte har några andra bitar på port A som ingångar, annars får du problem med RMW (Read-Modify-Write). Det är alltid säkrare att ha utgångsstatus liggande i ett RAM-register och sedan "skugga" det ut till det riktiga registret. Ingen kritik alls, bara ett tips...
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: mpasm fråga

Inlägg av Icecap »

Nja... på en PIC18 kan man ju använda LAT-registret och är en portpinne ingång kan det väl knappast påverka. Kanske om pull-up beror på "utgångens" läge kan det vara ett problem men det skulle vara det hela.
Användarvisningsbild
JockeE
Inlägg: 330
Blev medlem: 4 augusti 2004, 08:46:50

Re: mpasm fråga

Inlägg av JockeE »

Bosen nämner inte vilken PIC han använder, men om det är PIC18 så finns instruktionen BTG för att växla en bit.

Angående problemet (?) som vfr tar upp. Det spelar väl endast roll om man har en ingång som senare sätts till utgång, utan att först verifiera läget på utgången.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: mpasm fråga

Inlägg av vfr »

Det är iofs riktigt. En bit som är definierad som ingång permanent kvittar ju hur den är satt som utgång. Men det är också lätt att missta sig. T.ex analogingångarna som läses som 0 om dom inte är deaktiverade. Är då pinnen satt som utgång så kan det bli lite oväntade resultat. :)

Fast just i det här fallet var kanske inte risken så stor som jag lät göra sken av. Om man däremot växlar en pinne mellan ingång och utgång, för att t.ex köra den som "open collector"-utgång, så kan man absolut få problem. Bättre att vara medveten om problemen innan dom infräffar.
Skriv svar