Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

denklem secim islemi

Başlatan fuzulidark, 25 Temmuz 2012, 15:38:53

fuzulidark

arkadaslar merhaba;

sole bir devre uzerinde ugrasiyorum; pic in 8 bacagina farkli devreler bagliyorum, her bagladigim devreninde farkli bir matematiksel islemi var, hangi bacaga hangi devrenin baglanacagina kullanici karar vermesi amaciyla keypad bagladim. yani keypadden 12 basildiginda 1. bacakta 2. devre kullanilacak, 23 basildiginda 2. bacakta 3. devre kullanilacak anlamina geliyor. bunu da dizilerle yapmayi planliyorum. Asil sorum ise

devre[1]= 1.devrenin fonksiyonlari
devre[2]= 2.devrenin fonksiyonlari           devrenin fonksiyonu yazan yerler matematiksel islemler; bu sekilde bir atama islemini nasil gerceklestirebilirim;
devre[3]= 3.devrenin fonsiyonlari                          yardimci olabilirmisiniz?

Tagli

Struct içinde saklanan fonksiyon pointer'ları geldi aklıma ama CCS C bunu destekler mi veya böyle bir çözüm senin uygulaman için uygun olur mu bilmiyorum.
Gökçe Tağlıoğlu

fuzulidark

while()
{sekiz=1;
if(devre[sekiz]==1)  //a devresi icin
{printf(lcd_putc,"%d. a devresi",sekiz);}
if(devre[sekiz]==2)
{printf(lcd_putc,"%d. b devresi",sekiz);} //b tipi
if(devre[sekiz]==3)
{printf(lcd_putc,"%d. c devresi",sekiz);}//c tipi
sekiz++;}

Bu sekilde bir sistemde devre[sekiz]=1 oldugunda a devresinin fonksiyonlarinn kullanilmasi gerektigini nasil tanimlayabilirim?

yamak

#3
Elemanları fonksiyon göstericileri olan dizilerden faydalanabilirsin. Örnek
#include <stdio.h>

void fonk1()
{
    printf("fonk1 cagirildi\n");
}
void fonk2(void)
{
    printf("fonk2 cagirildi\n");
}
int main(void)
{
    void (*x[2]) (void);
    x[1]=fonk1;
    x[2]=fonk2;
    x[1]();
    x[2]();
    return 0;
}

fuzulidark

alttaki kodda devre[sekiz] {sekiz=1 den 8e kadar) yazan yerde yalniz 1 de olabilir, 1.3.5. analog bacaklardan gelen bilgilerde istenebilir, egerki surekli while dongusune sokarsam her bacakta ilk fonksiyonu surekli kontrol edecek, bunun yaninda alttaki fonksiyonuda kontrol edecek ve islem yavasligina sebep olacak; main kisminda while dongusune sokmadan once klavyeden 12,21,32,41,52,62,71,82 girdigimde 1.,2.,4.,7., bacaklarin ilk fonsiyonu; 3.,5.,6.,8. bacaklarin direk 2. fonsiyonu kullanmasini istiyorum. yani while(1) dongusunde her analog giris icin 2 fonksiyonuda surekli deneyip hangisi seciliyse kullanmasini degilde while(1) dongusune girmeden once hangi bacakta hangi fonksiyon kullanilmasi istenildiyse butun while(1) dongusu boyunca o girislerde o fonksiyon kullanilarak islemin hizli bir sekilde yapilmasini nasil mumkun kilabilirim?

set_adc_channel(devre[sekiz]);
bilgi=read_adc();
printf(lcd_putc,"\fPT100");
delay_ms(150);
printf("PT100");
delay_ms(150);
voltaj=(0.0048828125*bilgi)*1000;
deger=voltaj-2822.26;
sicaklikdegeri=deger/10.769;

printf(lcd_putc,"\fsck=%f'C",sicaklikdegeri);
printf(lcd_putc,"\ndeger=%lu",bilgi);
delay_ms(500)


set_adc_channel(devre[sekiz]);
akim=read_adc();
printf(lcd_putc,"\f 4-20mA");
delay_ms(150);
gerilim=(0.0048828125*akim);
printf(lcd_putc,"\f gerilim=%fV",gerilim);
delay_ms(250);