0-59:59 Sayıcı

Başlatan bugrahanoguz, 13 Ocak 2021, 13:09:41

bugrahanoguz

Merhaba arkadaşlar, ben bir sayıcı yapmaya çalışıyorum 0-59:59 seklinde sayacak fakat acemiyim su an sadece ileri doğru sayan bir proje yapabildim henüz 5959 sınırlaması koymadım çünkü devrede bir hata var saymaya başlıyor 99'dan sonra yuzler basamadı hep 1 kalıyor onlar hiç gözükmüyor birler basamagı ise sürekli 0-9 arası sayıyor nerde hatam var bi türlü bulamadım yeniyim dediğim gibi birde sorun sayılmayan fakat değişse iyi olacak bi durum var output_high/low terimleri kullandıgım icin sanırım sürekli her saniye de basamaklar yanıp sönüyor hepsi sabit açıkken sayma yaptırılabilir mi?Bu eki görüntüleyemezsiniz. asagıya proteus ve source dosyalarımı bırakıyorum yardımcı olabilecek varsa cok mutlu olurum<3

ete

Sorunun 10 tabanına göre sayı sistemini çok iyi bilmemenden kaynaklanıyor.
Elinde 4 basamaklı bir sayı var ve sen bunun basamak değerlerini bulmaya çalışıyorsun.
Ne yapman gerektiğini sayıyı 10 tabanına göre ifade edince kolaylıkla anlayacaksın.
Örnekle devam edelim. Diyelimki elinde 1234 sayısı olsun. Bunun basamak değerleri ile yazarsak,
1x1000 + 2x100 + 3x10 + 4 = 1234 sayısını elde edersin. Gördüğün gibi basamaklar 1-2-3-4 şeklinde yazıldı. Şimdi bunları nasıl elde edeceğiz ona bakalım.
Elindeki sayı yanlızca 4 olsa idi yanlızca birler basamağı=4 diyecektin.
Sayı 34 olsa idi 34/10=3 ve 34-(3x10)=4 şeklinde de birler basamağını bulacaktın.
Sayı 234 olunca önce yüzler basamağını bulmak gerekecek. 234/100=2 şeklinde bulunacaktr. Yüzler kısmını sayıdan çıkartırsan (234-2x100=34) kalacak ve bir önceki açıklamaya göre onlar ve birler basamağını bulmuş olacaksın.
Sayı 1234 olunca binler basmağını bulmak için 1234/1000=1 şeklinde bulacaksın. Sonra o sayıdan binler kısmını çıkartıp yüzler hanesini hesaplayacak (1234-(1000x1)=234 ) daha sonrada önceki açıklamada olduğu gibi yüzler - onlar ve birler basamaklarını hesaplayacaksın.
İşi formüle etmek için,
Öncelikle işlem sırasında bölme çıkartma işlemleri yapacağın için SAYI değişkenindeki orjinal değerin bozulmamasını sağlaman bunun içinde ikinci bir değişken (TEMP) kullanman gerekir.
Adım 1: TEMP=SAYI
Adım 2: BINLER=TEMP/1000   Ve TEMP=TEMP-(BINLERx1000)
Adım 3: YUZLER=TEMP/100    ve TEMP=TEMP-(Yuzlerx100)
Adım 4: ONLAR =TEMP/10     ve TEMP=TEMP-(Onlar x 10)
Adım 5: Birler=TEMP (en sonda TEMP değişkeni içinde birler hanesi kalacaktır.
Şeklinde adımları uygularsan sistemin doğru çalışır.

Daha ileri formüller şöyle olabilir;

Temp=SAYI
Binler=Temp/1000
Yuzler=(Temp-(Binler*1000)/100)
Onlar =(Temp-(Binler*1000)-(Yuzler*100))/10
Birler=Temp-Binler*1000)-Yuzler*100)-(Onlar*10)

Ete

bugrahanoguz

Alıntı yapılan: ete - 13 Ocak 2021, 17:20:13Sorunun 10 tabanına göre sayı sistemini çok iyi bilmemenden kaynaklanıyor.
Elinde 4 basamaklı bir sayı var ve sen bunun basamak değerlerini bulmaya çalışıyorsun.
Ne yapman gerektiğini sayıyı 10 tabanına göre ifade edince kolaylıkla anlayacaksın.
Örnekle devam edelim. Diyelimki elinde 1234 sayısı olsun. Bunun basamak değerleri ile yazarsak,
1x1000 + 2x100 + 3x10 + 4 = 1234 sayısını elde edersin. Gördüğün gibi basamaklar 1-2-3-4 şeklinde yazıldı. Şimdi bunları nasıl elde edeceğiz ona bakalım.
Elindeki sayı yanlızca 4 olsa idi yanlızca birler basamağı=4 diyecektin.
Sayı 34 olsa idi 34/10=3 ve 34-(3x10)=4 şeklinde de birler basamağını bulacaktın.
Sayı 234 olunca önce yüzler basamağını bulmak gerekecek. 234/100=2 şeklinde bulunacaktr. Yüzler kısmını sayıdan çıkartırsan (234-2x100=34) kalacak ve bir önceki açıklamaya göre onlar ve birler basamağını bulmuş olacaksın.
Sayı 1234 olunca binler basmağını bulmak için 1234/1000=1 şeklinde bulacaksın. Sonra o sayıdan binler kısmını çıkartıp yüzler hanesini hesaplayacak (1234-(1000x1)=234 ) daha sonrada önceki açıklamada olduğu gibi yüzler - onlar ve birler basamaklarını hesaplayacaksın.
İşi formüle etmek için,
Öncelikle işlem sırasında bölme çıkartma işlemleri yapacağın için SAYI değişkenindeki orjinal değerin bozulmamasını sağlaman bunun içinde ikinci bir değişken (TEMP) kullanman gerekir.
Adım 1: TEMP=SAYI
Adım 2: BINLER=TEMP/1000   Ve TEMP=TEMP-(BINLERx1000)
Adım 3: YUZLER=TEMP/100    ve TEMP=TEMP-(Yuzlerx100)
Adım 4: ONLAR =TEMP/10     ve TEMP=TEMP-(Onlar x 10)
Adım 5: Birler=TEMP (en sonda TEMP değişkeni içinde birler hanesi kalacaktır.
Şeklinde adımları uygularsan sistemin doğru çalışır.

Daha ileri formüller şöyle olabilir;

Temp=SAYI
Binler=Temp/1000
Yuzler=(Temp-(Binler*1000)/100)
Onlar =(Temp-(Binler*1000)-(Yuzler*100))/10
Birler=Temp-Binler*1000)-Yuzler*100)-(Onlar*10)

Ete

Elinize ağzınıza sağlık deneyip geri dönüş yapacağım teşekkür ederim.

bugrahanoguz

Olmadı :/ 255'ten geri dönüyor şimdide bende bi şeyler denedim fakat olmuyor

    binler=temp/1000;
    yuzler=((temp/1000)*100);
    onlar=(((temp/1000)*100)/10);
    birler=((((temp/1000)*100)/10)%10);
Sizin yazdığınızda 259'dan geri dönüyor 0'a daha 1000'i görmek bile nasip olmadı

ete

Olmadı ve 255 den dönüyorsa sayac değilkeniniz 8 bitlik byte cinsindendir C dilinde Int karşılığı. Int16 yapın düzelir.
Ete

Powered by EzPortal