#include <16f84a.h>
#fuses nowdt,hs,noprotect,NOPUT
#use delay(clock = 20M)
#use standard_io(b)
#use standard_io(a)
int8 A=0;
void main ()
{
set_tris_a(01111);
set_tris_b(0xff);
output_low(pin_b0);
output_low(pin_b1);
while(true)
{
A=0;
if (input(pin_a2)==0 )
{ // se testea los finales de carrera
if (input(pin_a3)==0 )
{
while(A<1)
{ // comienzo del while
A=0;
if(input(pin_a2)==1)
{ // ACCION DEL FIN DE CARRERA
delay_ms(100);
if(input(pin_a2)==1)
{
output_low(pin_b1);
output_low(pin_b0);
A=A+2;
}
}
if(input(pin_a3)==1)
{ // ACCION DEL FIN DE CARRERA
delay_ms(100);
if(input(pin_a3)==1)
{
output_low(pin_b0);
output_low(pin_b1);
A=A+2;
}
}
if (input(pin_a0)==1)
{ // si se preciona el primer boton (abrir)
delay_ms(40);
if(input(pin_a0)==0) {
output_low(pin_b1);
delay_ms(1500);
output_high(pin_b0);
}
}
if (input(pin_a1)==1)
{ // si se preciona el otro boton (cerrar)
delay_ms(40);
if(input(pin_a1)==0)
{
output_low(pin_b0);
delay_ms(1500);
output_high(pin_b1);
}
}
}
}
}
A=0;
if (input(pin_a2)==1 ) { // se testea los finales de carrera abierto completo
if (input(pin_a3)==0 ) { // esto para que no sigua abriendo
if (input(pin_a1)==1){
delay_ms(40);
if(input(pin_a1)==0) {
output_low(pin_b0);
delay_ms(80);
output_high(pin_b1);
}
}
}
}
if (input(pin_a3)==1 ) { // se testea los finales de carrera cerrado completo
if (input(pin_a2)==0 ) { // esto para que no sigua cerrando
if (input(pin_a0)==1){
delay_ms(40);
if(input(pin_a0)==0) {
output_low(pin_b1);
delay_ms(80);
output_high(pin_b0);
}
}
}
}
}// fin del while del pricipio (infinito)
}// fin del void main