其实不必要写成子程序,看你需要多少位的随机数,要是8位的,就在主循环程序中放一条
INC NUMBER 指令,NUMBER是定义的某个内部RAM单元,如:NUMBER EQU 30H,需要随机数时,从NUMBER中读取就行了,随机读取的,这个数也是随机的了。要是需要16位的,就用两个内部RAM单元来随机计数,一个做低8位,一个做8位就行了。在主循环程序中放如下指令:
MOV A , NUMBERL
INC A
MOV NUBBERL, A ;保存低8位
JNZ TONEXT
INC NUMBERH ;高8位加1
TONEXT: 其它指令
同样,用随机数时就从这两个单元中读取就行了。
启动空闲的定时器,随机读取就可以啦(0字)红心J[6次]2005-7-12 12:44:00
绝高(0字)kaikaiyu[2次]2005-7-13 21:06:06
高(0字)chess01[2次]2005-7-13 19:25:47
用定时器的计数来做好了。(0字)jk001[2次]2005-7-13 21:06:29
你用的51带AD吗?带就好办了,搞个垃圾的基准就好了!(0字)appleboy[8次]2005-7-12 10:12:02
这个方法不错!!厉害啊!(0字)扌丸着真心人[3次]2005-7-12 10:13:13
随便搞几个数据会变化的单元,再来几个加减乘除(0字)我是一条鱼[4次]2005-7-12 10:14:41
replay(746字)nj_majie[31次]2005-7-12 10:31:31
union{unsigned long next;unsigned char ne[4];}xdata unnext;void new_random_jump_frequency(void){ unsigned char data temp; unnext.next = unnext.next * 1103515245 + 12345; temp=(unnext.ne[0]+unnext.ne[1]+unnext.ne[2]+unnext.ne[3]) % 随机数范围(填入9,就表示0 到 8 随机) ; set_pll_frequence(temp);}他要汇编的!(0字)深海鱼[3次]2005-7-12 11:51:52
一个简单的方法…如果是随机数的范围很小可以用查表的方法!把所有的数打乱放一个地方!然后查表!有DJNZ指令给出查寻地址!起始数是你随机数范围,就可以啦!如果范围太大可以用定时器!