16f877a da 0-999 ileri ve geri sayıcı

Katılım
14 Eki 2020
Mesajlar
5
Puanları
1
Yaş
24
merhabalar bu devrede 7 segment displaylerin en alt birler orta onlar ve en üst yüzler basamağı olacak şekilde 999 kadar sayması gerekiyor ama ben yazdığım kodda ilk önce onlar basamağını oluşturabilmek için değişkeni 4 bit alttan başlatıyorum ama üçüncü değişkeni ekleyince birler basamağını sayıp sıfırlanıyor yardımcı olabilirmisiniz lütfen
kod:
Kod:
int digit0, digit1, digit2=0;



void main()

{

set_tris_b(0x00);

set_tris_c(0x00);

set_tris_d(0x00);

output_b(0x00);

output_c(0x00);

output_d(0x00);

   while(TRUE)

   {

   a=input(pin_a0);

   output_d(digit0);

   output_c(digit1>>4);

   output_c(digit2);

 

   delay_ms(10);

 

   digit0++;

 

   if(digit0>9);

   digit0=0;

   digit1=digit1+1;

   }

   if(digit1>9){

   digit1=0;

   digit2=digit2+1;

   }

   if(digit2>9){

   digit0, digit1, digit2=0;

   }

 

 

   }



}
ödev 1.PNG
 
Moderatör tarafında düzenlendi:
Değişken isimlerine Türkçe isim verip, hataları düzeltince şu şekilde bir yazılım parçası ortaya çıktı ;)

C:
#include <stdio.h>
#include <time.h>

int birler = 0;
int onlar = 0;
int yuzler = 0;

void bekle (unsigned int saniye)
{
    unsigned int gecenSure = time(0) + saniye;
    while (time(0) < gecenSure);
}

void main()
{
    while(1)
    {
        birler += 1;
        if (birler > 9)
        {
            birler=0;
            onlar = onlar+1;
        }
        if (onlar > 9)
        {
            onlar=0;
            yuzler=yuzler+1;
        }
        if (yuzler > 9)
        {
            birler, onlar, yuzler = 0;
        }
        printf("Sayı %d %d %d \n",yuzler, onlar, birler);
        bekle(1);
    }
}
 
Bu devreyi denedim ama çalıştıramadım kod da bir sıkıntı var erdem hocam birler de hata veriyor ve compile yapmıyor.
Sorunu çözebilen varsa fikri olan varsa yazabilirse bana çok sevinirim..
 
Son düzenleme:
Açıklamalar kod içinde.
Fazla ";" ile eksik "{"

C:
int digit0 = 0, digit1 = 0, digit2=0;

void main()

{

set_tris_b(0x00);
set_tris_c(0x00);
set_tris_d(0x00);
output_b(0x00);
output_c(0x00);
output_d(0x00);

while(TRUE)
{

   a=input(pin_a0);
   output_d(digit0);

//  output_c(digit1>>4);  Bağlantıya göre digit1 sola kaydırılmalı.
//  output_c(digit2);
//Burada sonradan yazılan digit2 bilgisi önceden yazılan digit1 bilgisini ezer.
//Birleştirip yazmak gerekir.
    output_c(digit2 + digit1 << 4); //c portunun alt 4 biti digit2, üst 4 biti digit 1
    output_c(digit2 + digit1 * 16); //üst satır bu şekilde de yazılabilir.
    delay_ms(10);
    
    digit0++;
//    if(digit0>9);   // Buradaki ;  hata
    if(digit0>9)
    { // Bu süslü açılmamıştı.
        digit0 = 0;
        digit1++; //digit1 = digit1 + 1;
    }

    if(digit1>9)
    {
        digit1 = 0;
        digit2++; // digit2 = digit2 + 1;
    }

    if(digit2>9)
    {
        digit0 = 0;
        digit1 = 0;
        digit2 = 0;
    }
}
}
 

Forum istatistikleri

Konular
128,120
Mesajlar
915,176
Kullanıcılar
449,825
Son üye
yasargokdemir

Yeni konular

Geri
Üst