You are on page 1of 7

'MENU -> ELABORADO POR JORGE MARTINEZ

program MyProject
SYMBOL ACTIVAR_D1 = LATA.3
SYMBOL ACTIVAR_D2 = LATA.2
SYMBOL ACTIVAR_D3 = LATA.1
SYMBOL ACTIVAR_D4 = LATA.0
CONST
CONST
'112
CONST
CONST

_S = 109
_T = 120
_O = 63
_P = 115

CONST _A = 119
CONST _R = 49
'80
CONST _L = 56
CONST _E = 121
CONST _D = 94
CONST _V = 62
CONST _N = 116
CONST _I = 48
CONST _F = 113
CONST _MENOS = 64
CONST
CONST
CONST
CONST
CONST
CONST
CONST
CONST
CONST
CONST

_UNO = 6
_DOS = 91
_TRES = 79
_CUATRO = 102
_CINCO = 109
_SEIS = 125
_SIETE = 71
_OCHO = 127
_NUEVE = 111
_CERO = 63

DIM MENU, SUB_MENU AS BYTE


DIM MI_TEXTO AS STRING[4]
DIM MI_NUMERO, MI_NUMERO2 AS WORD
DIM DATO1,DATO2,DATO3,DATO4, CTR_PUSH, VAR, J, CONTAR AS BYTE
const LED AS BYTE[8] = (1,2,4,8,16,32,64,128)
SUB PROCEDURE
ACTIVAR_D1
ACTIVAR_D2
ACTIVAR_D3
ACTIVAR_D4
END SUB

APAGAR_ALL()
= 1
= 1
= 1
= 1

SUB PROCEDURE CAMBIAR_MENU()


IF PORTE.0 = 0 THEN
IF CTR_PUSH <= 0 THEN
IF SUB_MENU = 0 THEN
IF MENU < 3 THEN

MENU = MENU + 1
END IF
ELSE
IF SUB_MENU < 3 THEN
SUB_MENU = SUB_MENU + 1
END IF
END IF
IF SUB_MENU = 3 THEN
MI_NUMERO = MI_NUMERO + 1
VAR=1
END IF
IF SUB_MENU = 4 THEN
IF MI_NUMERO2 < 7 THEN
MI_NUMERO2 = MI_NUMERO2 + 1
VAR=2
END IF
END IF
CTR_PUSH = 1
END IF
END IF
IF PORTE.1 = 0 THEN
IF CTR_PUSH <= 0 THEN
IF SUB_MENU = 0 THEN
IF (MENU > 0) THEN
MENU = MENU - 1
END IF
ELSE
IF SUB_MENU = 2 THEN
SUB_MENU = 1
END IF
END IF
IF (SUB_MENU = 3) AND MI_NUMERO > 0 THEN
MI_NUMERO = MI_NUMERO - 1
VAR=1
END IF
IF (SUB_MENU = 4) AND MI_NUMERO2 > 0 THEN
MI_NUMERO2 = MI_NUMERO2 - 1
VAR=2
END IF
CTR_PUSH = 1
END IF
END IF
IF PORTE.2 = 0 THEN
IF CTR_PUSH <= 0 THEN
IF ((MENU = 0 ) OR (MENU = 1)) AND (SUB_MENU=0) THEN
SUB_MENU = 1
END IF
IF (MENU = 2) AND (SUB_MENU=0) THEN
SUB_MENU = 3
END IF

IF (MENU = 3) AND (SUB_MENU=0) THEN


SUB_MENU = 4
END IF
CTR_PUSH = 1
END IF
END IF
END SUB
sub procedure
ANSELA
ANSELB
ANSELC
ANSELD
ANSELE

init_MCU()
= %00000000
= %00000000
= %00000000
= %00000000
= %00000000

TRISA
TRISB
TRISC
TRISD
TRISE

=
=
=
=
=

%00000000
%00000000
%00000000
%00000000
%00000111

PORTA
PORTB
PORTC
PORTD
PORTE

=
=
=
=
=

0
0
0
0
0

end sub
SUB SUB ON_D1()
ACTIVAR_D1=0
ACTIVAR_D2=1
ACTIVAR_D3=1
ACTIVAR_D4=1
END SUB
SUB PROCEDURE ON_D2()
ACTIVAR_D1=1
ACTIVAR_D2=0
ACTIVAR_D3=1
ACTIVAR_D4=1
END SUB
SUB PROCEDURE ON_D3()
ACTIVAR_D1=1
ACTIVAR_D2=1
ACTIVAR_D3=0
ACTIVAR_D4=1
END SUB
SUB PROCEDURE ON_D4()
ACTIVAR_D4=1
ACTIVAR_D2=1
ACTIVAR_D3=1
ACTIVAR_D4=0
END SUB

SUB PROCEDURE SEPARAR_DATO(DIM BYREF TEXTO AS STRING)


DATO1 = TEXTO[0]
DATO2 = TEXTO[1]
DATO3 = TEXTO[2]
DATO4 = TEXTO[3]
END SUB
SUB PROCEDURE SEPARA_NUMERO(DIM NUM AS WORD)
DATO1 = NUM /1000
DATO2 = (NUM /100) MOD 10
DATO3 = (NUM /10) MOD 10
DATO4 = NUM MOD 10
END SUB
SUB PROCEDURE CODIFICAR_DATO(DIM TEXTO AS BYTE)
SELECT CASE TEXTO
CASE 0 LATD = _O
CASE 1 LATD = _UNO
CASE 2 LATD = _DOS
CASE 3 LATD = _TRES
CASE 4 LATD = _CUATRO
CASE 5 LATD = _CINCO
CASE 6 LATD = _SEIS
CASE 7 LATD = _SIETE
CASE 8 LATD = _OCHO
CASE 9 LATD = _NUEVE
CASE
CASE
CASE
CASE
CASE

"0"
"S"
"T"
"O"
"P"

LATD
LATD
LATD
LATD
LATD

=
=
=
=
=

_O
_S
_T
_O
_P

CASE "A" LATD = _A


CASE "R" LATD = _R
CASE "L" LATD = _L
CASE "E" LATD = _E
CASE "D" LATD = _D
CASE "-" LATD = _MENOS
CASE "V" LATD = _V
CASE "N" LATD = _N
CASE "F" LATD = _F
CASE "I" LATD = _I
END SELECT
END SUB
SUB PROCEDURE MOSTRAR_TEXTO()
DELAY_MS(1)
ON_D1()
CODIFICAR_DATO(DATO1)
DELAY_MS(1)
ON_D2()
CODIFICAR_dATO(DATO2)

DELAY_MS(1)
ON_D3()
CODIFICAR_DATO(DATO3)
DELAY_MS(1)
ON_D4()
CODIFICAR_DATO(DATO4)
DELAY_MS(1)
END SUB
' Declarations section
SUB PROCEDURE STOP_()
MI_TEXTO="STOP"
SEPARAR_DATO(MI_TEXTO)
MOSTRAR_TEXTO()
END SUB
SUB PROCEDURE STAR_()
MI_TEXTO="STAR"
SEPARAR_DATO(MI_TEXTO)
MOSTRAR_TEXTO()
END SUB
SUB PROCEDURE VAR_()
MI_TEXTO="-VAR"
SEPARAR_DATO(MI_TEXTO)
MOSTRAR_TEXTO()
END SUB
SUB PROCEDURE LED_()
MI_TEXTO="-LED"
SEPARAR_DATO(MI_TEXTO)
MOSTRAR_TEXTO()
END SUB
SUB PROCEDURE ON_()
MI_TEXTO="-SI-"
SEPARAR_DATO(MI_TEXTO)
MOSTRAR_TEXTO()
VAR = 10
END SUB
SUB PROCEDURE OF_()
MI_TEXTO="-NO-"
SEPARAR_DATO(MI_TEXTO)
MOSTRAR_TEXTO()
END SUB
SUB PROCEDURE VARN()
SEPARA_NUMERO(MI_NUMERO)
MOSTRAR_TEXTO()
END SUB
SUB PROCEDURE LEDN()
SEPARA_NUMERO(MI_NUMERO2)
MOSTRAR_TEXTO()
END SUB

SUB PROCEDURE PARPADEO()


FOR J = 0 TO 2
IF SUB_MENU = 1 THEN
ON_()
ELSE
OF_()
END IF
DELAY_MS(50)
APAGAR_ALL()
DELAY_MS(50)
NEXT J
SUB_MENU = 0
END SUB
SUB PROCEDURE ACTION()
IF CTR_PUSH <=0 THEN
IF (VAR = 0) AND ((MI_NUMERO <=0) OR (MI_NUMERO2 <= 0) ) THEN
PARPADEO()
END IF
IF ((VAR = 0) OR (VAR = 10) )AND (SUB_MENU = 2) THEN
PARPADEO()
END IF
IF (VAR = 10) AND (SUB_MENU = 1) THEN
FOR J = 0 TO MI_NUMERO
LATB = LED[MI_NUMERO2]
DELAY_MS(30)
LATB = %000000
DELAY_MS(30)
NEXT J
DELAY_MS(60)
END IF
IF VAR = 1 THEN
SUB_MENU = 0
MENU = 0
VAR = 0
END IF
CTR_PUSH = 1
END IF
END SUB
main:
init_MCU()
' Main program
CTR_PUSH=0
MENU = 0
SUB_MENU = 0
VAR = 0
MI_NUMERO = 0
WHILE TRUE
IF (PORTE.0 = 0) OR (PORTE.1 = 0) OR (PORTE.2 = 0) THEN
IF ((MENU = 0 ) OR (MENU = 1)) AND ((SUB_MENU = 1) OR (SUB_MENU = 2) OR

(SUB_MENU = 3) OR (SUB_MENU = 4) ) AND (PORTE.2 = 0) AND (CTR_PUSH = 0) THEN


ACTION()
ELSE
CAMBIAR_MENU()
END IF
IF (MENU = 2) AND (SUB_MENU = 3) AND (PORTE.2 = 0) AND (VAR = 1) THEN
SUB_MENU = 0
VAR = 0
END IF
IF (MENU = 3) AND (SUB_MENU = 4) AND (PORTE.2 = 0) AND (VAR = 2) THEN
SUB_MENU = 0
MENU = 0
VAR = 0
END IF

ELSE
CTR_PUSH = 0
END IF

SELECT CASE MENU


CASE 0
SELECT CASE
CASE
CASE
CASE
END SELECT

SUB_MENU
0 STAR_()
1 ON_()
2 OF_()

CASE 1
SELECT CASE
CASE
CASE
CASE
END SELECT

SUB_MENU
0 STOP_()
1 ON_()
2 OF_()

CASE 2
SELECT CASE SUB_MENU
CASE 0 VAR_()
CASE 3 VARN()
END SELECT
CASE 3
SELECT CASE SUB_MENU
CASE 0 LED_()
CASE 4 LEDN()
END SELECT
END SELECT
WEND
end.

You might also like