刚写的程序,我的思想是用定时器加rand()随机函数来实现的,单片机上电之后通过按键去启动取随机数,若是单片机上电就立即取随机数的话,那每次上电随机的结果都是一样的。然后是0到9不重复的随机数,程序中用了循环来判断是否和前面取的随机数相同,相同则进入下次取随机数,不同则存入数组。
程序如下:
#include
#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]