Hola gente, necesito una mano de ustedes. No puedo encontrar el error en mi programa de un ascensor de 3 pisos con un pic 16f628a. Este es el primero que programe tan complejo y todavía me falta agregarle el Display de 7seg. Saludos cordiales y espero encontrar una solucion en este foro. Desde ya gracias.
Les dejo el programa que hice:
CMCON=7
TRISA=0
TRISB=%11100111
PORTA=0
PORTB=0
PISO VAR BYTE
CABINA VAR BYTE
PISO=0
CABINA=0
PUNO var PORTB.5 'Piso uno
PDOS var PORTB.6 'Piso dos
PTRES var PORTB.7 'Piso tres
SUNO var PORTB.0 'SENSOR piso uno
SDOS var PORTB.1 'SENSOR piso dos
STRES var PORTB.2 'SENSOR piso tres
PORTA.2=0 'MOTOR APAGADO
PORTA.1=0
INICIO:
IF SUNO=1 THEN CABINA=1 'Poniendole valor a Cabina
IF SDOS=1 THEN CABINA=2
IF STRES=1 THEN CABINA=3
IF PUNO=1 THEN GOTO UNO 'Al usar los Pulsadores
IF PDOS=1 THEN GOTO DOS
IF PTRES=1 THEN GOTO TRES
goto INICIO
UNO: 'Si llaman o quieren ir al Piso UNO
PISO=1
IF CABINA=1 AND PISO=1 THEN
GOTO PARAR
PAUSE 500
GOTO INICIO
ELSE
ENDIF
'---------
IF CABINA=2 AND PISO=1 THEN
GOTO BAJAR
PAUSE 1000
ENDIF
IF SUNO=1 THEN
GOTO PARAR
PAUSE 1000
GOTO INICIO
ELSE
ENDIF
'----------
IF CABINA=3 AND PISO=1 THEN
GOTO BAJAR
PAUSE 1000
ENDIF
IF SUNO=1 THEN
GOTO PARAR
PAUSE 1000
GOTO INICIO
ELSE
ENDIF
DOS: 'Si llaman o quieren ir al Piso DOS
PISO=2
IF CABINA=2 AND PISO=2 THEN
GOTO PARAR
GOTO INICIO
ELSE
ENDIF
'----------
IF CABINA=1 AND PISO=2 THEN
GOTO SUBIR
PAUSE 1000
ENDIF
IF SUNO=1 THEN
GOTO PARAR
PAUSE 1000
GOTO INICIO
ELSE
ENDIF
'-----------
IF CABINA=3 AND PISO=2 THEN
GOTO BAJAR
PAUSE 1000
ENDIF
IF SUNO=1 THEN
GOTO PARAR
PAUSE 1000
GOTO INICIO
ELSE
ENDIF
TRES: 'Si llaman o quieren ir al Piso TRES
PISO=3
IF CABINA=3 AND PISO=3 THEN
GOTO PARAR
GOTO INICIO
ELSE
ENDIF
'-------
IF CABINA=2 AND PISO=3 THEN
GOTO SUBIR
PAUSE 1000
ENDIF
IF SUNO=1 THEN
GOTO PARAR
PAUSE 1000
GOTO INICIO
ELSE
ENDIF
'--------
IF CABINA=1 AND PISO=3 THEN
GOTO SUBIR
PAUSE 1000
ENDIF
IF SUNO=1 THEN
GOTO PARAR
PAUSE 1000
GOTO INICIO
ELSE
ENDIF
SUBIR:
PORTA.2=0
PORTA.1=1
goto inicio
BAJAR:
PORTA.2=1
PORTA.1=0
goto inicio
PARAR:
PORTA.2=1
PORTA.1=1
piso=0
goto inicio
end
Aca les dejo el circuito en Proteus: