#Random number generator

2 messages · Page 1 of 1 (latest)

wheat gale
#

Hi.
im using AVR Studio 4 with the mirco chip ATmega8535

i have attached the homework requirements.
my error is i keep getting the same number generated.
what is my problem?

this is the code i have written:

; Random Number Generator
; Using ATmega8535

.include "m8535def.inc"

.equ leftCounter = 7
.equ preSeed = $4F
.equ max_num = 59
.equ min_num = 1
.equ lot = 6 ; lot is the number of two-digit numbers to generate

.def allUse = r16
.def seed = r20 ; seed is the large number generated by software using one or more values
.def most = r22
.def least = r23
.def counter = r24

.cseg
.org $0000
rjmp reset ; INITIALISING STACK POINTERS

; Reset routine
reset:
ldi allUse, LOW(RAMEND)
out SPL, allUse
ldi allUse, HIGH(RAMEND)
out SPH, allUse
rjmp main

; Display 6 2-digit numbers
main:
ldi seed, preSeed
ldi counter, lot

loop1:
; The main calls random
rcall random

cpi seed, 0
breq endloop1

; The value is then passed on to the rcall splice
rcall splice

cpi least, max_num
brge loop1
cpi least, min_num
brge loop1

; If the values are out DDRA, most
out PORTA, most ; where portA will display

out DDRB, least ; portB will display
out PORTB, least

dec counter
cpi counter, 0
breq endloop1

rjmp loop1

endloop1:
rjmp end

; Splices 8-bit hex value
splice:
mov most, seed
mov least, seed
andi most, 0b11110000
andi least, 0b00001111
lsr most
lsr most
lsr most
lsr most
ret

; The pseudo-random number generator
random:
mov r17, seed
mov r18, seed
andi r17, 0b00000001
andi r18, 0b00000010
lsr r18
eor r17, r18
ldi r18, leftCounter

loop2:
lsl r17
dec r18
mov seed, r17
clr r17
clr r18
ret

; Endless loop
end:
rjmp end

sharp dewBOT
#

When your question is answered use !solved to mark the question as resolved.

Remember to ask specific questions, provide necessary details, and reduce your question to its simplest form. For tips on how to ask a good question use !howto ask.