8位单片机随机数
,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是两个特殊的数,用于线性方程的常数,可产生很好的随机效果。
8位单片机随机 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)