pongo solo el main y la interrupcion del timer si necesitas algo mas pedimelo
#include <libreria.h>
#fuses XT,NOWDT, NOPROTECT
#use delay(clock =20000000)
#use standard_io(A) //uso standard_io
#use standard_io(B) //uso standard_io
#use standard_io(C) //uso standard_io
#use standard_io(D) //uso standard_io
#use standard_io(E) //uso standard_io
void main(void){
//--------------------------------------------------------------------------------------
// Variables Locales
//--------------------------------------------------------------------------------------
unsigned char Tecla; // Variable local utilizada para la lectura de las teclas
port_b_pullups(TRUE); //inicio
OUTPUT_C(0);
OUTPUT_HIGH(PIN_E0);
OUTPUT_LOW(PIN_E0);
Leds = 0;
est = 0;
flag = 0;
Estado = 0;
est_juego = 0;
turno = 0;
mostrar = 0;
cant=1; //1 son 2 jugadores, 0 un solo jugador, por defecto empiezan dos jugadores
record = 0; //inicio a 0 los buffer de puntajes
jug1 = 0;
jug2 = 0;
puntos = 0;
cont = 0;
setup_timer_1 (T1_INTERNAL|T1_DIV_BY_8);
set_timer1 (0xff29);
enable_interrupts(INT_TIMER1);
enable_interrupts(global); //fin inicio
TIMERS_Inicializar();
while(true){
TIMERS_Verificar_Fin(); // Chequeo el vencimiento de los temporizadores
Tecla = Get_Key(); // Chequeo si hubo alguna tecla presionada
switch(Estado){
case 0: //estado standby
if( Tecla == 1 ){
Estado=1;flag=0;Leds = 0; seleccion = 0; solto = 0;
texto('J', 3);texto('U', 4);texto('G', 5);texto(55, 6);texto(55, 7);texto(57,8); //no entiendo porque no anda mostrardis(2,1);
}
else if(flag==0){
flag=1;
MostrarDis(record,2); LimpiarPantalla(); texto('A', 3);texto('L', 4);texto('E', 5);texto('L', 6);texto('I', 7);texto(91,
;
Efectos(T0);
}
break;
case 1: //estado menu
if(flag==0){
flag=1;TIMERS_Encender(2,4);
}
switch(seleccion){
case 0:
if(Tecla == 1){ //va a seleccionar nivel de juego
TIMERS_Detener(2); seleccion = 1; flag = 0;tecla = 0;
/*LimpiarPantalla();*/ texto('F',3);texto('A',4);texto('C',5);texto('I',6);texto('L',7);texto(91,8);
}
if( Tecla == 2){
if(cant == 1){
cant=0;
Leds = 2;
//MostrarDis(1,1);
texto('J', 3);
texto('U', 4);
texto('G', 5); //cambia a 1 JUG
texto(55, 6);
texto(55, 7);
texto(56,
;
}
else {
cant = 1 ;
Leds = 4;
texto('J', 3); //CAMBIA A 2 JUG
texto('U', 4);
texto('G', 5);
texto(55, 6);
texto(55, 7);
texto(57,
;
}
}
break;
case 1: //nivel =0 facil - nivel = 1 Dificil
if( Tecla == 1 ){ TIMERS_Detener(2); Estado = 2; flag = 0; } //va a estado juego
if( Tecla == 2 ){
if(nivel == 0){
nivel = 1; LimpiarPantalla();texto('D',3);texto('I',4);texto('F',5);
}
else {
nivel = 0 ;LimpiarPantalla();texto('F',3);texto('A',4);texto('C',5);texto('I',6);texto('L',7);
}
}
break;
}
break;
case 2: //Estado: Juego
juego();
break;
default:
break;
}
}
}
#int_TIMER1 //Interrupcion timer1
void Timer_Tick(void){
disable_interrupts(INT_TIMER1);
set_timer1 (0xff59);
enable_interrupts(INT_TIMER1);
//---------------------------------------------------------------------------------
// Aca tengo que poner todas las funciones que quiero que funcionen a 1 milisegundos
//---------------------------------------------------------------------------------
barrido_leds();
Barrido_Display();
Board();
TIMERS_Descuento(4);
TIMERS_Descuento(3);
//---------------------------------------------------------------------------------
dec--;
if(dec==0) // Base de tiempo de CENTESIMAS
{
dec = DECIMAS;
//---------------------------------------------------------------------------------
// Aca tengo que poner todas las funciones que quiero que funcionen a 1 centesima
//---------------------------------------------------------------------------------
TIMERS_Descuento(7);
TIMERS_Descuento(1);
//---------------------------------------------------------------------------------
seg--;
if(!seg) // Base de tiempo de SEGUNDOS
{
seg = SEGUNDOS;
//---------------------------------------------------------------------------------
// Aca tengo que poner todas las funciones que quiero que funcionen a 1 segundos
//---------------------------------------------------------------------------------
TIMERS_Descuento(2);
TIMERS_Descuento(5);
TIMERS_Descuento(6);
TIMERS_Descuento(7);
//---------------------------------------------------------------------------------
min--;
if(!min) // Base de tiempo de MINUTOS
{
min = MINUTOS;
//---------------------------------------------------------------------------------
// Aca tengo que poner todas las funciones que quiero que funcionen a 1 centesima
//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
hor--;
if(!hor) // Base de tiempo de HORAS
{
hor = HORAS;
//---------------------------------------------------------------------------------
// Aca tengo que poner todas las funciones que quiero que funcionen a 1 centesima
//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
}
}
}
}
}