Gerar números aleatórios

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Gerar números aleatórios

Mensagempor casebsantos » 10 Ago 2007 21:19

Prezados,

Estou precisando de uma rotina em assembly que possa gerar aleatoriamente números de 1 a 6.
Já tentei de tudo que é jeito mas não consegui fazer esta rotina.
Estou utilizando o pic 16f84.

Alguém poderia me ajudar.

Desde já agradeço.
casebsantos
Bit
 
Mensagens: 32
Registrado em: 19 Fev 2007 19:41
Localização: Belém-PA

Re: Gerar números aleatórios

Mensagempor Renie » 11 Ago 2007 01:29

Olá Case,

Pronto eu não tenho, serve idéias? Proponho 2 simples, em ambas,você
ativa um timer e deixa ele rolar livre (sem ativar interrupt é claro!).

Parece que vc quer simular um dado eletrônico.

1 - Quando precisar do nr, leia o valor do timer e faça um AND com 7
(para ter todos os bits úteis), se o valor for zero ou 7 volte a ler o timer
até obter o valor no range desejado.

2 - Quando precisar do nr, leia o valor do timer e faça comparações
sucessivas (aproximadamente com valores variando de 43 em 43), ou
seja, se o valor for menor que 44 o resultado é 1, senão, se menor que 87
o resultado é 2, e assim em diante.
[]'s
Renie
-------------------------------------------------------------------------------------------------------------
Meu velho site com eletrônica praticamente parado http://www.reniemarquet.com
Nosso Blog http://artemadeiraevida.blogspot.com.br
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Mensagempor Peters » 11 Ago 2007 09:18

Só lembrar que neste caso as solicitações do Nro aleatório não pode ser periódica, senão ela pode ser previsível, e deixa de ser pseudo-aleatório.
Avatar do usuário
Peters
Byte
 
Mensagens: 123
Registrado em: 12 Out 2006 11:42
Localização: Canoinhas, SC

Re: Gerar números aleatórios

Mensagempor casebsantos » 11 Ago 2007 22:25

Amigo, na verdade não estou querendo simular um dado eletrônico é para outra aplicação.

A sua idéia me parece muito interessante o que não tinha pensado antes. Irei fazer isso então postarei o resultado.

Valeu

Renie escreveu:Olá Case,

Pronto eu não tenho, serve idéias? Proponho 2 simples, em ambas,você
ativa um timer e deixa ele rolar livre (sem ativar interrupt é claro!).

Parece que vc quer simular um dado eletrônico.

1 - Quando precisar do nr, leia o valor do timer e faça um AND com 7
(para ter todos os bits úteis), se o valor for zero ou 7 volte a ler o timer
até obter o valor no range desejado.

2 - Quando precisar do nr, leia o valor do timer e faça comparações
sucessivas (aproximadamente com valores variando de 43 em 43), ou
seja, se o valor for menor que 44 o resultado é 1, senão, se menor que 87
o resultado é 2, e assim em diante.
casebsantos
Bit
 
Mensagens: 32
Registrado em: 19 Fev 2007 19:41
Localização: Belém-PA

Mensagempor gibim » 12 Ago 2007 00:22

Olhe algumas informações neste link sobre números aleatórios.

http://asm51.eng.br/phpBB/viewtopic.php ... light=sha1
Avatar do usuário
gibim
Byte
 
Mensagens: 117
Registrado em: 08 Nov 2006 21:40
Localização: Londrina - PR

Mensagempor andre_luis » 13 Ago 2007 07:28

Quando o uC faz leitura de grandezas analógicas, isso pode facilitar um pouco.

Numa placa que eu lia o valor da rede eletrica de 60Hz constantemente, eu o usava também como semente para o gerador da a funçao rand(), da biblioteca do C.

Nesse caso acredito que o resultado fosse realmente aleatório, uma vez que a leitura era assíncrona à frequencia da rede eletrica.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x