Tengo problemas con btfss y btfsc

#1
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.
 
#2
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
 
#3
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.
 
#4
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

Última edición por un moderador:
#5
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".
 
#6
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)
 
#7
colocar el include <p16f877> ; procesador utilizado

las definiciones del ucontrolador

tambien

list P=16F877 : procesador que utilizes
 
Última edición por un moderador:
#8
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:
#9
¿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:
Arriba