PIC Microcontoller Math Methods

Quick little 8 bit random number generators

Andrew Warren [fastfwd at ix.netcom.com] of Fast Forward Engineering - San Diego, California says

Load a register called "RANDOM" with any non-zero value, then call this routine each time you'd like a new pseudo-random value:
 LFSR: RLF RANDOM,W
 RLF RANDOM,W
 BTFSC RANDOM,4
 XORLW 1
 BTFSC RANDOM,5
 XORLW 1
 BTFSC RANDOM,3
 XORLW 1
 MOVWF RANDOM
 RETLW 0

Scott Dattalo says:

[with the double RLF at the start of this routine,] Andy is implementing 'roll left' where the most significant bit of RANDOM will get copied to least significant position. This is how it works. The first RLF will copy the most significant bit of RANDOM into the carry. What ever was in the carry prior to the first RLF will get copied into the least significant bit position - but we don't care. Also, since the destination is the W register, the variable RANDOM is unaffected. The second RLF repeats the same rotate operation, but this time the carry has been initialized to the MS bit of random. So this second rotate will copy the MS bit into the least significant bit. All of the other bits are of course shifted left one bit position. See?

Or, if you prefer, you can use this routine (written by Marv Isaacman) instead:

 MARV: MOVLW 01DH
 CLRC
 RLF RANDOM
 SKPNC
 XORWF RANDOM
 RETLW 0

From Robert LaBudde and Nikolai Golovchenko

Randomize
;Rnew = Rold * 221 + 53
;221 = 256 -ひく 32 -ひく 4 +たす 1
;256 can be eliminated
;so we need to calculate Rnew = Rold * (1 - 32 - 4) + 53 using
;truncating arithmetic
;or Rnew = Rold * (-32 - 3) + 53
 clrc
 rlf Number, 1
 swapf Number, 0
 andlw 0xE0
 rrf Number, 1
 addwf Number, 0
 addwf Number, 0
 addwf Number, 0
 sublw 0x35
 movwf Number

See piclist post 200012円17円211923円a

Code:

Comments:

Questions:


file: /Techref/microchip/rand8bit.htm, 4KB, , updated: 2010年4月29日 10:42, local time: 2025年9月6日 06:46,
40.74.122.252:LOG IN

©2025 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions?
Please DO link to this page! Digg it! / MAKE!

<A HREF="http://techref.massmind.org/techref/microchip/rand8bit.htm"> PIC Microcontoller Math Methods - Quick little 8 bit random number generators</A>

After you find an appropriate page, you are invited to your to this massmind site! (posts will be visible only to you before review) Just type a nice message (short messages are blocked as spam) in the box and press the Post button. (HTML welcomed, but not the <A tag: Instead, use the link box to link to another page. A tutorial is available Members can login to post directly, become page editors, and be credited for their posts.


Link? Put it here:
if you want a response, please enter your email address:
Attn spammers: All posts are reviewed before being made visible to anyone other than the poster.
Did you find what you needed?

Welcome to massmind.org!

Welcome to techref.massmind.org!

.

AltStyle によって変換されたページ (->オリジナル) /