Hola tengo un problema, no tengo disponible un simulador para probar este ejercicio , si alguien podria echarme una mano... para antes del lunes ( ya q es el examen). o en otro caso si veis algun error en el siguiente ejercicio.
Gracias de antemano
un saludo.
EJERCICIO DE TRAGAPERRAS CON EL PIC16F84A EN C
Maquina tragaperras (los 1 unos de mueven de 1 a 5) se incrementan las ganancias de 10 en 10. PIN_RA3. parar la maquina tragaperras.
Si los numeros son iguales en el momento q RA3 es cero se incrementa en 10 las ganancias.
int8 traga=1;
int8 retardo1=125, pos1, retardo2=250, pos2, retardo3=500, pos3;
#INT_TIMER0 //Interrupcion.
contaje()
{
if (retardo1 || retardo2 || retardo3)
{
retardo1--;
retardo2--;
retardo3--;
}
else
{
retardo1=125;
retardo2=250;
retardo3=500;
if (traga<6)
traga++;
else
traga=1;
}
set_timer0(130);
}
char win1[]="Enhorabuena!!", win2[]="Ganas 100Euros";
char gana[]="GANA: 0";//el cero es para el dinero ya ke sumara de 10 en 10 hasta 90.
int8 dinero=0;//se incrementara de 1 en 1 hasta 9
void main()
{
port_b_pullups(TRUE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
set_timer0(130);
// TODO: USER CODE!!
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
set_tris_A(0b00011000); //para activar pulsadores RA3 y RA4 (porque son los que se usan)
IniciaLcd();
EscrituraLcd(apaga_cursor, CTRL); //apaga cursor del Lcd, cero o CTRL para instrucciones y 1 o TEXT para poner texto
do
{
EscrituraLcd(0x81,CTRL); // escribe en la posicion del lcd.
TextoLCD(gana);//gana es el nombre del array inicializado arriba
EscrituraLcd(dinero+48,TEXT);// dinero son las ganancias acumuladas de 10 en 10.+48 para q aparezca 00.comprobar posicion por si varia.
do
{
retardo1=125;//cambia la velocidad del timer
EscrituraLcd(0xC9,CTRL);
pos1=traga;//paso la variable traga para despues comprobar el valor en que se para.
EscrituraLcd(pos1+48,TEXT);
retardo2=250;//cambia la velocidad del timer
EscrituraLcd(0xCB,CTRL);
pos2=traga;//paso la variable traga para despues comprobar el valor en que se para.
EscrituraLcd(pos2+48,TEXT);
retardo3=500;//cambia la velocidad del timer
EscrituraLcd(0xCD,CTRL);
pos3=traga;//paso la variable traga para despues comprobar el valor en que se para.
EscrituraLcd(pos3+48,TEXT);
}
while(!input_state(PIN_A3)); // comprueba el pinA3.si es cero.
while(input_state(PIN_A3)) //comprueba si el pinA3 es 1.
{
EscrituraLcd(0xC9,CTRL);
EscrituraLcd(pos1+48,TEXT);
EscrituraLcd(0xCB,CTRL);
EscrituraLcd(pos2+48,TEXT);
EscrituraLcd(0xCD,CTRL);
EscrituraLcd(pos3+48,TEXT);
if (pos1==pos2 && pos2==pos3)
{
dinero++;//incrementa dinero de 1 en 1.
if (dinero>9) //comprueba si dinero llega a 9.
{
EscrituraLcd(LCD_CLR_DISP,CTRL);//BORRAMOS PANTALLA
EscrituraLcd(0x80,CTRL);
TextoLcd(win1);
EscrituraLcd(0xc0,CTRL);
TextoLcd(win2);
}
}
}
}
while(1);
}