打印

各位好,如何在上电时让单片机输出一组随机数?

[复制链接]
2804|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mikezhong|  楼主 | 2007-12-27 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我遇到一个这样的问题,我有一个电路需要上电后串行输出一组12位的数据码,可以是从000000000000到111111111111之间的任意数,程序要怎么样写才能让单片机上电后输出一个任意的12位的码,从而保证每个产品的码都是不同的?

如果利用烧入不同固定码的程序,那么如果要制作2的12次方个这样的电路,那用4千多个程序显然是不太聪明的做法。

相关帖子

沙发
mikezhong|  楼主 | 2007-12-27 17:18 | 只看该作者

各位有没有好的办法?

谢谢。

使用特权

评论回复
板凳
OneMillion| | 2007-12-27 17:44 | 只看该作者

做个变量撒

1 限制变量的值在 0~ 0x0fff 之间,
2 做假随机函数
3 如果要掉电保护,那么得用到4Kbit的FLASH ROM存储标记
  用位变量来标示某个数字已经使用了,

使用特权

评论回复
地板
mikezhong|  楼主 | 2007-12-27 17:50 | 只看该作者

Thanks.

没有外带及内带EEPROM。只用程序怎样解决?

使用特权

评论回复
5
谈的元| | 2007-12-27 18:24 | 只看该作者

3楼说了呀,做伪随机数

什么芯片呀,很多厂家都支持序列号编程,就是几个字节自动增加

使用特权

评论回复
6
newhere| | 2007-12-27 20:10 | 只看该作者

keil

/*--------------------------------------------------------------------------
STDLIB.H

Standard functions.
Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
extern void  srand (int);
可以得到16bit,随便取12即可

使用特权

评论回复
7
yewuyi| | 2007-12-27 20:22 | 只看该作者

很多编程器支持SN++

使用特权

评论回复
8
qinyp| | 2007-12-28 00:13 | 只看该作者

re

用LS的方法最实用

使用特权

评论回复
9
taoest| | 2007-12-28 01:10 | 只看该作者

真随机数

使用一个放大器,将三极管的热噪音放大整形,用一个IO口来测量脉宽,然后换算。算法做得好,就可以认为是真随机数。
简单点的,可以测量上电时市电的相位,和市电上的干扰脉宽之类。

使用特权

评论回复
10
ayb_ice| | 2007-12-28 08:09 | 只看该作者

标准的srand是伪随机函数

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

250

帖子

1

粉丝