PIC16F84 ASM

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Danish to

Threaded View
I dokumentationen til 16F84 står forslag til
kode til PUSH og POP til anvendelse hhv
før og efter interruptet.

; *****************************************************
PUSH
 ; Gemmer vigtige registre
 movwf WBuffer   ; save w reg in Buffer
 swapf STATUS,W   ; get status to be saved into w
 movwf StatBuffer  ; move W(indholdet) til StatBuffer
 return

; *****************************************************
POP
 ; Genetablerer vigtige registre
 swapf StatBuffer,W  ; swap nibbles in Statbuffer
    ; and place result into w
 movwf STATUS   ; move indholdet in w to STATUS
 swapf WBuffer,F  ; swap nibbles in WBuffer
    ; and place it into WBuffer
 swapf WBuffer,W  ; swap nibbles in WBuffer and
    ; place it in W
 return

HVORFOR er det liiiige NIBBLES swap'es ved flytningerne ?

Mvh KS



Re: PIC16F84 ASM

hvis du andvender movf får du en ændring i Z
hvad ikke er tilfælde med swapf

det er den eneste logiske forklaring jeg kan komme på

/Carsten

Re: PIC16F84 ASM


Quoted text here. Click to load it

Det har måske noget med flag at gøre. Er der ikke noget med at en PIC sætter
Z flaget ved næsten alle instruktioner?



Re: PIC16F84 ASM
Quoted text here. Click to load it
sætter
Quoted text here. Click to load it
Aha !
 - når jeg vil 'store' en kopi af W kan jeg blot gøre

movwf WBuffer                     ; påvirker IKKE Z i STATUS

Ved 'store' af STATUS er det mere specielt:
16F84 har KUN movf til at flytte fra en adresse, men
den PÅVIRKER Z i STATUS - så må jeg finde mig i at
anvende en SWAP-instruktion, som desværre har den side-
effekt, at den swap'er nibblerne også - men det må jeg så
bare kompensere for i min 'REstore', og herved får jeg en
"troværdig" kopi af STATUS efter min 'REstore', men
indtil 'REstore' udføres er den swap'et.

 swapf STATUS,W           ; påvirker IKKE Z, men swap'er
                                         ; nibblerne '32107654'
 movwf StatBuffer             ; påvirker IKKE Z i STATUS,
                                        ; men flytter W(32107654) til
StatBuffer

Jamen, tak til jer begge - jeg tror den fes ind !

Mvh KS




Site Timeline