Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Generazione random con assembly

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] Generazione random con assembly

Messaggioda Foto Utentedanielto » 17 mag 2010, 11:35

Ciao ragazzi,
ho imparato ad usare il PIC da un anno,e ora volevo fare un mio progettino,so usare solo l'assembly e ho bisogno di fare una generazione di numeri da 1 a 90 in modalita random..devo fare una tombola elettronica insomma! :D :)
cioè generare un numero a caso da 1 a 90.come si fa con l'assembly? :?:
e poi dei consigli sul come fare se mi esce un numero gia uscito a non accettarlo ma ripetere la routine random.
Vi ringrazio...aspetto una risposta :D :P
Avatar utente
Foto Utentedanielto
0 2
 
Messaggi: 7
Iscritto il: 17 mag 2010, 11:29

0
voti

[2] Re: Generazione random con assembly

Messaggioda Foto UtenteTardoFreak » 17 mag 2010, 12:00

In assembly e' abbastanza semplice. Si tratta d' implementare uno shift register e metterci una retroazione che generei un numero pseudo casuale.
Un po' di teoria e comprenderai meglio.
Se trovo qualcosa di gia' implementato te lo postero'.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,8k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15763
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[3] Re: Generazione random con assembly

Messaggioda Foto UtentePaolino » 17 mag 2010, 12:28

Dai un'occhiata a questo articolo. C'è una sezione che riguarda la generazione dei numeri casuali. È vero, è scritta in C, ma la teoria che ci sta dietro è facilmente implementabile anche in assembly.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,5k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4220
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[4] Re: Generazione random con assembly

Messaggioda Foto UtenteTardoFreak » 17 mag 2010, 12:38

Se l' estrazione del numero e' comandata dalla pressione di un pulsante, cioe' da un intervento umano, puoi fare un contatore che s' incrementa sotto interrupt, chesso', un migliaio di volte al secondo. parte da 1 e arrivato a 91 ritorna a 1, un contatore continuo. Nel momento in cui premi il pulsante leggi il valore che ha in quel momento.
Sistema semplicissimo e totalmente casuale. :wink:
Ripeto: vale solo se c'e' un intervento umano. Altrimenti serve un generatore pseudo random.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,8k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15763
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[5] Re: Generazione random con assembly

Messaggioda Foto Utentedanielto » 17 mag 2010, 13:16

Edit TF: non quotare tutto per rispondere!

Grazie a tutti,

Si,la mia intenzione è di chiamare il numero con un pulsante.
dopo che faccio questo contatore da 1 a 91(lo faccio con il tmr0?)
come faccio a fare in modo che questo numero non venga ripetuto per quella serie di numeri?(vedi tombola)
Grazie per l'aiuto
Avatar utente
Foto Utentedanielto
0 2
 
Messaggi: 7
Iscritto il: 17 mag 2010, 11:29

0
voti

[6] Re: Generazione random con assembly

Messaggioda Foto UtenteTardoFreak » 17 mag 2010, 14:22

Con il timer 0 potresti crearti la temporizzazione. Sotto interrupt fai l' incremento. Per non estrarre due volte lo stesso numero puoi usare un' array monodimensionale di indicatori (estratto/non_estratto) che, verifichi ad ogni incremento del contatore. Se il numero e' gia estratto non fai niente, se si ricerchi, a partire da quel numero, il primo non estratto. Sempre in modo circolare.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,8k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15763
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[7] Re: Generazione random con assembly

Messaggioda Foto Utentedanielto » 18 mag 2010, 0:10

azzz...sembra facile ma non lo è affatto!
non sono a questi livelli di conoscenza...mi potete fare un esempio con assembly? :o
Grazie molto... :D :oops:
Avatar utente
Foto Utentedanielto
0 2
 
Messaggi: 7
Iscritto il: 17 mag 2010, 11:29

0
voti

[8] Re: Generazione random con assembly

Messaggioda Foto UtentePaolino » 18 mag 2010, 6:35

Beh, tanto per cominciare ti do qualche consiglio:
- scegli il PIC che intendi utilizzare: un 18 pin dovrebbe essere sufficiente, se vai a pilotare due display a 7 segmenti in multiplexing;
- stendi uno schema elettrico del circuito che poi dovrai realizzare;
- avvia il progetto con MPLAB, iniziando con le cose più semplci, quelle che sai fare;
- poi si impostano timer ed interrupt;
- infine la gestione del timer e del buffer di indicazione estratto/non estratto.

Se sudividi il problema in piccoli compiti da svolgere, vedrai che la cosa non è poi così complicata. L'importante è avere le idee chiare su cosa vuoi ottenere.

Suggerimento: utile sarebbe l'adozione di un CD4511 che è un decoder BDC per display a 7 segmenti. Un'applicazione di tale chip la trovi in questo articolo, ad esempio.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,5k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4220
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[9] Re: Generazione random con assembly

Messaggioda Foto Utentedanielto » 18 mag 2010, 11:57

ok...ho fatto come mi hai detto.
ho scelto un PIC 16f84,con 13 ingressi/uscita
La mia idea era quella di usare il timer0 oppure un contatore esterno che conta fino a 90,usare per la visualizzazione due til311,che mi usano 6piedini(4 per i numeri e 2 per il latch strobe)..
Il problema ora sarebbe come non far ripetere i numeri...con il PIC si può fare qualcosa?
Avatar utente
Foto Utentedanielto
0 2
 
Messaggi: 7
Iscritto il: 17 mag 2010, 11:29

0
voti

[10] Re: Generazione random con assembly

Messaggioda Foto UtentePaolino » 18 mag 2010, 12:30

danielito ha scritto:La mia idea era quella di usare il timer0 oppure un contatore esterno che conta fino a 90...

Va benissimo il TIMER0. Lo conosci? Hai letto il datasheet? Sai come impostarlo? Per farlo contare da 1 a 90 non è un problema, fidati.

danielito ha scritto:...usare per la visualizzazione due til311,che mi usano 6piedini(4 per i numeri e 2 per il latch strobe)..

Secondo me, basta solo uno strobe, a meno che tu non voglia far lampeggiare i numeri...

Procediamo per gradi: disegna uno schema elettrico, mettendoci tutto, ma proprio TUTTO! Dalle alimentazioni al quarzo, pulsante, PIC e display. Se non abbiamo uno schema sul quale basarci possiamo fare solo accademia, solo un po' di teoria. E allora non serve nemmeno parlare di applicazione, non trovi :wink: ?

Ciao.

Paolo.

EDIT.
P.S. Questo è il datasheet del display che vuoi usare.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,5k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4220
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

Prossimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti