RANDOM komutu hakkında

Başlatan Kaldirim_Teknikeri, 04 Aralık 2009, 03:26:03

Kaldirim_Teknikeri

İyi akşamlar dilerim yapmak istediğim random komutunu kullanarak bir devre tasarlamak. 16F84, buton, 7 segment displey kullanacağım. Her butona bastığımda 0 ile 9 arasında rastgele sayı üretip 7 segment displeyde göstermek istiyorum.

Random komutunu kitaptan inceledim.

Alıntı Yap"Random değişken içerisinde rastgele bir sayı üretmek için kullanılır. Değişken 16 bit'lik olarak tanımlanması gerekir. Random ile değişken indeksli array değişkenler kullanılamaz ancak sabit indeksli array değişkenler kullanılabilir. Üretilen sayı 1-65535 arasındadır."

RANDOM W4 ' W4 değişkenine 1-65535 arasında bir sayı yerleştir.

haliyle bu bilgiyi yetersiz buldum 1-65535 arasında değilde 0-9 arasında bir sayıyı üretmem için yazmam gereken 1 satırlık kodu nasıl yazabilirim?

Acaba Random komutunu for döngüsüyle kullanarak yapılabilir mi?
Yada Random komutu değilde farklı bir sistem mi kullanmalıyım?

mustafacan

sanırım W4 değerinede max min değer tanımlama yapabilirsiniz.
Keşfedilecek çok teknoloji var. Boş Vaktim Yok!

ete

Cevap Basit,

SAYI var word
RAKAM vAR BYTE 
basla:

random SAYI
RAKAM=SAYI DIG 0

LCDOUT $fe,1,"SAYI=", dec4 sayI
LCDOUT $fe,$c0,"RAKAM=",dec1 rakam
pause 1000
Goto basla


Komutu RANDOM SAYI
SAYI=SAYI DIG 0  şeklinde kullanmayın kısır dögüye giriyor ve sürekli aynı 3 sayıyı üretiyor. Yukarıdaki şekilde sonuç fena değil. İşe çeşni katmak amacı ile RANDOM komutundan sonra şöyle bir komut daha ilave edebilirsiniz.
IF SAYI>50 then SAYI=SAYI/12

Kolay Gelsin
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

azimli

kullanmayı bildiğiniz gibi sayıyı yine 16 bit tam sayı değişkenine atın 1-65535 arasında sonra bu değişkenin ilk üç bitini değerlendirin 0-8 arası rakamları görün.

yada C derleyicisi kullanırsanız istediğiniz aralıkta rastgele sayı ürettirebilirsiniz o aralığa uygun boyutta değişkenede bu sayıyı atarsınız.bir üstte bunun gibi çalışan bir basic kodu var herhalde iş C de de bu şekilde kolay.

Random kullanımı her AnsiC kitabında anlatılır genelde.
arama motoruna random C yada random basic yazarsanız kullanım şekilleri gelir.

Kaldirim_Teknikeri

bir süre internetim olmadığı için bu mesajımı takip edemedim ve aranıza bugünden itibaren tekrar döndüm. :)

Random komutu hakkında yazdığınız değerli bilgilerinizi okudum gerçekten anlamlı olmuş sayenizde random komutunu istediğim gibi kullanabiliyorum. Ve elimdeki kitapdan Random komutunu neden anlamadığımı bende anlamadım iyi anlatmamışlar yada üzerinde fazla durmamışlar bundan kaynaklanabilir yada sorun bende de olabilir.

Şimdi 7 segment displeyde 4511 aracılığıyla rastgele sayı üretebildiğim kodları sizinle paylaşmak istiyorum.

DEFINE LCD_DREG  PORTB
DEFINE LCD_DBIT  4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG  PORTB
DEFINE LCD_EBIT  1
DEFINE LCD_BITS  4
DEFINE LCD_LINES 2
TRISB=0
PORTB=0
SYMBOL BUTON=PORTA.0
SAYI VAR WORD
RAKAM VAR BYTE
START:
IF BUTON=1 THEN GOTO SAYI_GOSTER 'PULL-DOWN DİRENCİ
GOTO BASLA
SAYI_GOSTER:
RANDOM SAYI
RAKAM=SAYI DIG 0
PORTB=240 | RAKAM
LOW PORTB.4
PAUSE 1
HIGH PORTB.4
PAUSE 1000
GOTO BASLA

kafa1500

Display kullanıyorsan, sanırım "define lcd" kısımları gereksiz olmuş.
Güzelin nazına, Ford'un ara gazına hastayım.

Kaldirim_Teknikeri

Ete Bey birşey dikkatimi çekti. Random komutu, pic e ilk enerji verdiğimde her defasında aynı sayıları üretiyor. Sayılar sürekli aynı sırayla işliyor sizce bu mantık nasıl yürütülüyor.  Bu komut 1-65535 sayıları arasında sürekli bir sayı verdiğini düşünürsek ne zaman başa döner bu benim dikkatimi çekti ben bunu araştıracağım ama sizin yorumunuzuda almak isterim.

Şöyle birşey yaparsam bu komutun mantığını tamamen anlayabilirmiyim. Random komutuyla sürekli bir sayı üreterek bu sayıları rs232 üzerinden bilgisayara aktarsam ve note pad a kaydetsem sonuç olarak bir çözüme ulaşabilirmiyim?

:roll:

kafa1500, kusura bakma senin mesajı kaçırmışım yeni görüyorum. Siz haklısınız.

ete

Random komutunun sürekli aynı sayıları üretmesi ve yavaş yavaş sayı değerini büyütmesi benimde dikkatimi çekmiş idi. Komutun tam çalışma mantığını bilemiyorum. Çok sık kullanacağım bir şey olmadığı için üzerinde fazla durmadım.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com