#include <16f648a.h> //pic a utilizar
#define RAND_MAX 6 //De 0 a 5
#include <STDLIB.H> //libreria donde esta la funcion rand();
#use delay (clock=4000000) //Fosc=4Mhz
#use standard_io(B)
#use fast_io(A)
#define use_portb_lcd TRUE //definir portb lcd
#include<lcd.c> //libreria manejo lcd
///PROGRAMA
void main(void)
{
char num=0; //variable almacena numero aleatorio
set_tris_a(0xFF); //porta como entrada
disable_interrupts(GLOBAL); //todas las interrupciones desactivadas
lcd_init(); //inicializa lcd
srand(7); //maximo hasta 6 lcd_putc("Dado Electronico\nPulse boton...");
while(input(PIN_A0)){} //Se mantiene cabecera hasta que se pulse el boton
lcd_putc("\fDado:\nIntenta otra vez"); // mensaje de texto
lcd_gotoxy(7,1); //Coordenadas dond se muestra el numero
for(;;){ //bucle...
if(!input(PIN_A0)) //¿se ha pulsado el boton?
{
do{ //SI -> elimina...
num
=rand() + 1; //genera numero pseudo-aleatorio }while(!input(PIN_A0)); //...rebotes
if(num==6)
{
int j;
lcd_putc("\fDado: 6\n Felicidades!"); // Borro, el LCD y escribo el mensaje de texto
for(j=0;j<8;j++) // Repito 8 veces, cada vuelta es de 100ms, por lo que 30*100ms = 3s
{
output_high(PIN_B3); //activa buzzer(beep)
delay_ms(50); //tiempo de escucha del beep
output_low(PIN_B3); //desactiva buzzer(beep)
delay_ms(50); //tiempo de escucha del beep
}
}
else
{
lcd_putc("\fDado: %d\nIntenta otra vez",num); // Borro el LCD y escribo el mensaje de texto
output_high(PIN_B3); //activa buzzer(beep)
delay_ms(50); //tiempo de escucha del beep
output_low(PIN_B3); //desactiva buzzer(beep)
}
}
} //...infinito
}