Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Zar yapımı(16f877 ile)

Başlatan Recep METE, 07 Kasım 2013, 09:59:32

Recep METE

Arkadaşlar ccs c ile 16f877 kullanarak zar yapmak istiyorum.Bunun için 6 tane ledi pinlere takacağım.Zar 1 'İ gösteriyorsa bir led yanacak; zar altıyı gösteriyorsa altı led yanacak  Ben bunu switch- case  döngüsü ile yapabileceğimi zannediyorum.ancak zarın sayı döngüsünü nasıl yapacağımı bulamadım.Yani sayı birden -altya kadar sürekli dönecek butona basılınca hangi sayıdaysa  o kadar led yanacak.Bunu yapmam için nasıl bir program yazmalıyım.Görüşlerinizi sabırsızlıkla bekliyorum.Saygılarımla.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

Mr.Java

#1
Bence siz C bilginizi gözden geçirin.Çünkü C'yi tam öğrendiğiniz vakit tüm projeleriniz için ayrı konu açmanız gerekmez.Sorunuza gelirsek;

-C ile random sayı üreteceksiniz.Bunun için stdlib.h kütüphanesinde bulunan Rand fonksiyonunun kullanımını öğrenmelisiniz.

Örnek program ;

#include<-stdio.h>
#include<-conio.h>
#include<-stdlib.h>

 
int main(){
    int sayi;
    sayi=rand()%10;
    printf("Rastgele sayi= %d",sayi);
    getch();
}

Bu kodda 0-10 arası sayı üretilecektir.Dikkat et rand() fonksyonundan sonra %.... ifadesine ne yazarsan o aralıklı üretir.Diğer bir fonksiyon ise srand().Bu ise zamana bağlı olaraktan sürekli değişmesini sağlar.Sizin zar programında 6 adet ihtimal olduğu için;

#include<-stdio.h>

#include<-stdlib.h>

#include<-time.h>

int main(){
    int sayi;
    srand(time(NULL));
    sayi=rand()%6;
    printf("Rastgele sayi= %d",sayi);
    getch();
}

z

Zar olayında randoma gerek yok. 0..5 sayıcı sürekli olarak sayar. Sayıcı çok hızlı sayacağı için hile yapmak imkansız. Butona basıldığı anda sayıcı içeriği zar değeri olarak görüntülenir.

Burada butona basacak insan olduğu sürece hiç bir sorun yok.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Recep METE

#3
Arkadaşlar en sonunda zar yapımı işini kendim çözdüm.Pic te ledlerle zar yaptım.Kesme ile ledler durduruluyor.Belki kod birilerine yardımcı olur diye aşağıda yayınlıyorum.Program çok güzel çalışıyor.

//RECEP METE-ALAÇAM-SAMSUN
#include <16f877.h>     

//***********Denetleyici konfigürasyon ayarları************
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay(clock=4000000)   


#use fast_io(a) 
#use fast_io(b) 

#define   display_1   pin_a0      


int i;
char birler=0;
int32 sayi=0,sayici;  
// Ortak katot display için veri değerleri
const int digit[8]={0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F,};
unsigned char a=0;



#int_timer0
void timer_kesme(void)
{
      set_timer0(0);
      if(input(pin_a0)){ delay_ms(10); while(input(pin_a0)); 
  
  
     for(i=0;i<10;i++)
      {
      
      delay_ms(350);
      
      }
       }
}


void main ()
{



setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1|T0_8_BIT);
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

set_timer0(0);

   enable_interrupts(int_timer0);
   enable_interrupts(global);

   set_tris_a(0x01);
   set_tris_b(0x00); // B portu tümüyle çıkış olarak yönlendiriliyor
   
   while(1)
   {
     
               if(a==1) {sayi++;a=0;}
 
               if (sayi==7)  
               sayi=0;

               birler = sayi % 10;
               output_b(digit[birler]); // displaye bilgi gönderiliyor
               delay_ms(50);             // gecikme veriliyor
               
               a++;
                
  }}
   
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

sifirzero

sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

M.Salim GÜLLÜCE

Random jeneratörü yoktur sanırım sanırım 877 de :)