微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 8位单片机随机数

8位单片机随机数

时间:12-03 来源:互联网 点击:

,R_Temp+2,R_Temp+3

;--------------------------------------------------------------------------------

; 空间: 173个字节

; 速度: F_RandomSeed 326个周期

;================================================================================

F_RandomSeed:

LDA R_Seed0 ; R_Temp= 种子 *2

ASL

STA R_Temp

LDA R_Seed1

ROL

STA R_Temp+1

LDA R_Seed2

ROL

STA R_Temp+2

LDA R_Seed3

ROL

STA R_Temp+3

CLC ; R_Temp= R_Temp+ 种子 (= 种子 *3)

LDA R_Seed0

ADC R_Temp

STA R_Temp

LDA R_Seed1

ADC R_Temp+1

STA R_Temp+1

LDA R_Seed2

ADC R_Temp+2

STA R_Temp+2

LDA R_Seed3

ADC R_Temp+3

STA R_Temp+3

CLC ; 种子 = 种子 +$10000* 种子

LDA R_Seed2

ADC R_Seed0

TAX ; 把字节2保存在X中(利于提高速度)

LDA R_Seed3

ADC R_Seed1

TAY ; 把字节3保存在Y中

CLC ; 种子 = 种子 +$100* 种子

LDA R_Seed1

ADC R_Seed0

PHA ; 压入堆栈字节1

TXA

ADC R_Seed1

TAX

TYA

ADC R_Seed2

TAY

LDA R_Temp ; R_Temp= R_Temp*4(= 旧种子 *$0C)

ASL

ROL R_Temp+1

ROL R_Temp+2

ROL R_Temp+3

ASL

ROL R_Temp+1

ROL R_Temp+2

ROL R_Temp+3

STA R_Temp

CLC ; 种子 = 种子 +R_Temp

ADC R_Seed0

STA R_Seed0

PLA ; 弹出堆栈的字节1

ADC R_Temp+1

STA R_Seed1

TXA

ADC R_Temp+2

TAX

TYA

ADC R_Temp+3

TAY

CLC

LDA R_Temp ; 种子 = 种子 + R_Temp*$100

ADC R_Seed1

STA R_Seed1

1. 随机函数并非真正的随机数。
  2. 种子确定后,函数值也就确定了。
  3. 1664525和69069是两个特殊的数,用于线性方程的常数,可产生很好的随机效果。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top