Creo que las banderas (flags, semáforos o bit de control de flujo) no tienen nada que explicar, porque su uso es muy simple, pues su función es la de modificar la repuesta de una rutina, creo que en lo que hay que hacer hincapié es en estudiar el funcionamiento de la instrucción IF-THEN-ELSE-ENDIF y por ultimo el GOTO no se utiliza, porque crea un código raro y difícil de entender y que suele llevar a errores. En Basic el Goto solo se suele utilizar una sola vez para crear el bucle infinito de la rutina principal. Pero para llegar a esto primero hay que tener claro en las partes que se divide un programa.
'Titulo, autor, fecha, lenguaje, etc ****************************
'Microcontrolador ***********************************************
'Simulado o probado en la realidad ******************************
'Versión y resumen de lo que hace el programa *******************
'Definición de Bit **********************************************
'Definición de los Mhz de trabajo del sistema *******************
'Definición de como trabajan los modulos y estado ***************
AllDigital
TRISA = 255
TRISB = 0
'Declaración de simbolos y variables generales ******************
Symbol bot = PORTA.0 'Nombre para el bit del puerto RA0
Dim flag As Bit 'Flag control dato PortB
flag = 0 'Habilita PORTB = 7
'Rutina o bucle principal ***************************************
main:
If bot = 1 Then Gosub tecla_0 'Control de la tecla
If flag = 0 Then Gosub siete 'Hace PORTB = 7
If flag = 1 Then Gosub cuatro 'Hace PORTB = 4
Goto main
End
'Sub-rutinas *****************************************************
'Control tecla
tecla_0:
If flag = 0 Then 'Habilita PORTB = 4
flag = 1
Else
If flag = 1 Then flag = 0 'Habilita PORTB = 7
Endif
WaitMs 80 'Real 300, pause para estabilizar el rebote de la tecla
Return
'PORTB = 4
cuatro:
PORTB = 4
Return
'PORTB = 7
siete:
PORTB = 7
Return
'End **************************************************************