【发布时间】:2016-09-26 07:07:48
【问题描述】:
如何在 Avr Studio 4 中生成随机数(命令)。我有一个 ATMEGA168。 我想生成随机数,所以“warten”(等待)有一个未定义的等待时间并且一直在变化。因此,如果它从 255 减少到 0 等。我希望它生成一个随机数,该随机数定义它是否会再次等待,或者是否会重新等待。 这是我的代码:
.include "m168def.inc" ;ATMega 168
rjmp main
main:
ldi r16, 0b00000100
out ddrB, r16
loop:
ldi r16, 0b00000100
out portB, r16
rcall warten
ldi r16, 0b00000000
out portB, r16
rcall warten
rjmp loop
warten:
ldi r17,2
w3:
ldi r18,255
w2:
ldi r19,255
w1:
dec r19
brne w1
dec r18
brne w2
dec r17
brne w3
ret
【问题讨论】:
-
你应该把它标记为程序集而不是 c
-
可能最简单的 PRNG 是某种 xorshift 算法 en.wikipedia.org/wiki/Xorshift 。请注意,在汇编程序中编写算法时,您可以利用移位操作通常会移入进位这一事实,而这在 C 中是无法完成的
-
对不起,我实际上并不确定这是哪种语言,因为我上周在学校开始学习。我的意思是在 AVR Studio 4 中生成随机数的代码
标签: assembly random numbers avr