Tengo problemas con btfss y btfsc

soy nuevo con los pic y tengo ciertas dudas con las instrucciones btfss y btfsc.

realice un pequeño programa para verificar el estado de un bit del PORTA,0 y dependiendo del estado del Rao genero una resp en PORTB.

si Rao Rbo
0 0
1 1

INICIO
btfss PORTA,0
goto cero
goto uno

cero
movlw 0x00
movwf PORTB,0
goto INICIO

uno
movlw 0x01
movwf PORTB,0
goto INICIO

END

estuve trabajandolo en mplab y la simulacion me da muy bien, pero si lo monto en proteus no me funciona, si inicio la simulacion con Rao = 0 me muestra Rbo =0 pero no cambia al colocar un uno en Rao. de manera similar si inicio la simulacion con Ra0 =1 me muestra Rbo=1 pero si cambio a Rao =0 el Rbo se mantiene en Rbo=1.

agradeceria cualquier ayuda que me puedan prestar. muchas gracias.
 
hola
No has puesto las cabeceras donde se configuran las entradas ni las salidas.
la instruccion "movwf PORTB,0" cambiala por "movwf PORTB" o bien
bcf PORTB,0 o bsf PORTB,0
 
Tienes razón no puse las cabeceras del programa aquí pero si las coloque en el programa que estoy montando. voy a probar tu recomendación y cualquier cosa publico el programa completo, gracias por tu respuesta.
 
Código:
;=======================prog01.asm===============

list p=pic que vas a manipular
status equ 03h ;
portA equ 05h ;
portB equ 06h ;

org 0
goto inicio
org 5

inicio bsf status, 5 ;
movlw 0xff ;
movwf portA ;
;
movlw 0x19
movwf portB ;
;
bcf status,5 ;
;
ciclo movwf portA ;
;
addlw 5 ;
movwf portB ;
;
;
goto ciclo
end

pd
tambien puedes usar movlw b'1111', movlw d'13', movlw b'100000' y movlw 0x13
 

Adjuntos

  • circuitopuntobat.jpg
    circuitopuntobat.jpg
    65.6 KB · Visitas: 8
Última edición por un moderador:
Has puesto de casualidad una resistencia "pull down" en tu entrada en Proteus??? luego se pone roñoso el señor y, al menos a yo, si tengo que ponerle una resistencia pull down en la entrada digital, (eso es con respecto al hardware), si pones el codigo completo, podriamos ayudarte un poco mas con el "software".
 
estimado/a MrAlphonse como podeís ver el código ya está escrito y/o completo(hasta coloqué unas opciones en un pd) :LOL: por tal motivo lo único que voz teneís que llevar a cabo es el ensamblaje del circuito, ya depende de voz si lo quereís simular en proteus pspice etc...

pd
lo bueno es que ¡este código no requiere resistencias pull-down o las que voz nombraís en tu comentario. espero que te ayude SALUDOS (y)
 
colocar el include <p16f877> ; procesador utilizado

las definiciones del ucontrolador

tambien

list P=16F877 : procesador que utilizes
 
Última edición por un moderador:
Estimado/a micropicalcubo, el codigo que escribiste puede o no funcionar, no lo se, el chaval solo quiere comprobar el suyo, no que le des uno ya resuelto, y saber por que no funciona su codigo en PROTEUS y una de las razones por las que no funciona muchas veces es por que: no se limpian los puertos al iniciar el programa con solo unos

CLRF PORTA
CLRF PORTB
y cuantos puertos tenga el controlador.

Claro esta, esto despues de haber declarado las entradas y salidas, y se hace una sola vez en todo el programa.

Y la otra, es por que muchas veces el controlador necesita tener en sus entradas digitales una "referencia" y para eso se utiliza la resistencia PULL DOWN o PULL UP, en este caso, la PULL DOWN.
 
Última edición:
¿No será error del proteus? A_mi me ha pasado que por ejemplo en un lcd al presionar un botón en el lcd tiene que aparaecer bass on y prender un led, y sucede que en el lcd no aparece el mensaje en la posición que quiero, y para colmo el led que debbía prender no prende, eso es lo que a_mi me ha pasado.
 
Última edición por un moderador:
Atrás
Arriba