Vai al contenuto
PLC Forum


If Endif


kucaio

Messaggi consigliati

Salve a tutti ho un piccolo problema nel seguente ciclo

 

movlw posizione_cursore;carico l'indirizzo della variabile in WREG
movwf FSR;trasmetto l'indirizzo al puntatore

if INDF == 0x41
 btfsc configurazione,0
 bcf configurazione,0
 btfss configurazione,0
 bsf configurazione,0

endif

Il problema è che il programma non entra all'interno del ciclo if anche se il valore della variabile posizione_cursore = 0x41. per fare la prova del 9 di quanto appena asserito ho anche scritto questo codice:
 

movlw posizione_cursore;carico l'indirizzo della variabile in WREG
movwf FSR;trasmetto l'indirizzo al puntatore
movlw 0x41;carico il valore 0x41 in WREG
movwf INDF; trasferisco per sicurezza il valore nella variabile  posizione_cursore ;vedo dalla watch table cambiare il valore della variabile e portarsi a 0x41

if INDF == 0x41
 btfsc configurazione,0
 bcf configurazione,0
 btfss configurazione,0
 bsf configurazione,0

endif

il pic è un P16F877A.

Inoltre dato che ci sono, vi chiedo se vi sono altri metodi per comparare due valori, presenti all'interno della varibili...

Saluti a tutti e grazie mille.

Link al commento
Condividi su altri siti


c'è un equivoco.

In assembly la direttiva IF --- ENDIF non testa il valore runtime di una variabile ma il valore di una costante al tempo dell'assemblaggio. Serve per esempio per generare del codice solo su certe condizioni che si predefiniscono con uno statement in testa senza dover muovere il codice qua e là, od altri trucchi più sofisticati.

Se devi testare il valore 41h presente in una cella di memoria si fa così:

movfw cella

xorlw 41h,w ; dove w=0 destination working reg

btfsc status,z_ ;status e z_ predefiniti

goto devevaperuguale ;else segue

....

Link al commento
Condividi su altri siti

modifica il programma adessp è testao e funzionate, grazie.

l'unica cosa è che sul manuale della microchip DS33014J (Mlab) ci sono degli esempi con l'utilizzo del ciclo if else endif, non ne riesco a comprendere la possibilità di utilizzo....

ciao.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...