Problema con la estructura if-endif

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
 
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.
 
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
 
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
 
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:

Código:
   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
 
Última edición:
Atrás
Arriba