Hola. Saludos a todos. Apenas es mi primer post y me doy la bienvenida con un problemita...
Estoy usando un pic16f84 y no sé cómo programar una idea que tengo.
Estoy configurando RA0-RA3 como entradas y RB0-RB7 como salidas.
Pero quiero que RB0-RB3 comiencen estando encendidas y que dependiendo de lo que yo haga con mis entradas, estos valores cambien.
ESTADO EQU 03h
PORTA EQU 05h
TRISA EQU 05h
PORTB EQU 06h
TRISB EQU 06h
org 00h
bsf ESTADO,5;
bcf TRISB,0;
bcf TRISB,1;
bcf TRISB,2;
bcf TRISB,3;
bcf TRISB,4;
bcf TRISB,5;
bcf TRISB,6;
bcf TRISB,7;
bsf TRISA,0;
bsf TRISA,1;
bsf TRISA,2;
bsf TRISA,3;
bcf ESTADO,5;
INICIO bsf PORTB,0;
bsf PORTB,1;
bsf PORTB,2;
bsf PORTB,3;
Listo. Hasta ahí todo bien.
Ahora quiero que si mi entrada RA0 se activa (conectandole RB0), me desactive RB1, RB2, RB3; y que active a RB4.
Entonces lo hago así:
Disp1 btfsc PORTA,0;
goto ESUNO;
goto ESCERO;
goto Disp1;
ESUNO bsf PORTB,4;
bcf PORTB,1;
bcf PORTB,2;
bcf PORTB,3;
goto Disp1;
ESCERO bcf PORTB,4;
bsf PORTB,1;
bsf PORTB,2;
bsf PORTB,3;
goto Disp1;
Y funciona.
Peeeeeeeero.... mi problema es el siguiente...
Quiero que también haga algo similar si en lugar de activar RA0, activo RA1. Osea que me desactive RB0, RB2 y RB3 y que active RA5.
Lo hago de la misma manera que la parte anterior:
Disp2 btfsc PORTA,1;
goto ESUNO2;
goto ESCERO2
goto Disp2;
ESUNO2 bsf PORTB,5;
bcf PORTB,0;
bcf PORTB,2;
bcf PORTB,3;
goto Disp2;
ESCERO2 bcf PORTB,5;
bsf PORTB,0;
bsf PORTB,2;
bsf PORTB,3;
goto Disp2;
end
Pero aquí ya no funciona... Lo he simulado y no me toma en cuenta a "Disp2", como si el programa terminara en Disp1.
Y tengo que hacer operaciones similares hasta llegar a Disp9...
¿Qué es lo que estoy haciendo mal? Estoy seguro de que es algo muy simple, pero soy principiante en esto... Espero que alguien me pueda ayudar. Ya me desespereee
Estoy usando un pic16f84 y no sé cómo programar una idea que tengo.
Estoy configurando RA0-RA3 como entradas y RB0-RB7 como salidas.
Pero quiero que RB0-RB3 comiencen estando encendidas y que dependiendo de lo que yo haga con mis entradas, estos valores cambien.
ESTADO EQU 03h
PORTA EQU 05h
TRISA EQU 05h
PORTB EQU 06h
TRISB EQU 06h
org 00h
bsf ESTADO,5;
bcf TRISB,0;
bcf TRISB,1;
bcf TRISB,2;
bcf TRISB,3;
bcf TRISB,4;
bcf TRISB,5;
bcf TRISB,6;
bcf TRISB,7;
bsf TRISA,0;
bsf TRISA,1;
bsf TRISA,2;
bsf TRISA,3;
bcf ESTADO,5;
INICIO bsf PORTB,0;
bsf PORTB,1;
bsf PORTB,2;
bsf PORTB,3;
Listo. Hasta ahí todo bien.
Ahora quiero que si mi entrada RA0 se activa (conectandole RB0), me desactive RB1, RB2, RB3; y que active a RB4.
Entonces lo hago así:
Disp1 btfsc PORTA,0;
goto ESUNO;
goto ESCERO;
goto Disp1;
ESUNO bsf PORTB,4;
bcf PORTB,1;
bcf PORTB,2;
bcf PORTB,3;
goto Disp1;
ESCERO bcf PORTB,4;
bsf PORTB,1;
bsf PORTB,2;
bsf PORTB,3;
goto Disp1;
Y funciona.
Peeeeeeeero.... mi problema es el siguiente...
Quiero que también haga algo similar si en lugar de activar RA0, activo RA1. Osea que me desactive RB0, RB2 y RB3 y que active RA5.
Lo hago de la misma manera que la parte anterior:
Disp2 btfsc PORTA,1;
goto ESUNO2;
goto ESCERO2
goto Disp2;
ESUNO2 bsf PORTB,5;
bcf PORTB,0;
bcf PORTB,2;
bcf PORTB,3;
goto Disp2;
ESCERO2 bcf PORTB,5;
bsf PORTB,0;
bsf PORTB,2;
bsf PORTB,3;
goto Disp2;
end
Pero aquí ya no funciona... Lo he simulado y no me toma en cuenta a "Disp2", como si el programa terminara en Disp1.
Y tengo que hacer operaciones similares hasta llegar a Disp9...
¿Qué es lo que estoy haciendo mal? Estoy seguro de que es algo muy simple, pero soy principiante en esto... Espero que alguien me pueda ayudar. Ya me desespereee