A. 51单片机用C语言产生一个100以内的随机数 怎么生成
C语言本身并不能产生随机数。
介绍一个比较简单的随机数获取方法:启动单片机的定时器,让它自己跑不要发生溢出中断,用户操作时直接读计数器数值,那基本上就是个随机数。
B. 求52单片机用C语言产生随机数的程序
#include <reg52.h>
#include <stdlib.h>
int main(void)
{
int i;
int dat = 123;
srand(dat);//这里的参数你要使用的话最好用袭禅缺日期,调用了这个函数拍辩,下面的rand函数产生的随机数就不会////每次一样,其实就是先产生一个种子
i = rand();//产生随机数,如果不调用srand(dat),这个函数每次调用产生的随机数是一袭袭样的
}
C. 51单片机C语言问题,怎么实现一个0-9随机排列的数列如a[10]={2,5,6,9,1,4,8,3,4,8,0,7 },
先有randomize初始陪简桥化,初始化一次就可以咐昌了,然后可以若干次用random,每次用random可芦猛以获得一个随机数
#include <stdlib.h>
main()
{
randomize();
for(i = 0; i < N; i++) {
a[i] = random(10);
}
}
D. 求助:用C语言编写一个单片机随机数
#include <reg52.h>
sbit Button = P1^0;
void Delay()
{
unsigned char i;
for(i=0;i<125;i++);
}
void main()
{
unsigned char DisplayData;
unsigned char DisplayCode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
TMOD=0X01;
TH0=0;
TL0=0;
ET0=1;
TR0=1;
EA=1;
while(1)
{
//利用定时器制造随机数,取出0~9的随机数
DisplayData=TH0%10;
if(Button == 0)
{
while(Button == 0)
{
P0=DisplayCode[DisplayData];
P2=0;
Delay();
}
}
}
}
void T0() interrupt 1
{
TH0=0;
TL0=0;
}
说明一下,楼主橘春没有给出图,我假蚂岩设以P1^0接开关了,P0为数码管段码,P2为数码管位选,如果P2没接138译码器就把0换成0x01就好了,主要是利用定时器的内部计数器来作随机数,因为内部计数器没变化一次为1us,闷伍御所以我们没法把握,把计算器低位数据取出后经过%10的运算,就能取到0~9的数据了
E. 51单片机用C语言如何产生随机数
1. 绝对宏:
在程序中,用“#include<absacc.h>”即可使用其中定码纳义的宏来访问绝对地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD
具体使用可看一看absacc.h便知,例如:
rval=CBYTE[0x0002];指向程序存贮器的0002h地址
rval=XWORD[0x0002];指向外RAM的0002h地址
2. _at_关键字
直接在数据定义后加上_at_ const即可,但是注意:
(1)绝对变量不能被初使化;
(2)bit型函数及变量不迟巧没能用_at_指定。
例如:
idata struct link list _at_ 0x40;指定list结宽肢构从40h开始。
xdata char text[25b] _at_0xE000;指定text数组从0E000H开始
提示:如果外部绝对变量是I/O端口等可自行变化数据,需要使用volatile关键字进行描述,请参考absacc.h。