'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 30/11/2012 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
@ __config _INTOSC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF
CMCON=7
TRISB=%10010000 'Se activa los puertos b.7 y b.4
h1 VAR byte 'Se definen las variables para las horas, minutos y segundos
S1 VAR byte
M1 VAR byte
h2 VAR byte
S2 VAR byte
M2 VAR byte
DEFINE LCD_DREG PORTA 'Se definen los puertos A para el uso del LCD
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 6
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 7
BotonA var PORTB.4 'Se definen los botones de los jugadores
BotonB Var PORTB.7
'------------------------------------------------------------------------
'Programa inicial de bienvenida
INICIO:
LCDOUT $FE,$80, "Chess Clock V1.0"
LCDOUT $FE,$C0, "Press Any Button"
if BotonA=0 then 'Si se presiona el Boton A nos vamos al reloj uno y seteamos el segundo reloj
Lcdout $FE,1
LCDout $FE,$C8, DEC2 H2="0", ":", DEC2 M2="0", ":", DEC2 s2="0"
Goto Inicio1
else
if botonB=0 then 'Si se presiona el Boton B nos vamos al reloj dos y seteamos el segundo reloj
Lcdout $FE,1
LCDOUT $FE,$80, DEC2 H1="0", ":", DEC2 M1="0", ":", DEC2 s1="0"
goto inicio2
endif
endif
goto Inicio
end
'--------------------------------------------------------------------------
INICIO1: 'Este es el programa para el reloj uno
s1=s1-1 'Se hace un algoritmo para crear una cuenta regresiva.
if s1>59 then
s1=59
m1=m1-1
if m1>59 then
m1=59
h1=h1-1
if h1>23 then
h1= 0
endif
endif
endif
if s1=0 and m1=0 and h1=0 then 'En esta parte si la cuenta regresiva termina va
goto fin1 'a otro programa que detiene el reloj
endif
LCDOUT $FE,$80, DEC2 H1, ":", DEC2 M1, ":", DEC2 s1 'Se imprime los valores en pantalla
PAUSE 800
if PORTB.4=0 then resume INICIO2 'Si hay una interrupcion por parte del boton A se detiene
'el proceso actual y se continua con el reloj dos
goto inicio1
end
'--------------------------------------------------------------------------
INICIO2: 'Este es el programa para el reloj dos
s2=s2-1 'Se hace un algoritmo para crear una cuenta regresiva
if s2>59 then
s2=59
m2=m2-1
if m2>59 then
m2=59
h2=h2-1
if h2>23 then
h2=0
endif
endif
endif
if s2=0 and m2=0 and h2=0 then 'En esta parte si la cuenta regresiva termina va
goto fin2 'a otro programa que detiene el reloj
endif
LCDOUT $FE,$c8, DEC2 H2, ":", DEC2 M2, ":", DEC2 s2 'Se imprime los valores en pantalla
PAUSE 800
if PORTB.7=0 then resume INICIO1 'Si hay una interrupcion por parte del boton B se detiene
goto Inicio2 'el proceso actual y se continua con el reloj uno
end
'---------------------------------------------------------------------------
'Fin de los dos relojes setea en cero a los relojes
Fin1:
LCDOUT $FE,$80, DEC2 H1="0", ":", DEC2 M1="0", ":", DEC2 s1="0"
PAUSE 1000
end
Fin2:
LCDOUT $FE,$C8, DEC2 H2="0", ":", DEC2 M2="0", ":", DEC2 s2="0"
PAUSE 1000
end