#include <pic.h>
#include <htc.h>
#define _XTAL_FREQ 4000000
int j1 = 0;
int j1_unidades = 0; //jugador 1
int j1_decenas = 0;
int j2 = 0;
int j2_unidades = 0; //jugador 2
int j2_decenas = 0;
void mostrar();
void main()
{
TRISA = 0xFF; //configuro el puerto A como entrada
TRISB = 0x00; //configuro los puertos B y C como salidas.
TRISC = 0x00;
PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
ANSEL = 0; //configuro todos los puestos como entrada/salida digital
while(1)
{
if(PORTAbits.RA4 == 1) //botón de reset
{
if(PORTAbits.RA0 == 0)
{
j1_unidades++;
j1++;
if(j1_unidades == 10)
{
j1_unidades = 0;
j1_decenas++;
}
}
if(PORTAbits.RA1 == 0)
{
j1_unidades--;
j1--;
if(j1_unidades == -1)
{
j1_unidades = 9;
j1_decenas--;
}
}
if(PORTAbits.RA2 == 0)
{
j2_unidades++;
j2++;
if(j2_unidades == 10)
{
j2_unidades = 0;
j2_decenas++;
}
}
if(PORTAbits.RA3 == 0)
{
j2_unidades--;
j2--;
if(j2_unidades == -1)
{
j2_unidades = 9;
j2_decenas--;
}
}
mostrar(20);
if(((j1==7)&&(j2==0))||((j1==11)&&(j2==1))||((j1>=21)&&((j1-j2)>=2))) //si gana el jugador 1, de cualquiera de las 3 formas posibles
{
//TRISA = 0x00; ¿como desjabilito el puerto A?
j2_decenas = 0;
j2_unidades =0;
mostrar();
}
if(((j2==7)&&(j1==0))||((j2==11)&&(j1==1))||((j2>=21)&&((j2-j1)>=2))) //si gana el jugador 2, de cualquiera de las 3 formas posibles
{
//TRISA = 0x00;
j1_decenas = 0;
j1_unidades =0;
mostrar();
}
} //fin "if" del reset
else
{
j1_decenas = 0;
j1_unidades = 0;
j2_decenas = 0;
j2_unidades =0;
j1 = 0;
j2 = 0;
mostrar();
TRISA = 0xFF;
}
} //fin while
} //fin main
void mostrar()
{
PORTC = j1_decenas;
PORTB = 0x10;
__delay_ms(20);
PORTC = j1_unidades;
PORTB = 0x20;
__delay_ms(20);
PORTC = j2_decenas;
PORTB = 0x40;
__delay_ms(20);
PORTC = j2_unidades;
PORTB = 0x80;
__delay_ms(20);
}