Buenas noches. Mi nombre es Gerardo Salazar.
Mi proyecto es el siguiente:
Es un elevador de 2 pisos y la idea es que al tocar un botón, él suba y por unos reed swich se apague, eso está programado, pero si le vuelvo a dar al botón de subir el sigue subiendo, igualmente al bajar al darle para bajar el llegaría a detenerse cuando el reed swich lo indique.
Ahora bien, a veces me funciona y a veces no me funciona.
Quisiera que alguien pudiera corregir el código para saber qué estoy haciendo mal.
Lo estoy programando con un PIC16F877 y estoy usando el puerto D porque con los demás ya tengo programado un display de 7x5 para una animación de una flecha que sube y otra que baja.
Eso esta casi resuelto, lo que persigo es:
1) Que al tocar el botón de subida o de bajada sea detenido por un reed switch conectado en el puerto.
2) Al estar al final de recorrido, si alguien toca el botón de subida que no funcione, sino el botón contrario.
Espero haberme explicado. Gracias por su tiempo.
Mi proyecto es el siguiente:
Es un elevador de 2 pisos y la idea es que al tocar un botón, él suba y por unos reed swich se apague, eso está programado, pero si le vuelvo a dar al botón de subir el sigue subiendo, igualmente al bajar al darle para bajar el llegaría a detenerse cuando el reed swich lo indique.
Ahora bien, a veces me funciona y a veces no me funciona.
Quisiera que alguien pudiera corregir el código para saber qué estoy haciendo mal.
Lo estoy programando con un PIC16F877 y estoy usando el puerto D porque con los demás ya tengo programado un display de 7x5 para una animación de una flecha que sube y otra que baja.
Eso esta casi resuelto, lo que persigo es:
1) Que al tocar el botón de subida o de bajada sea detenido por un reed switch conectado en el puerto.
2) Al estar al final de recorrido, si alguien toca el botón de subida que no funcione, sino el botón contrario.
Espero haberme explicado. Gracias por su tiempo.
PHP:
TRISD.0=0
TRISD.1=1
TRISD.2=0
TRISD.3=1
TRISD.6=0
TRISD.7=0
FLAG VAR BIT
FLAG2 VAR BIT
B0 VAR BYTE
B1 VAR BYTE
B2 VAR BYTE
B3 VAR BYTE
x var byte
clear
Main:
; Antirebote para el PushButton
BUTTON PORTD.0,0,255,0,B0,1,SUBE
BUTTON PORTD.2,0,255,0,B1,1,BAJA
BUTTON PORTD.4,0,255,0,B2,1,APAGASUBE
BUTTON PORTD.5,0,255,0,B3,1,APAGABAJA
GOTO Main
SUBE:
IF FLAG=0 and FLAG2=0 THEN
HIGH PORTD.1
FLAG=1
ELSE
FLAG=0
LOW PORTD.1
ENDIF
GOTO MAIN
BAJA:
IF FLAG2=0 and FLAG=0 THEN
HIGH PORTD.3
FLAG2=1
ELSE
FLAG2=0
LOW PORTD.3
ENDIF
GOTO Main
APAGASUBE:
IF PORTD.6=0 THEN
LOW PORTD.1
ENDIF
GOTO MAIN
APAGABAJA:
IF PORTD.7=0 THEN
LOW PORTD.3
ENDIF
GOTO MAIN
END
Última edición por un moderador: