Zufallszahlengenerator und sichere Tasterabfrage (Quelle: Roboterclub-Freiburg)
PHP-Code:
//
// uint8_t zufall()
//
// Liefert eine 8Bit Pseudozufallszahl zurück,
// die Zahlenfolge wiederholt sich spätestens nach 65535 Aufrufen
//
uint8_t zufall()
{
static uint16_t startwert=0x0AA;
uint16_t temp;
uint8_t n;
for(n=1;n<8;n++)
{
temp = startwert;
startwert=startwert << 1;
temp ^= startwert;
if ( ( temp & 0x4000 ) == 0x4000 )
{
startwert |= 1;
}
}
return (startwert);
}
//*******************************************************************
// uint8_t KeyPressed(void)
//
// zeigt, ob eine Taste des ASUROs gedrckt ist.
//
// Die Funktion nutzt nicht den AD-Wandler wie die Funktion Pollswitch,
// sondern fragt die Tasten direkt digital ab.
// Grund: Funktion Pollswitch arbeitet nicht zuverlaessig.
//
// 23.5.2007 ch
//
//*******************************************************************
uint8_t KeyPressed(void)
{
uint8_t flag;
DDRD &= ~SWITCHES; // High Impedance ( Input )
DDRC |= (1<<PC4); // ADC-Switch-Pin to Output
PORTC |= (1<<PC4); // load capacitor / Pull up
Msleep(1);
DDRC &= ~(1<<PC4); // Set ACD-Switch to Input
PORTC &= ~(1<<PC4); // High Impedance
Msleep(1);
if(PIND&SWITCHES) flag=FALSE;
else flag=TRUE;
return flag;
}
Lesezeichen