PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zufallszahlen PIC16F84 cc5x



volkan
18.01.2005, 15:33
Folgendes problem:

Wir müssen als abschlussprojekt für die schule einen microcontroller (PIC 16F84) programmierein.
Und zwar:

Wir sollen 6aus45 (Lotto 6+1 zufallszahlen) auf einem LCD display ausgeben, hardware mäßig kein problem, aber die zufallszahl macht uns einfach zu schaffen, habe bereits lange gesucht, aber bis her nichts gefunden, und daher hier im forum unser versuch.
Per taster soll die ziehnung gestartet werden und die 6+1 zahlen nacheinander auf dem display angezigt werden. Random funktion gibt’s leider keine, also sollte die zufallszahl wahrscheinlich mittels timer konstruiert werden!
Um jede Hilfe dankbar, wir haben nämlich nicht mehr viel zeit!!!!
Gruß

PicNick
18.01.2005, 15:54
Hi, Volkan !

char random;

char rand(void)
{
char sum = 0;

if(random & 0x80)
sum = 1;

if(random & 0x20)
sum ^= 1;

if(random & 0x10)
sum ^= 1;

if(random & 0x04)
sum ^= 1;

random <<= 1;

random |= sum;

return(random);
}

void srand(char seed)
{
random = seed;
}



mfg robert

18.01.2005, 17:32
Das wird wahrscheinlich bei jedem Einschalten die gleichen Zufallszahlen erzeugen. Man müsste die Funktion mit irgendeiner Zufallszahl von außen initialisieren. Du könntest dafür beispielsweise Signale von einem AD-Wandler verwenden. Um eine möglichst große Zufälligkeit zu erreichen, könntest du den AD-Wandler mit einer kleinen Referenzspannung und kurzen Messzeit verwenden.

PicNick
18.01.2005, 18:37
Hi. JEDE Random Funktion liefert mit der gleichen SEED auch immer die gleiche Zahlenfolge (-->ausprobieren).

Der Witz bei der Funktion ist, das der Wert Pseudo-zufällig herumspringt.

Logo weiß der schlaue Denker, daß er als Seed irgendwas ebenfalls pseudo zufälliges nimmt, z.B. Timer, Uhrzeit oder sowas.
mfg robert