求51单片机汇编语言取随机数子程序

如题所述

其实不必要写成子程序,看你需要多少位的随机数,要是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: 其它指令
同样,用随机数时就从这两个单元中读取就行了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-10
启动空闲的定时器,随机读取就可以啦(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
第2个回答  2013-08-10
一个简单的方法…如果是随机数的范围很小可以用查表的方法!把所有的数打乱放一个地方!然后查表!有DJNZ指令给出查寻地址!起始数是你随机数范围,就可以啦!如果范围太大可以用定时器!

求51单片机汇编语言取随机数子程序
MOV A , NUMBERL INC A MOV NUBBERL, A ;保存低8位 JNZ TONEXT INC NUMBERH ;高8位加1 TONEXT: 其它指令 同样,用随机数时就从这两个单元中读取就行了。

51单片机中如何存取数组数据,用汇编语言写???急急急
用间接寻址指针寻址 不清楚51单片机的指令 mov a,50h mov mp1,a MP1是间接寻址指针寄存器 mov a,r1 mov [02],a [02]是间接寻址寄存器 这样就把R1写道地址50H里面了 反之一样 mov a,50h mov mp1,a mov a,[02]mov r1,a 这样就把50H地址的值写入R1了 ...

51单片机怎么用汇编语言生成随机数?
51单片机没有随机数产生的硬件,汇编语言中也没有相关指令。

求51单片机,有没有办法将四位的十进制数,每位单独抽出来?
首先把被除数分成2个字节,高字节和低字节。分的方法,就是你用被除数不停的减去100,这样就可以得到十进制的高字节14和余数86就是低字节。但是实际你看到的数据不是14和86,而是0E和56.然后你就需要用BCD调整指令DA调整成10进制的数码。先把低字节56加0,用DA调整指令,得到把16进制数调整成十进...

急求:单片机MS-51,用汇编语言编写程序的问题. 高手的高分,谢谢,_百度知...
实际上,不是255对应900,而是256对应900。那么:900 \/ 256 = 3.515 把0.015忽略,由此产生的误差,小于百分之一。那么,全部使用整数的运算,有:(0~255) * 35 = (0~8925)显示的时候,只是显示前3位,即可。--- 用8位的AD转换器,精度就是这样了,和算法无关。为了提高精度,应该采用分辨...

51单片机如何用汇编语言从十个数里选出最大值最小值
1、首先可以利用51单片机子程序输出找到的最大最小值。2、其次按照数据存储或者输入的顺序,把每2个数进行比较。3、最后每次比较都选择较大的数和下一个数据进行比较,这样最后一次比较中较大数就是10个数据里面的最大值。

怎么让51单片机产生随机数?
源代码不提供,你可以使用srand函数或是启用一个定时器,需要的随机数取自定时器的计数值或是以计数值作为种子,按照一定的算法产生随机数。

51单片机编程题,用汇编语言怎么做?
ET0=1; TR0=1;} void timer0() interrupt 1 { TH0 = (65536-500)\/256; \/\/定时器装初值500, 1mS 中断一次 TL0 = (65536-500)%256;CP=~CP; \/\/改变脉冲信号的输出状态 } void main(){ Timer0_init();CP=0;while(1) { } } 汇编语言,才看到,算了,你别人的回答吧 ...

51单片机,怎么用汇编语言编程一个程序。实现4个按键控制4种报警声音(1...
LJMP MAIN ORG 0030H MAIN:MOV SP,#5FH MOV TMOD,#11H SETB EA SETB ET0 SETB ET1 LOOP:LCALL KEYSCAN MOV A,R2 JNZ LP1 MOV DPTR,#TAB110 SJMP LPRUN LP1:DEC A JNZ LP2 MOV DPTR,#TAB119 SJMP LPRUN LP2:DEC A JNZ LP3 MOV DPTR,#TAB120 SJMP LPRUN LP3:DEC A JNZ LP4...

求y,y=x^2+2X+5,x为0到9。用51单片机汇编语言写
;X->R5,Y->R6 ORG 00H SJMP _MSTART _Y:MOV A,R5 MOV B,R5 MUL AB MOV R3,A MOV A,R5 MOV B,#2 MUL AB CLR C ADD A,R3 ADD A,#5 MOV R6,A RET _MSTART:MOV R5,#3 ACALL _Y JMP END

相似回答