• / 8
  • 下载费用:10 金币  

用单片机产生随机数的两种方法.pdf

关 键 词:
用单片机产生随机数的两种方法.pdf
资源描述:
方法一:定时器直接随机取值 每按一次按键生成一个随机数,这个随机数实际是把定时器的值给取出来了,并不能算绝对的随机、方法二才是真正意义上的随机。 仿真如下: #include sbit k1 = P1^0; unsigned int sum1,sum2; unsigned char led[11] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0X40}; void delay(unsigned int i) { unsigned int j,k; for(j = 0; j #include //包含rand()随机函数的头文件 unsigned char t,k,i,j,a,f,n[10]; //t是计时变量,k是按键标志,i是数组下标,f是随机数重复标志,n[10]是存放随机数的数组 void init() //初始化函数 { t = 0; i = 0; f = 0; k = 0; TMOD = 0x02; //设置定时器0为工作方式2 TH0 = 7; //装初值 TL0 = 7; EA = 1; //开总中断 ET0 = 1; //开定时器0中断 TR0 = 1; //启动定时0 EX0 = 1; //开外部中断0,同按键的效果一样 IT0 = 1; //下降沿触发 } void main() { init(); while(1) { while(k) //外部中断0触发循环 { if(!i) //i=0时取第一个随机数放入数组n[0] { srand(t); //随机数初始化 a = (char)(rand() % 10); //取随机数(0~9) n[0] = a; //存入数组 i++; //数组下标加1 } else while(i 10) //存放剩下的9个随机数 { srand(t); //随机数初始化 a = (char)(rand() % 10); //取随机数 for(j = 0; j i; j++) //与前面的随机数比较 { if(n[j] == a) //与前面的随机数相同 f = 1; //标志置1 } if(f) //有重复执行 { f = 0; //标志清0 continue; //结束本次循环 } n[i] = a; //不同则存入数组中 i++; //数组下标加1 } } } } void inter0() interrupt 0 //外部中断0 { k = 1; //按键标志置1,主函数执行取随机数 } void time0() interrupt 1 //定时器0中断 { t++; //时间加1 if(t == 100) { t = 0; } }
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:用单片机产生随机数的两种方法.pdf
链接地址:https://www.weizhuannet.com/p-10088160.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

微传网博客

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开