请教!哪位大虾知道用单片机产生随机数的简便方法?

[复制链接]
查看11 | 回复1 | 2005-12-6 13:43:28 | 显示全部楼层 |阅读模式
http://www.pic16.com/tigao/tid10.htm怎样用单片机产生一个随机数 ?我想可以用定时器来作吧。
用tmr0就可以有256个随即数。然后再进行一些数学运算即可。具体我也没有用过。就算给你一个思路吧 看看这个有没有用啊//随机数/* Randomise lower 8 bits of 16-bit number */unsigned long rand_byte(unsigned long va1) {
char n; for(n=0;n<8;n++) va1=rand_bit(va1); return(va1); }/* Randomise l.s. bit of 16-bit number */unsigned long rand_bit(unsigned long va1) { char n=0; if (va1&0x8000)n=!n; if (va1&0x4000)n=!n; if (va1&0x1000)n=!n; if (va1&0x0008)n=!n; return(va1+va1+n;)
回复

使用道具 举报

千问 | 2005-12-6 13:43:28 | 显示全部楼层
PIC单片机产生伪随机数汇编语言程序 ;PIC单片机 www.pic16.comPSW
EQU 03R0
EQU 08R1
EQU 09R2
EQU 0AHR3
EQU 0BHR4
EQU 0CHR5
EQU 0DHR6
EQU 0EHR7
EQU 0FHTEMP EQU 13HCNT1 EQU 11HCNTH EQU 12HBUF0 EQU 17HBUF1 EQU 18HESUM1EQU 13HESUM2EQU 14HESUM3EQU 15HESUM4EQU 16HDSUM1EQU 19HDSUM2EQU 1AHDSUM3EQU 1BHDSUM4EQU 1CHDSUM5EQU 1DHDSUM6EQU 1EH
ORG 1FFH
GOTORADM
ORG 000D_ADDMOVFR0,0
ADDWF R6,1
BTFSC PSW,0
INCFR7
MOVFR1,0
ADDWF R7,1
RETLW 0DMU1 MOVLW 16
MOVWF TEMP
CLRFR7
CLRFR6DMUL_1 RRF R3
RRF R2
BTFSC PSW,0
CALLD_ADD
RRF R7
RRF R6
RRF R5
RRF R4
DECFSZ TEMP
GOTODMUL_1
RETLW 0RADM CLRFESUM1
CLRFESUM2
CLRFESUM3
CLRFESUM4
CLRFDSUM1
CLRFDSUM2
CLRFDSUM3
CLRFDSUM4
CLRFDSUM5
CLRFDSUM6
MOVLW 20H
MOVWF CNTHRADM_1 MOVLW 00
MOVWF CNTLRADM_2 MOVLW 64H
MOVWF R3
MOVLW 85H
MOVWF R2
MOVFBUF1,0
MOVWF R1
MOVFBUF0,0
MOVWF R0
CALLDMUL
MOVLW 19H
ADDWF R4,0
MOVWF R0
MOVWF BUF0
BTFSC PSW,0
INCFR5
MOVLW 36H
ADDWF R5,0
MOVWF R1
MOVWF BUF1
MOVFR0,0
ADDWF ESUM1,1
BUFSS PSW,0
GOTOEADD_1
INCFESUM2
BTFSS PSW,2
GOTOEADD_1
INCFESUM3
BTFSS PSW,2
GOTOEADD_1
INCFESUM4EADD_1 MOVFR1,0
ADDWF ESUM2,1
BTFSS PSW,0
GOTOEADD_2
BTFSS PSW,2
GOTOEADD_2
INCFESUM4EADD_2 BTFSC R1,7
GOTORADM_3
COMFR0,1
COMFR1,1
MOVLW 1
ADDWF R0,1
BTFSC PSW,0
INCFR1RADM_3 MOVLW 80H
ADDWF R1,1
MOVFR1,0
MOVWF R3
MOVFR0,0
MOVWF R2
CALLDMUL
MOVFR4,0
ADDWF DSUM1,1
BTFSS PSW,0
GOTODADD_1
INCFDSUM2
BTFSS PSW,2
GOTODADD_1
INCFDSUM3
BTFSS PSW,2
GOTODADD_1
INCFDSUM4
BTFSS PSW,2
GOTODADD_1
INCF DSUM6DADD_1 MOVF R5,0
ADDWFDSUM2,1
BTFSSPSW,0
GOTO DADD_2
INCF DSUM3
BTFSSPSW,2
GOTO DADD_2
INCF DSUM4
BTFSSPSW,2
GOTO DADD_2
INCF DSUM5
BTFSSPSW,2
GOTO DADD_2
INCF DSSUM6DADD_2 MOVF R6,0
ADDWFDSUM3,1
BTFSSPSW,0
GOTO DADD_3
INCF DSUM4
BTFSSPSW,2
GOTO DADD_3
INCF DSUM5
BTFSSPSW,2
GOTO DADD_3
INCF DSUM6DADD_3 MOVF R7,0
ADDWFDSUM4,1
BTFSSPSW,0
GOTO DADD_4
INCF DSUM5
BTFSSPSW,2
GOTO DADD_4
INCF DSUM6DADD_4 DECFSZ CNTL
GOTO RADM_2
DECFSZ CNTH
GOTO RADM_1
MOVLW5
MOVWFCNTLRADM_4 BCF
PSW,0
RRF
ESUM4
RRF
ESUM3
RRF
ESUM2
RRF
ESUM1
DECFSZ CNTL
GOTO RADM_4
MOVLW5
MOVWFCNTLRADM_5 BCF
PSW,0
RRF
DSUM6
RRF
DSUM5
RRF
DSUM4
RRF
DSUM3
RRF
DSUM2
RRF
DSUM1
DECFSZ CNTL
GOTO RADM_5LOOP GOTO LOOP
END
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行