c51如何产生随机数?

[复制链接]
7471|10
 楼主| isbit 发表于 2008-10-13 18:12 | 显示全部楼层 |阅读模式
单片机处理的事情多,随机数很好办,
但是单片机开机基本按一条道跑下去,
随机数不随机啊,如何解决呢?
5880527 发表于 2008-10-13 21:00 | 显示全部楼层

TH0,TL0?

lyjian 发表于 2008-10-13 21:40 | 显示全部楼层

用keil提供的rand函数产生

李冬发 发表于 2008-10-14 04:57 | 显示全部楼层

用硬件吧

doob 发表于 2008-10-14 09:21 | 显示全部楼层

c51如何产生随机数?

这种外部事件单一的程序好像是说,timer或者 rand函数产生的随机数
都是伪随机数,要想产生真正的随机数恐怕需要硬件了!就有点麻烦!

做个噪声电路,然后ad采样获得!---这么复杂恐怕小的系统不划算!
bg6nw 发表于 2008-10-14 20:34 | 显示全部楼层

上电后主程序前

开一个计数器,自动装入初值的模式,不开他的溢出中断,然后不要管它了,什么时候要随机数到里面去取就是了。
5880527 发表于 2008-10-14 20:47 | 显示全部楼层

怎么会是伪随机数

你每次都是去读TL0呢,然后两次读到的8位组合成一个16位来看看
cauhorse 发表于 2008-10-14 21:46 | 显示全部楼层

我还真用过AD

DSP的12位AD采一个大温漂电路,出来值有上百的变化量。。
反正有16路之多,就拿出一路来做个事儿了。。。
inter_zhou 发表于 2008-10-14 23:11 | 显示全部楼层

软件做不到真正的随机

用软件也许真不到真正的随即,如果用时间作为随机数的种子,而在软件执行一个完整的循环时间是固定的话,那就做不到随机,如果执行一个主循环的时间不是固定的话,那用时间作为时间种子是没有多大问题的。
weihualong 发表于 2008-10-15 16:13 | 显示全部楼层

需要外部条件的参与

   若系统是一个没有外部条件输入的系统,则无论程序怎么写,总是确定的。
lingxueyou 发表于 2008-10-17 16:33 | 显示全部楼层

定时器设置一个计数变量

可以载定时器内部设置一个计数变量作++运用,程序里面读该计数变量就行了,好像C中rand()函数也是这样实现的,以前用过  好像效果还不错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

972

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部