hace 16 años
aaaaaaaaaaaaaa, claro, bueno, te comento que ahi estas tirando un picaxe en modo esclavo y lo que te ocupa de memoria es infartante, cuando bien podes implementar un modulo como el que te mostre yo (es el mismo que etsan vendiendo como quit de picaxe, busca mas info y vas a ver que es un hitachi similar), y consumis un 25% MENOS de espacio en el micro.
El problema que estas teniendo, debe de ser el comando "goto" al finalizar alguna subrutina. En ves de decirle que siga, le estas diciendo que vuelva a comenzar...Para el caso de implementacion de estados y funciones multiples, implementa el comando "return", entonces, cuando termina la subrutina, hace el scan hasta finalizar todas las lineas y vuelve a comenzar... si implementas un cristal, esta funcion es mucho ms lucrativa, osea, mas rapida...
mira este ejemplo bobo que te hago:
[list]inicio_programa:
gosub selector_prog
gosub selector_msg
goto inicio_programa
selector_prog:
if input1=1 then goto prelavado
if input2=1 then goto lavado
if input3=1 then goto centrifugado
if input4=1 then programa_largo
return
selector_msg:
if input1=1 then goto lcd_lavado `saltar el prelavado
if input2=1 then goto lcd_prelavado
if input3=1 then goto lcd_centrifugado
if input4=1 then lcd_programa_largo
return
prelavado:
en este sub programa, hacemos todo lo que tenias en el otro programa, pero al finalizar,
implementamos dos comandos: "gosub fin_prog" y debajo de este, "return" para que siga con el scan
lavado:
en este sub programa, hacemos todo lo que tenias en el otro programa, pero al finalizar,
implementamos dos comandos: "gosub fin_prog" y debajo de este, "return" para que siga con el scan
centrifugado:
en este sub programa, hacemos todo lo que tenias en el otro programa, pero al finalizar,
implementamos dos comandos: "gosub fin_prog" y debajo de este, "return" para que siga con el scan
programa_largo:
en este sub programa, hacemos todo lo que tenias en el otro programa, pero al finalizar,
implementamos dos comandos: "gosub fin_prog" y debajo de este, "return" para que siga con el scan
lcd_prelavado:
serout 6,T2400,(254,"1”,"3"," PROG ")
serout 6,T2400,(254,"1”,"a"," PRELAVADO ")
pause 250
return
lcd_lavado:
serout 6,T2400,(254,"1”,"3"," PROG ")
serout 6,T2400,(254,"1”,"a"," LAVADO ")
pause 250
return
lcd_centrifugado:
serout 6,T2400,(254,"1”,"3"," PROG ")
serout 6,T2400,(254,"1”,"a"," CENTRIFUGADO ")
pause 250
return
lcd_programa_largo:
serout 6,T2400,(254,"1”,"3"," PROGRAMA ")
serout 6,T2400,(254,"1”,"a"," COMPLETO ")
pause 250
return
fin_prog:
serout 6,T2400,(254,"1”,"3"," FIN ")
serout 6,T2400,(254,"1”,"a"," PROGRAMA ")
pause 250
return[/list:u]
Recordá, que dependiendo el tiempo que le des a los retardos, tendras un scan rapido o lento.... osea, que dependiendo del tiempo que tenes en el scan, tendras un efecto visual en el LCD de mensaje titilante; Ya que cuando entra en el 1er sub programa, recorre las lineas, actua segun las señales y vuelve a la linea siguiente hasta llegar al final, donde nuevamente le dice el comando return volver alprograma raiz, pero al siguiente sub programa. Esto es asi susecivamente y te va a servir para que no tengas conflictos con el display.. si usas "goto", corres el riesgo que en algunas ocaciones, no llegue nunca a la linea o al sub programa de mensajes.
Ojo, este es un ejemplo bobo que te doy para que veas como manejar el programa de mensajes de display dentro de tu diseño... obviamente, hay que pensar en renombrar la funcion y que se activen a partir del estado de alguna memori word o cualquiera e las otras... total, tienes 13 :P
comentame si mas o menos entedes la idea muy pero muy simplificada de como trabajar con un picaxe en modo esclavo.
saludos
¿Realmente quieres cerrar esta reparación?
Sí
No
¿Realmente quieres reabrir esta reparación?
Sí
No
¿Realmente quieres borrar este post?
Sí
No