RANDOM BYTE

Para "abobrinhas" use o " Boteco"

Moderadores: andre_luis, 51, guest2003, Renie

RANDOM BYTE

Mensagempor fabim » 24 Ago 2008 21:45

psoall.
Num sei se alguém esta procurando, ou ja precisou e passou raiva.
Taí um gerador de numeros randonicos, em byte com valor máximo definivel, por ser pascal quem olhar vai saber como que funciona.

Ficou uma tetéia de xick.

function DRANDOM(max_r : byte) : byte;
var val1,val2,val3, max_val : byte;
begin
val1 := val1;
val2 := val2;
val3 := val3;
max_val := max_val;
repeat
begin
asm
movf _DRANDOM_local_val1,w ;
addwf _DRANDOM_local_val2,w ;
movwf _DRANDOM_local_val2 ;
addwf _DRANDOM_local_val3,w ;
movwf _DRANDOM_local_val3 ;
addwf _DRANDOM_local_val1 ;
swapf _DRANDOM_local_val1 ;
movf _DRANDOM_local_val1,w ;
movwf _DRANDOM_local_max_val
end;
end;
until ((max_val < max_r) AND (max_val > 0));
result := max_val;
end;

fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: RANDOM BYTE

Mensagempor andre_luis » 25 Ago 2008 08:40

Qual é a semente da função ?
"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

Mensagempor fabim » 25 Ago 2008 08:53

êim ?
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor andre_luis » 25 Ago 2008 10:29

Trata-se de um gerador de números aleatórios ?
Para core PIC ?

+++
"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

Mensagempor fabim » 25 Ago 2008 10:34

Á. Que coisa viu.
Esses CDF falando dificil.

Sim, Andre.
É um gerador randônico de valores de 0 a 255, com máximo valor passado como referencia.
Exemplo 32.
Ele só vai repitir o mesmo valor depois de Ref/2.

No mais fica lindão o funcionamento, quase explidi os miolu, mais té que enfim funfou e como funfou.

Tão. Fiz um gerador de 0 a 199 em um painel, para um posto de combustiveis, para sorteio de brindes.

Sobre o painel, tem uma amofada ligada a um potenciometro.
Conforme a porrada do cara eu converto a tensão máxima que o potenciometro forneceu entre 0.5S e 5.5Segundos.
Nesse meio tempo o parei fica gerando aquela porrada de numeros aleatórios, se no final do tempo o numero for igual a um dos 3 numeros do bieti o cara ganha o brinde.

Ficou legal.rs

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor andre_luis » 25 Ago 2008 11:01

Ahh...agora entendi a lógica.

Também já fiz algo semelhante. Num sistema onde eu lia as fases da rede, eu usava a própria leitura da fase ( que ocorria assincronamente à temporização do sistema ) da rede como entrada para a função.

Voce gosta mesmo de mesclar linguagens de programação, né ?

+++
"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

Mensagempor fabim » 25 Ago 2008 11:29

é sinhô.
Pega a parte de asm, observe a logica, faça em C ou pascal puro.

Essa rotina vai ficar 5X maior.

E ainda vai incluir uma rotina de mult_32X32 = 693 bytes.rsrs

Por isso eu programo em PASCAL, BASIC, ASM.rs

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Djalma Toledo Rodrigues » 29 Ago 2008 01:32

Uma sugestão:
Loop:
movlw NNH
movwf rdm
Random:
decfsz rdm,F
goto Ramdom
goto Loop

Quando ocorrer o evento interrompe e lê rdm, como o evento não é sincronizado ( O instante que ocorre é aleatório), o conteúdo de rdm será perfeitamente randomico.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor fabim » 29 Ago 2008 08:25

Meu, Desculpa a pergunta.
Mais a quanto tempo você trabalha com programação e eletronica ?
Óiz da uma zoiada no que você sujestionou...

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Djalma Toledo Rodrigues » 29 Ago 2008 09:31

Fabim, eu não 'Çabo' o vc quiz dizer ou a quem se digeriu. :shock: rsrsrs
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Re: RANDOM BYTE

Mensagempor falcaum » 12 Mar 2010 10:46

me dá uma luz por favor fabim
fabim escreveu: val1 := val1;
val2 := val2;
val3 := val3;
max_val := max_val;

levei uma surra nessa parte do pascal, que raio de incialização é essa??? nunca vi nada parecido em nenhuma linguagem de programção
onde entra a semente max_r?
Vou usar sua rotina(pretendo) depois te mando os direitos :roll:
Avatar do usuário
falcaum
Bit
 
Mensagens: 10
Registrado em: 31 Ago 2009 15:04
Localização: Espírito Santo - Vitória

Re: RANDOM BYTE

Mensagempor fabim » 12 Mar 2010 10:55

falcaum escreveu:me dá uma luz por favor fabim
fabim escreveu: val1 := val1;
val2 := val2;
val3 := val3;
max_val := max_val;

levei uma surra nessa parte do pascal, que raio de incialização é essa??? nunca vi nada parecido em nenhuma linguagem de programção
onde entra a semente max_r?
Vou usar sua rotina(pretendo) depois te mando os direitos :roll:


Nossa isso que é desenterrar, esta epoca aí eu ainda não conhecia C.
intão eu inicializo a variavel com ela mesmo por quê.........
O mikropascal tinha uma putaria de excluir as variaveis que não eram utilizadas, fazendo uso apenas de umas variaveis de sistema que ele criava. Isto porque ele simplesmente achava que podia ser daquela forma e pronto.
Quando faz-se variavel=variavel, éra uma forma de falar pro compilador que eu ia utilizar aquela variavel, intão não era pra apagala e usar as vars de sistema que ele criava..

sóissosinhô;.
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor MOR_AL » 12 Mar 2010 11:20

Achei na página da mikroElektronika, compilador mikroBasic Pro.
Autor : XOR
Parece que foi testado e funcionou legal.

Código: Selecionar todos
I have assembly for a PIC number generator which was published in EDN magazine. It's internally a 31-bit shift register and can be used effectively as a white noise generator. It doesn't repeat for 17.8 hours of continuous operation @ 4 MHz.


Maiores detalhes no endereço: http://www.mikroe.com/forum/viewtopic.php?p=15294#15294

Código: Selecionar todos
      RLF     MAIN_GLOBAL_RANDOM,W
      RLF     MAIN_GLOBAL_RANDOM,W
      BTFSC   MAIN_GLOBAL_RANDOM,4
      XORLW   1
      BTFSC   MAIN_GLOBAL_RANDOM,5
      XORLW   1
      BTFSC   MAIN_GLOBAL_RANDOM,3
      XORLW   1
      MOVWF   MAIN_GLOBAL_RANDOM

MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor MOR_AL » 12 Mar 2010 16:53

Agora.
Pelo que eu entendi, esses códigos geram valores (de 0 a 255) pseudo-aleatórios. A sequência seria a mesma para um mesmo valor de entrada. É isso?
Já o sistema do André gera valores aleatórios, se não sincronizarmos o instante da leitura da fase.
No entanto, a distribuição das ocorrências dos valores não seria igual para todos os possíveis números, uma vez que na senóide ocorre maior permanência da função (no tempo) nos limites inferior e superior. O ideal seria se ao invés de senóide, fosse uma onda triangular assíncrona com o uC.
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor jorgeluiz » 13 Mar 2010 01:09

A AN544 da Microchip tem um codigo simples pra gerar esses numeros pseudo-aleatorios, como disse o Mo_ral. Tem a distribuiçao randomica e gaussiana.
Avatar do usuário
jorgeluiz
Byte
 
Mensagens: 448
Registrado em: 26 Mar 2007 02:26


Voltar para Assuntos Gerais

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

cron

x