Cuando yo hice un dado electrónico lo hice con el contador del timer, en un AVR pero para el caso es lo mismo. Simulaba estados random.
Para empezar necesitas saber cuántos estados aleatorios necesitas. En mi caso fueron 6: 1,2,3,4,5 y 6 (las 6 caras del dado). ¿Cuántos estados necesitas tú?
El contador del timer era de 8bits, entonces cuando el usuario apretaba un botón, se obtenía el conteo del timer, que podía ser de 0 a 255, un número aleatorio.
Para obtener los 6 estados de los 256 números posibles se puede hacer una división. Digamos que cae en 137...
137 / 6 = 22 + 5/6 (veintidós enteros cinco sextos)
Tomas el residuo 5 (de cinco sextos). En este caso el estado aleatorio cayó en 5, de 6 estados posibles: 0,1,2,3,4 y5.
Si haces una subrutina que seleccione los estados, tendría que ser para el número de estados que obtendrás (256 si es con un timer de 8bit) dividido entre los estados que deseas (en mi caso 6).
El ejemplo del dado para un at90s1200 está aquí. En este ejemplo uso otro método para elegir el estado random, pero te lo dejo de todas formas.
http://www.todopic.com.ar/foros/index.php?topic=1124.msg9339#msg9339También hay otra forma de generar números aleatorios usando el hardware del AVR. NEcesitas tener un AVR con convertidor ADC. Simplemente dejas sin concetar la terminal encargada del ADC y en la lectura digital obtendrás un número aleatorio, ya que la terminal está abierta.
Cuéntame si tienes dudas.
