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。