ERROR CON IMPLEMENTACION "CONTROL DE MEZCLAS"

20 views
Skip to first unread message

Lord_Libra

unread,
Oct 13, 2009, 11:12:47 AM10/13/09
to ConexionElectronica
Cordiales saludos a todos los amigos del foro.

Bueno, ya solucionado el problema del compilador PBP, me puse a
implementarlo pero me presenta problemas, en la simulacion. da 100
puntos, pero en la implementacion es otra cosa, muestra lo que tiene
que mostrar al principio, "Control de Mezclas", introdusco por el
teclado (de 1 a 3) segun la opcion de mezcla que se quiera, suponiendo
que se presiono la tecla "1", el LCD pasa a mostrar "Mezcla 50%-50%",
pero de ese punto es como si se saliera del ciclo y muestra otraves el
título principal.

- el programa del teclado ya tiene su código antirrebotes

- ¿podra ser problema de tiempos, puede ser que este haciendo todo muy
rapido???
- Qué es lo que tengo que cambiar en el código para poder solucionar
ese problema
- Además, parece que hay que hacer algo para que se fuarde esos
caracteres especiales en la CGRAM del LCD, o es que ya con el programa
se guarda eso????

'ESTE EL CÓDIGO (336 LINEAS)
'-----------------------------------------------------------------------------------------------------------------------------
' CONFIGURACIONES INICIALES
TRISA = %00000000
PORTA = %00000000
TRISB = %00000000
PORTB = %00000000
TRISD = %00001111
PORTD = %00000000
TRISC = %00000000
PORTC = %00000000
TRISE = %00000000
PORTE = %00000000
' CONFIGURACION PARA EL MODULO LCD
DEFINE LCD_DREG PORTB
DEFINE LCD_BITS 4
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
'DEFINICION DEL OSCILADOR
Define Osc 4 ' el oscilador sera de 4 Mhz.
' INICIO DEL PROGRAMA ------------------------------------------
'GUARDANDO DATOS EN POSICIONES 0 Y 1 DE LA CGRAM
lcdout $fe, $40, $1F, $1F, $1F, $1F, $1F, $1F, $1F, $1F ' DATO EN
POSICION 0- PARA LLENADO
lcdout $fe, $48, $00, $00, $00, $00, $00, $00, $00, $00 ' DATO EN
POSICION 1- PARA BORRADO
'*****************************************************
inicio:
PORTC = %00000000
PORTE = %00000000
PORTA = %00000000
lcdout $fe,1
lcdout " Control de "
lcdout $fe,$c0
lcdout " Mezclas. "
pause 1000
if PORTD = 1 then
gosub cincuenta
endif
if PORTD = 2 then
gosub treinta
endif
if PORTD = 3 then
gosub sesenta
endif
pause 1000
goto inicio
'-----------------------------------------
'PARA MEZCLA DE 50% DE A Y 50% DE B
'-----------------------------------------
cincuenta:
lcdout $fe,1
lcdout "Mezcla 50% - 50%"
pause 2000
gosub abre_material_A ' PARA MOTOR MATERIAL A
lcdout $fe,1
lcdout "50% de A"
lcdout $fe,$c0
lcdout $fe, $c0,0
pause 1000
lcdout $fe, $c1,0
pause 1000
lcdout $fe, $c2,0
pause 1000
lcdout $fe, $c3,0
pause 1000
lcdout $fe, $c4,0
pause 1000
lcdout $fe, $c5,0
pause 1000
lcdout $fe, $c6,0
pause 1000
lcdout $fe, $c7,0
pause 1000
gosub cierra_material_A
pause 4000
gosub abre_material_B ' PARA MOTOR MATERIAL B
lcdout $fe,2, "50% de B"
lcdout $fe, $c8,0
pause 1000
lcdout $fe, $c9,0
pause 1000
lcdout $fe, $cA,0
pause 1000
lcdout $fe, $cB,0
pause 1000
lcdout $fe, $cC,0
pause 1000
lcdout $fe, $cD,0
pause 1000
lcdout $fe, $cE,0
pause 1000
lcdout $fe, $cF,0
pause 1000
gosub cierra_material_B
pause 1000
gosub mixer ' PARA MOTRO DE MIXER
pause 500
gosub abre_vaciado
gosub vaciado
gosub cierra_vaciado
pause 100
return
'----------------------------------------
' PARA MEZCLA DE 30% DE A Y 70% DE B
'------------------------------------------
treinta:
lcdout $fe,1
lcdout "Mezcla 30% - 70%"
pause 2000
gosub abre_material_A ' PARA MOTOR MATERIAL A
lcdout $fe,1
lcdout "30% de A"
lcdout $fe,$c0
lcdout $fe, $c0,0
pause 1000
lcdout $fe, $c1,0
pause 1000
lcdout $fe, $c2,0
pause 1000
lcdout $fe, $c3,0
pause 1000
gosub cierra_material_A
pause 4000
gosub abre_material_B ' PARA MOTOR MATERIAL B
lcdout $fe,2, "70% de B"
lcdout $fe, $c4,0
pause 1000
lcdout $fe, $c5,0
pause 1000
lcdout $fe, $c6,0
pause 1000
lcdout $fe, $c7,0
pause 1000
lcdout $fe, $c8,0
pause 1000
lcdout $fe, $c9,0
pause 1000
lcdout $fe, $cA,0
pause 1000
lcdout $fe, $cB,0
pause 1000
lcdout $fe, $cC,0
pause 1000
lcdout $fe, $cD,0
pause 1000
lcdout $fe, $cE,0
pause 1000
lcdout $fe, $cF,0
pause 1000
gosub cierra_material_B
pause 1000
gosub mixer ' PARA MOTRO DE MIXER
pause 500
gosub abre_vaciado
gosub vaciado
gosub cierra_vaciado
pause 100
return
'----------------------------------------------
' PARA MEZCLA DE 60% DE A Y 40% DE B
'----------------------------------------------
sesenta:
lcdout $fe,1
lcdout "Mezcla 60% - 40%"
pause 2000
gosub abre_material_A ' PARA MOTOR MATERIAL A
lcdout $fe,1
lcdout "60% de A"
lcdout $fe,$c0
lcdout $fe, $c0,0
pause 1000
lcdout $fe, $c1,0
pause 1000
lcdout $fe, $c2,0
pause 1000
lcdout $fe, $c3,0
pause 1000
lcdout $fe, $c4,0
pause 1000
lcdout $fe, $c5,0
pause 1000
lcdout $fe, $c6,0
pause 1000
lcdout $fe, $c7,0
pause 1000
lcdout $fe, $c8,0
pause 1000
gosub cierra_material_A
pause 4000
gosub abre_material_B ' PARA MOTOR MATERIAL B
lcdout $fe,2, "40% de B"
lcdout $fe, $c9,0
pause 1000
lcdout $fe, $cA,0
pause 1000
lcdout $fe, $cB,0
pause 1000
lcdout $fe, $cC,0
pause 1000
lcdout $fe, $cD,0
pause 1000
lcdout $fe, $cE,0
pause 1000
lcdout $fe, $cF,0
pause 1000
gosub cierra_material_B
pause 1000
gosub mixer ' PARA MOTRO DE MIXER
pause 500
gosub abre_vaciado
gosub vaciado
gosub cierra_vaciado
pause 100
return
' VACIADO ******************************************
vaciado:
pause 1000
'gosub abre_vaciado
pause 1000
lcdout $fe, 2, "VACIANDO MEZCLA"
pause 1000
lcdout $fe, $cF,1
pause 500
lcdout $fe, $cE,1
pause 500
lcdout $fe, $cD,1
pause 500
lcdout $fe, $cC,1
pause 500
lcdout $fe, $cB,1
pause 500
lcdout $fe, $cA,1
pause 500
lcdout $fe, $c9,1
pause 500
lcdout $fe, $c8,1
pause 500
lcdout $fe, $c7,1
pause 500
lcdout $fe, $c6,1
pause 500
lcdout $fe, $c5,1
pause 500
lcdout $fe, $c4,1
pause 500
lcdout $fe, $c3,1
pause 500
lcdout $fe, $c2,1
pause 500
lcdout $fe, $c1,1
pause 500
lcdout $fe, $c0,1
pause 2000
'gosub cierra_vaciado
return
'--------------------------------------
' PARA LOS MOTORES
'--------------------------------------
abre_material_A:
HIGH PORTC.0
HIGH PORTC.2
LOW PORTC.4
pause 2000
HIGH PORTC.0 ' PARA PARAR EL MOTOR
HIGH PORTC.2
HIGH PORTC.4
return
cierra_material_A:
HIGH PORTC.0
LOW PORTC.2
HIGH PORTC.4
pause 2000
HIGH PORTC.0 ' PARA PARAR EL MOTOR
HIGH PORTC.2
HIGH PORTC.4
pause 500
return
abre_material_B:
HIGH PORTC.1
HIGH PORTC.3
LOW PORTC.5
pause 2000
HIGH PORTC.1
HIGH PORTC.3
HIGH PORTC.5
return
cierra_material_B:
HIGH PORTC.1
LOW PORTC.3
HIGH PORTC.5
pause 2000
HIGH PORTC.1
HIGH PORTC.3
HIGH PORTC.5
return
' PARA EL MIXER
mixer:
HIGH PORTC.7
LOW PORTE.1
HIGH PORTE.0
pause 5000
HIGH PORTC.7
HIGH PORTE.1
HIGH PORTE.0
return
' PARA EL VACIADO
abre_vaciado:
HIGH PORTC.6
HIGH PORTE.2
LOW PORTA.5
pause 2000
HIGH PORTC.6
HIGH PORTE.2
HIGH PORTA.5
return
cierra_vaciado:
pause 1000
HIGH PORTC.6
LOW PORTE.2
HIGH PORTA.5
pause 2000
HIGH PORTC.6
HIGH PORTE.2
HIGH PORTA.5
return
end
Reply all
Reply to author
Forward
0 new messages