Buenas. Entré por acá revisando sus entradas antes de escribirles.
Llevo un buen rato practicando e intentando hacer lo que se me ocurre y me encontré con un problema.
El programa no compila correctamente y el funcionamiento esperado no es el conseguido.
Al apretar los botones los LEDS finales no encienden de la manera que quiero.
Aquí pondré lo que me propuse realizar ( He ido avanzando desde 0 haciendo rutinas de LEDS y es por donde voy usando el mismo programa base )
El programa es el siguiente:
a) Utilizar el puerto B para rutinas de LEDS iniciales
b) Utilizar el puerto D para la parte de POTENCIA
1) Un LED azul se mantiene encendido durante todo el proceso. Él indica que el sistema está activo.
2) Un LED amarillo estará intermitente mientras transcurre un tiempo de espera.
3) Se encenderá un LED verde de aprobación.
4) Se encenderá un LED azul ( POT ON ) indicando que la parte de potencia puede ser activada.
5) Mediante un botón controlar cual de los dos LEDS Verdes será encendido. (simulando Izquierda y Derecha de un motor DC a través del PIC)
El código que hice es éste:
PHP:
#include <16f877a.h> // PIC a usar
#fuses hs, nowdt
#use delay(clock=20M) // Frecuencia de 20Mhz
int16 timer;
void main()
{
set_tris_b(0b00000000); // Puerto B es salida
set_tris_d(0b11110000); // Puerto D 0-3 son salida y 4-7 son entrada
output_b(0b00000001); // LED que muestra encendido del dispositivo
output_d(0b00000000); //Puerto comienza en 0 lógico
timer=0;
{
while (timer<5){ //Inicio de rutina
timer=timer+1;
output_b(0b01000001);
delay_ms(500);
output_b(0b00000001);
delay_ms(500);
} // Fin de la rutina
output_b(0b10000001); // Enciende LED de aprobación
delay_ms(1000); // Tiempo de espera para parte de potencia
output_d(0b00000001); // Enciende LED de activación 2
}
if (input(pin_d7)); // Entrada para LED 1 mediante botón
output_d(0b00000101);
if (input(pin_d6)); // Entrada para LED 2 mediante Botón
output_d(0b00001001);
}
* Al usar ELSE después del if ( Quise mantenerlo activo y con el botón solo cambiar la dirección, en un comienzo) me daba otro error: Esperaba una expresión numérica. ¿?
*Luego quiero agregarle al problema un sensor de nivel y necesitare leer las variables, por eso también me resulta imprescindible lograr esto.
Si de alguna manera me pueden ayudar a entender este meollo, les agradecería.
Gracias, saludos y espero lograr pronto mis objetivos para compartirlos por acá para otros que tengan las mismas inquietudes que yo.
Esquema Electrónico en Proteus 8 adjunto con este mensaje.
NOTA: Tengo muchas dudas sobre el esquema eléctrico con los botones y las fuentes.
Intento usar unas flechitas y no tener que usar Vsource pero las pongo y no me hacen nada, es otra duda que me sale así.