C Fonksiyon içinde call benzeri yapı kullanmak

Başlatan FEHMİ_ASM, 04 Haziran 2012, 21:13:02

FEHMİ_ASM

   Arkadaşlar, kod aşağıda, Alt_Pr1 alt programını belirli sayıda çağıracağım. Ancak bunun için ayrıca bir fonksiyon oluşturmak zorunda mıyım? Bunu yapabilmemin başka bir yolu var mı? Aşağıda SADECE benzetim amaçlı olarak kod yazdım kabaca.

F1
{
Hiz = Segment1;
call AltPr1        ;Zaten bunun gibi en fazla birkaç kez çağırılıyorlar.
Hiz = Segment4;
call AltPr1
Hiz = Segment9;
call AltPr1
goto Out;  //Burada belki goto kullanmaya gerek kalmayacak, son satırdan sonra işlemci AltPr1 i bi zahmet atlayabilir.
--------------------------------------------
AltPr1
     {
        IdleI2C();
        WriteI2C (Hiz);
        while (SSPCON2bits.ACKSTAT);
      }
-------------------------------------------

Out:
Hiz=0x00;   // vs.
}



   Belki neden for, if felan kullanmadığımı soracaksınız, değişkene farklı değerler yükleniyor her defasında. Dizi kullansa idim de çözebilirdim sorunu ama programım zaten dizi kaynıyor daha fazla dizi kalabalığı olmasın ve zaten dizinin her indisine her defasında farklı bir değişkenle yüklenmem gerekecekti.

   Ayrıca farklı bir fonksiyon tanımlamak istemedim, çünkü ana fonksiyonu gereksiz yere sağa sola dallandırmak istemiyorum, yapabileceği birçok şeyi kendi içerisinde yapsın istedim. Asıl programımda buna benzer bazı yerler var.  Umarım C de buna imkan sağlayan bir özellik ya da yapı vardır.
Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !  Azrai

JKramer

void AltPr1(int Hiz)
{
     IdleI2C();
     WriteI2C (Hiz);
     while (SSPCON2bits.ACKSTAT);
}

AltPr1(Segment1);
AltPr1(Segment4);
AltPr1(Segment9);

gibi yapabilirsiniz.

FEHMİ_ASM

    Hocam ancak, AltPr1 adındaki sekiz-on satırdan oluşan komutların hem altında hem de üstünde F1 fonksiyonu bitinceye dek  çalışması gereken başka satırlar var. Yani, tekrar edeceğim yer -- F1 fonksiyonunun ortalarında bir yerde. Bunu yukarıdaki kodda belirtmemişim kusuruma bakmayınız.
Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !  Azrai

Eren Eraslan

yanlış hatırlamıyorsam dediğin kodu
label:
.
.
.
goto label

gibi yapabiliyordun . ama pek sağlıklı değil c kodunda. ben hiç kullanmadım öyle ama üniversitedeki c dersinde hoca bahsetmişti onu hatırlıyorum
insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan