;*********************************************************************************************************;
                      
OSCCON=%01100110  ; Se utiliza para pic 16f88, Configura oscilador interno en 4MGH de frecuencia estable                                            
ANSEL=0           ; Se utiliza para pic 16f88, Todos los puertos configurados como digital y si los queremos analogos los = 1                     
;*******************************************************************************
DEFINE LCD_DREG PORTB  ; Indica que el Bus estará conectado en el Puerto B
DEFINE LCD_DBIT 4      ' Selección del Bit de inicio del puerto en el uC para el
                       ' bus de datos de la LCD
DEFINE LCD_RSREG PORTB ' Indica al uC que el pin "RS" estará en el Puerto B
DEFINE LCD_RSBIT 3     ' "RS" estará conectado en RB3
DEFINE LCD_EREG PORTB  ' Indica al uC que el pin "E" estará en el Puerto B
DEFINE LCD_EBIT 2      ' "E" estará conectado en RB2
Define Osc 4           ' Define el Oscilador para un Cristal
                       ' de 4 Mhz.
TRISA=%00111110
TRISB=%00000000
;************************* Pines de control ************************
Symbol enter = PORTA.1
;****************************** Declaración de variables******************************
B0      Var Byte
B1      Var Byte
B2      Var Byte
Dias  Var Byte
Tardes   var byte
Noches  var byte
cafe var byte
arroz var byte
jugo var byte
dato var byte
datod var byte
datoa var byte
datoc var byte
Dato = 0
datod = 0
datoa = 0
datoc = 0
LCDOut $fe, 1 ' Limpia la pantalla
Inicio:
LCDOut $fe, 2 ' Posiciona el cursor en el inicio
LCDOut "Bienvenidos"
LCDOut $fe,$C0, "Welcome"
clear
     
;Menus:
   For B0 = 1 To 200
   if enter=0 and dato = 0 then gosub suma
   Next
   gosub Hola1
   
   For B1 = 1 To 200
   if enter=0 and dato = 1 then gosub suma
   next 
   gosub Hola2    
    
   For B2 = 1 To 200
   if enter=0 and dato = 2 then gosub suma
   next
   gosub Hola3 
;goto Menus
goto Inicio
    
Hola1:
for Dias = 1 to 30
lcdout $fe,1    
lcdout $fe,$80,"Buenos"
lcdout $fe,$c0,"Dias"
   pause 100
   NEXT Dias
lcdout $fe,1    
lcdout $fe,$80,"Como"
lcdout $fe,$c0,"Estas"   
pause 300  
if enter = 0 then gosub desayuno
return    
    
Hola2:
for Tardes = 1 to 30
lcdout $fe,1    
lcdout $fe,$80,"Buenas"
lcdout $fe,$c0,"Tardes"
   pause 100
NEXT Tardes
lcdout $fe,1    
lcdout $fe,$80,"Veo que"
lcdout $fe,$c0,"Estas bien"
pause 300 
if enter = 0 then gosub almuerzo
RETURN 
Hola3:
for Noches = 1 to 30
lcdout $fe,1    
lcdout $fe,$c80, "Buenas"
lcdout $fe,$c0,"Noches"
  pause 100
  NEXT Noches
  
lcdout $fe,1    
lcdout $fe,$80,"Que pases"
lcdout $fe,$c0,"Bien"
pause 300   
if enter = 0 then gosub cena
RETURN    
desayuno:
for cafe = 1 to 30
lcdout $fe,1    
lcdout $fe,$c80, "Elija 1 opcion"
lcdout $fe,$c0,"de desayuno"
  pause 100
  NEXT cafe  
  
lcdout $fe,1    
lcdout $fe,$80,"1- Americano"
lcdout $fe,$c0,"2- Nativo"
pause 300   
if enter = 0 and datod = 0  then gosub sumad
lcdout $fe,1    
lcdout $fe,$80,"1- Americano"
pause 300
if enter = 0 and datod = 1  then gosub sumad
lcdout $fe,1 
lcdout $fe,$c0,"2- Nativo"
pause 300
lcdout $fe,1    
lcdout $fe,$80,"Gracias por"
lcdout $fe,$c0,"su eleccion"
pause 300  
RETURN   
  
  
almuerzo:
for arroz = 1 to 30
lcdout $fe,1    
lcdout $fe,$c80, "Elija 1 opcion"
lcdout $fe,$c0,"de almuerzo"
  pause 100
  NEXT arroz  
  
lcdout $fe,1    
lcdout $fe,$80,"1- Guisado"
lcdout $fe,$c0,"2- Sopa"
pause 300   
if enter = 0 and datoa = 0  then gosub sumaa
lcdout $fe,1    
lcdout $fe,$80,"1- Guisado"
pause 300
if enter = 0 and datoa = 1  then gosub sumaa
lcdout $fe,1 
lcdout $fe,$c0,"2- Sopa"
pause 300
lcdout $fe,1    
lcdout $fe,$80,"Gracias por"
lcdout $fe,$c0,"su eleccion"
pause 300  
RETURN        
cena:
for jugo = 1 to 30
lcdout $fe,1    
lcdout $fe,$c80, "Elija 1 opcion"
lcdout $fe,$c0,"de almuerzo"
  pause 100
  NEXT jugo  
  
lcdout $fe,1    
lcdout $fe,$80,"1- Asado"
lcdout $fe,$c0,"2- Pizza"
pause 300   
if enter = 0 and datoc = 0  then gosub sumac
lcdout $fe,1    
lcdout $fe,$80,"1- Asado"
pause 300
if enter = 0 and datoc = 1  then gosub sumac
lcdout $fe,1 
lcdout $fe,$c0,"2- Pizza"
pause 300
lcdout $fe,1    
lcdout $fe,$80,"Gracias por"
lcdout $fe,$c0,"su eleccion"
pause 300  
RETURN        
    
Suma:
Dato = Dato + 1            ' Incrementa en una unidad la variable "Dato".
Pause 350                  ' Realiza una pausa de 350 milisegundos para evitar
                           ' que el incremento de la variable sea muy acelerado
                           ' mientras el pulsador "enter" esté presionado.
Return                     ' Retorna una línea después del llamado "gosub Suma".
Sumad:
datod = datod + 1            ' Incrementa en una unidad la variable "Dato".
Pause 350                  ' Realiza una pausa de 350 milisegundos para evitar
                           ' que el incremento de la variable sea muy acelerado
                           ' mientras el pulsador "enter" esté presionado.
Return                     ' Retorna una línea después del llamado "gosub Suma".
Sumaa:
datoa = datoa + 1            ' Incrementa en una unidad la variable "Dato".
Pause 350                  ' Realiza una pausa de 350 milisegundos para evitar
                           ' que el incremento de la variable sea muy acelerado
                           ' mientras el pulsador "enter" esté presionado.
Return                     ' Retorna una línea después del llamado "gosub Suma".
Sumac:
datoc = datoc + 1            ' Incrementa en una unidad la variable "Dato".
Pause 350                  ' Realiza una pausa de 350 milisegundos para evitar
                           ' que el incremento de la variable sea muy acelerado
                           ' mientras el pulsador "enter" esté presionado.
Return                     ' Retorna una línea después del llamado "gosub Suma".