标题:
单片机产生随机数函数srand()的应用
[打印本页]
作者:
不能说的秘密
时间:
2018-6-18 00:58
标题:
单片机产生随机数函数srand()的应用
#include <reg52.h>
#include <intrins.h>
#include <stdlib.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]= //共阳数码管编码0~F
{0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xc0,0x86,0x8e};
uchar t;
uint a,b,c;
sbit key1=P2^0;
sbit D1=P1^1;
sbit D2=P1^2;
sbit D3=P1^3;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display()
{
bai=num/100; //输出百位
shi=num%100/10;//输出十位
ge=num%10; //输出个位
D1=0;
P0=table[a];
delay(10);
P0=0xff;
D1=1;
D2=0;
P0=table[b];
delay(10);
P0=0xff;
D2=1;
D3=0;
P0=table[c];
delay(10);
D3=1;
}
void key()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
while(!key1);
TR0=~TR0;
srand(t); //初始化种子,函数srand(t)在stdlib.h
}
}
}
void main()
{
// EX0=1; //使能外部中断0
// IT0=1; //设置外部中断0触发方式为低脉冲
num=0;
EA=1; //开总中断
ET0=1;
TMOD=0x01; //设置T1工作方式
TH0=(65536-45872)/256; //50ms定时
TL0=(65536-45872)%256;
TR0=0;
while(1)
{
key();
display();
}
}
void T0_time() interrupt 1
{
// ET0=0; //首先关闭中断
TH0=(65536-50000)/256; //然后重新装入预制值
TL0=(65536-50000)%256;
// ET0=1; //打开T0中断
t++;
if(t==20) //如果到了20次,说明1000ms时间到
{
t=0; //然后把t清零
}
a=rand()%12; //获得0~12之间的随机数,函数rand()在stdlib.h
b=rand()%12;
c=rand()%12;
//randdata=rand()%(300-200+1)+200 //获得200~300之间的随机数,函数rand()在stdlib.h
}
/*
EX_INT0() interrupt 0 using 1 //外部中断0服务函数
{
if(TR0==1) //判断当前定时计数器的状态
{
TR0=0;
}
else
{
TR0=1;
srand(t); //初始化种子,函数srand(t)在stdlib.h
}
}
*/
复制代码
作者:
aktuan007
时间:
2020-4-30 10:09
要是能有注释就好了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1