arkadaşım
linkte çok güzel anlatılmış.....
Bu uygulamamızda CCS C ile 0-10 arası rastgele sayı üretip 7 segment dipslay da göstereceğiz.
Uygulamamızda rastgele sayıyı devredeki buton ile üreteceğiz. Butona her bastığımızda 0-10 arasında bir sayı üretilecek ve 7 segment diplay da gösterilecek. Programın aşamalarına bakacak olursak;
Rastgele sayı üretmek için;
sayi=rand()%10;
fonkisyonunu kullanıyoruz ve üretilen değeri sayı değişkenine aktarıyoruz. Burada 0-10 arasında sayı değeri üretiliyor. Program yeniden başladığında aynı sayıları üretmesini engellemek için
srand(i++) ;
fonkisyonu içerisindeki değişkeni sürekli değiştiriyoruz.
write.eeprom(1,i);
Değiştirilen bu değeri eeprom belleğine yazarak program başlangıcında okutuyoruz. Programda aynı sayının art arda üretilmesini engellemek için ise
do
{
}
while();
döngüsünü kullanıyoruz. Bu döngüde üretilen sayı portb ye gönderilen sayı ile aynı ise tekrar üretiliyor.
Ugyulamanın CCS C kodu
#include <16f628A.h>
#fuses NOWDT,INTRC_IO
#use delay(clock=4000000)
#include <stdlib.h>
#define tus pin_a0
int i=0,sayi=0;
void main()
{
set_tris_a(0x01);
set_tris_b(0x00);
output_b(0x00);
while(true)
{
if(input(tus))
{
while(input(tus));
delay_ms(100);
do
{
i=read_eeprom(1);// EEPROM'un 0x01 adresi okunuyor
srand(i++); //farklı sayı üretilebilmesi için değişmesi gerekiyor
if(i==100)i=0;
write_eeprom(1,i); // EEPROM'un 0x01 adresine degişken yazılıyor
sayi=rand()%10;//0 ile 10 arasında rastgele sayı üretiliyor
}
while(sayi==input_b());//üretilen sayı aynı ise tekrar üret
output_b(sayi);
}
}
}