'-----------------------PROYECTO ASCENSOR 5 PLANTAS-----------------------------
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 4
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 5
ADCON1 = %0110
I Var Byte
TRISC = 0
PORTC = 0
'-----------Constantes para definir en que piso se encuentra (llamada)----------
Uno CON %00000110
Dos CON %01011011
Tres CON %01001111
Cuatro CON %01100110
Cinco CON %01101101
'-------------------------PULSADORES ACCIONADOS POR CABINA----------------------
piso1 var porta.4
piso2 var porta.3
piso3 var porta.2
piso4 var porta.1
piso5 var porta.0
'------------------------------PULSADORES DE LLAMADA----------------------------
llama1 var portb.4
llama2 var portb.3
llama3 var portb.2
llama4 var portb.1
llama5 var portb.0
'------------------------------PULSADORES DE LLEGADA----------------------------
LLEGADA1 VAR PORTE.0
LLEGADA2 VAR PORTE.1
LLEGADA3 VAR PORTE.2
'--------------------------------SALIDAS DE MOTOR-------------------------------
bajar var portb.5
subir var portb.6
PAUSE 200
Lcdout $fe, 1 'Limpia la pantalla
lcdout $fe,2,"ASCENSOR 3 PISOS"
pause 2000
LCDOUT $fe,1
PORTC = uno 'empesamos por el primer piso
i = 1
lcdout $fe,2,"ESTADO ="
lcdout $fe,$c2,"PISO =",dec i 'aparece en el display y LCD
'************************************************* *********
inicio:
if i = 1 then PORTC = uno
if i = 2 then PORTC = dos
if i = 3 then PORTC = tres
if piso1 = 0 then pisouno
if piso2 = 0 then pisodos
if piso3 = 0 then pisotres
if LLEGADA1 = 0 then pisouno1
if LLEGADA2 = 0 then pisodos2
if LLEGADA3 = 0 then pisotres3
goto inicio
'************************************************* *********
pisouno:
if piso1 = 0 and PORTC != uno then
i = 1 : gosub subeA : portc = i : gosub lcd
endif
goto inicio
'************************************************* *********
pisodos:
if piso2 = 0 and portc != dos then
i = 2 : gosub subeA : portc = i : gosub lcd
endif
goto inicio
'************************************************* *********
pisotres:
if piso3 = 0 and portc != tres then
i = 3 : gosub subeA : portc = i : gosub lcd
endif
goto inicio
'************************************************* *********
[COLOR="Red"]este codigo hay que modificar para que cumpla las llamadas de los pisos... aki tengo el problema-.....[/COLOR]
pisouno1:
if LLEGADA1 = 0 gosub bajaA
endif
goto inicio
pisodos2:
if LLEGADA2 = 0 and PORTC != DOS then
i = 2 : gosub bajaA : portc = i : gosub lcd
endif
goto inicio
pisotres3:
if LLEGADA3 = 0 and PORTC != Tres then
i = 3 : gosub bajaA : portc = i : gosub lcd
endif
goto inicio
'************************************************* *********
lcd:
lcdout $fe,$c2,"PISO = ",dec i
return
'************************************************* *********
bajaA:
high bajar
pause 1000
low bajar
RETURN
'************************************************* *********
subeA:
high subir
pause 1000
low subir
RETUrn