viernes, 25 de septiembre de 2009

PIC 16F876A USO DEL RAND() GENERAR NUMERO ALEATORIO

El siguiente programa esta echo en pic c perimite generar un numero aleatorio al pulsar un boton a partir de una semilla, con un rango de 545535 y lo muestra en una lcd seguido de la operacion de la recta:

CODE:

#include "D:\interfaces\lcd\punto_decimal.h"
#include //LIBRERIA PARA LCD
#include //LIBRERIA PARA RAND()

unsigned int16 i=100; //AKI SE ALMACENARA EL NUMERO ALEATORIO SE INICIA
//100 PARA UN VALOR DE SEMILLA
float b=0;
void main()
{

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

// TODO: USER CODE!!

lcd_init(); //INICIALIZAR LCD
while(true){


srand(i); //GENERAR NUMERO SEMILLA
if(!input(PIN_A0)) //¿se ha pulsado el boton?
{

lcd_putc("\f"); //LIMPIA LA PANTALLA DE LCD
do{ //elimina...
i=rand()%65535; //genera numero pseudo-aleatorio
//%N ES EL RANGO PARA GENERA NUM.
}while(!input(PIN_A0)); //...rebotes
b=i/65535.0;

b=b*100;
printf(lcd_putc,"aleatorio %Lu ",i); //IMP EN LCP EL NUMERO ALEATORIO
printf(lcd_putc," \nResul: %4.4f",b);//RESULTADO
}
}
}

resultado:












1 comentario:

  1. Gracias men, me funciona a la perfección =)

    para los que no saben (no quiero subestimar a nadie, nadie nace sabiendo) las librerías que tienen q agregar son estas:

    #include "16f877A.h" //---> según pic
    #use delay(clock=4M) //---> según frecuencia
    #include "lcd.c"
    #INCLUDE "STDLIB.H"

    ResponderEliminar