導航:首頁 > 操作系統 > 51單片機隨機數

51單片機隨機數

發布時間:2022-11-20 00:58:17

『壹』 怎麼讓51單片機產生隨機數

源代碼不提供,你可以使用srand函數或是啟用一個定時器,需要的隨機數取自定時器的計數值或是以計數值作為種子,按照一定的演算法產生隨機數。

『貳』 51單片機如何生成隨機數

計算機
只能產生偽隨機數
(計算機不具有自發性)
你可以用定時器來產生偽隨機數
比如事先運行定時器
然後再讀定時器的值

『叄』 51單片機產生隨機數c程序

剛寫的程序,我的思想是用定時器加rand()隨機函數來實現的,單片機上電之後通過按鍵去啟動取隨機數,若是單片機上電就立即取隨機數的話,那每次上電隨機的結果都是一樣的。然後是0到9不重復的隨機數,程序中用了循環來判斷是否和前面取的隨機數相同,相同則進入下次取隨機數,不同則存入數組。程序如下:#include<reg52.h>
#include<stdlib.h> //包含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]
{
srand(t); //隨機數初始化
a=(char)(rand()%10); //取隨機數(0~9)
n[0]=a; //存入數組
i++; //數組下標加1
}
else
while(i<10) //存放剩下的9個隨機數
{
srand(t); //隨機數初始化
a=(char)(rand()%10); //取隨機數
for(j=0;j<i;j++) //與前面的隨機數比較
{
if(n[j]==a) //與前面的隨機數相同
f=1; //標志置1
}
if(f) //有重復執行
{
f=0; //標志清0
continue; //結束本次循環
}
n[i]=a; //不同則存入數組中
i++; //數組下標加1
}
}
}
}
void inter0() interrupt 0 //外部中斷0
{
k=1; //按鍵標志置1,主函數執行取隨機數
}
void time0() interrupt 1 //定時器0中斷
{
t++; //時間加1
if(t==100) t=0;
}

『肆』 單片機 51 隨機數輸出0到100

把 num=rand();
num=num-32667;
這兩句改成
num=rand()%101;

不過單片機內如果沒有時鍾做srand種子的話,雖然是隨機,
但是單片機重啟後出現的隨機數和上次重啟出現的隨機數是一樣的,不是真正意義上的隨機數

『伍』 求高手賜教:51單片機怎麼產生隨機數

啟動定時器,需要隨機數時從定時器里讀一個值出來當作隨機數。
或者調用random()函數,不過得到的是偽隨機數。

『陸』 求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: 其它指令
同樣,用隨機數時就從這兩個單元中讀取就行了。

『柒』 [請教高手]單片機怎麼實現產生隨機數

對於51單片機里有兩個定時器/計數器,可以利用其中的一個來產生隨機數。但要設置成方式2,自己計數狀態。這樣,只有8位數。但不要開中斷,只要計數就行。需要時就讀一次定時器的低8位就行了。
編程序,用定時器T1
MOV
TMOD,#20H
MOV
TH1,#0
MOV
TL1,#0
SETB
TR1
需要的時候,讀TL1,是8位數
MOV
A,
TL1
如果需要16位數,可以對讀出的8位數進行加或乘計算

『捌』 51單片機用C語言產生一個100以內的隨機數 怎麼生成

C語言本身並不能產生隨機數。
介紹一個比較簡單的隨機數獲取方法:啟動單片機的定時器,讓它自己跑不要發生溢出中斷,用戶操作時直接讀計數器數值,那基本上就是個隨機數。

『玖』 51單片機串口發送隨機數

不是串口的錯.
是你的代碼寫錯誤了.
改成
printf("I = %d,RAND = %u\n",(int)i,num);

%d是需要 16位的有符合的參數的.
%u才是需要16位無符號參數的.

閱讀全文

與51單片機隨機數相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163