# Problema con la estructura if-endif



## quino22 (Jul 23, 2009)

hola,como estan,tengo un problema en assembler.lo que pasa es que la estructura siguiente no me funciona:

                                                                 movlw  01h
                                                                 movwf  caracter
                                                                 if    caracter==01h
                                                                 goto   cuenta
                                                                 endif

no entra dentro de la estructura para ejecutar goto cuenta y no se cual es el problema!no me hace la comparacion,simplemente saltea la instruccion.me podrian ayudar?probe de todo y no funciona


----------



## wacalo (Jul 23, 2009)

Hola: No se de que ensamblador estamos hablando, de cualquier manera me parece medio "raro" que tengas un goto dentro de un if...endif, porque eso haría saltar la ejecución a algún punto del programa y quedaría el endif "esperando".
Para probar te sugeriría que coloques dentro del if...endif alguna otra instrucción.


----------



## quino22 (Jul 23, 2009)

estoy programando en assembler.yo tengo el registro caracter en la direccion 20h de un 16F876.ahora en la comparacion al ponerle el valor 20h,si entra dentro de la estructura.se ve que lo que compara el la direccion y no el valor del registro,no entiendo porque me hace eso.no toma en cuenta el 01h,simplemente hace la comparacion del registro en la direccion que esta.no se que pasa.me podrias pasar un ejemplo?este es el codigo modificado

movlw 01h 
movwf caracter 
if caracter==20h 
goto   cuenta
endif


----------



## mabauti (Jul 23, 2009)

AFAIK if y endif se utilizan solo dentro de las directivas del MPLab y no son instrucciones propias del uC. Descargate la hoja de datos para mas información


----------



## quino22 (Jul 23, 2009)

gracias ahora voy a leer el datasheet


----------



## Elvic (Nov 14, 2009)

saludos  pues aprovechando este tema quiero pedirles ayuda para resolver esto
resulta que estoy haciendo un código para que con el PIC16f84a me genere un tren de pulso en el pin RB3 pero requiero que la frecuencia cambie al darle un mandar por el puerto A un valor X.

bien este e sel código que tengo:


```
include"p16f84a.inc"
    org h'00'
Regt5 Equ h'10';
Regt6 Equ h'1F';
Regt7 Equ h'11';
;****************************
; Configura puertos  
    bsf STATUS,5;    
    clrf TRISB;
    movlw h'1f';
    movwf TRISA; 
    bcf STATUS,5;
    bsf PORTB,3;
;***************************    



;***************************
programa principal

in  bsf PORTB,3;      pone RB3 en nivel alto
    call espera16us;  aquí debo cambiar las esperas de 16us , 20us y 25us
    bcf PORTB,3;
    call espera16us; lo mismo cambiar las  esperas para cambiar la f de salida 
    bcf PORTB,3;     regresa RB3 a nivel bajo
    endif;
    goto in;             repite el ciclo para generan el tren de pulsos
;***************************
; para distintas frecuencias
espera16us movlw h'03'; Para 30kHz
    movwf Regt6;
dec decfsz Regt6,1;
    goto dec;
    retlw h'00';
espera20us movlw h'04'; Para 25Khz
    movwf Regt5;
decr decfsz Regt5,1;
    goto decr;
    return;
espera25us movlw h'06'; Para 20kHz
    movwf Regt7;
dect decfsz Regt7,1;
    goto dect;
    return;
```
Espero me pueden ayudar con esto; muchas garcías


----------

