C/C++ MikroC kodunda "Invalid Expression" hatası

samm

Femtopat
Katılım
17 Mayıs 2023
Mesajlar
12
Merhaba, kodumda dikdörtgen içine aldığım kısımda hata var diyor ve tek hatam bu, düzeltmem gerekiyor. Yardımcı olur musunuz?

Adsız.png
 
Son düzenleyen: Moderatör:
ilacSuresi[i] = ne? Ne atayacaksınız? Süre nerede?
Kullanıcı kullandığı her ilacın ismini ve kaç saatte bir alması gerektiğini giriyor. İlacın saati geldiğinde numarası LED'de yanıyor ve buzzer ses çıkartıyor. Bu yapmaya çalıştığım şey.

Kodun tamamı:


C:
#include <string.h>

// Kullanılacak PIN tanımlamaları
sbit LED1 at RB0_bit;
sbit LED2 at RB1_bit;
sbit LED3 at RB2_bit;
sbit LED4 at RB3_bit;
sbit LED5 at RB4_bit;
sbit Buzzer at RB5_bit;

// İlaç adı ve ilaç alma süreleri için dizi tanımlamaları
char ilacAdi[5][20];
int ilacSuresi[5];
int ilacNumarasi = 0;

void main() {
    int i;

    // İlaç adı ve sürelerini başlangıç değerlerine ayarlayın
    for(i = 0; i < 5; i++) {
        strcpy(ilacAdi[i], "");
        ilacSuresi[i] = 0;
    }

    TRISB = 0x00; // RB pini çıkış olarak ayarlandı
    PORTB = 0x00; // RB pini başlangıçta LOW

    while(1) {
        // İlaçların kontrol edilmesi ve LED ve ses çıkışının kontrolü
        for(i = 0; i < ilacNumarasi; i++) {
            if(ilacSuresi[i] > 0) {
                ilacSuresi[i]--;
                if(ilacSuresi[i] == 0) {
                    // İlacın zamanı geldi, LED'i yanıp ses çıkart
                    switch(i) {
                        case 0:
                            LED1 = 1;
                            Delay_ms(500);
                            LED1 = 0;
                            Buzzer = 1;
                            Delay_ms(1000);
                            Buzzer = 0;
                            break;
                        case 1:
                            LED2 = 1;
                            Delay_ms(500);
                            LED2 = 0;
                            Buzzer = 1;
                            Delay_ms(1000);
                            Buzzer = 0;
                            break;
                        case 2:
                            LED3 = 1;
                            Delay_ms(500);
                            LED3 = 0;
                            Buzzer = 1;
                            Delay_ms(1000);
                            Buzzer = 0;
                            break;
                        case 3:
                            LED4 = 1;
                            Delay_ms(500);
                            LED4 = 0;
                            Buzzer = 1;
                            Delay_ms(1000);
                            Buzzer = 0;
                            break;
                        case 4:
                            LED5 = 1;
                            Delay_ms(500);
                            LED5 = 0;
                            Buzzer = 1;
                            Delay_ms(1000);
                            Buzzer = 0;
                            break;
                    }
                }
            }
        }
    }
}

void interrupt() {
    // Giriş kesmesi kontrolü
    if(INTCON.RBIF) {
        int i;
        INTCON.RBIF = 0; // Kesme bayrağını sıfırla
        Delay_ms(20); // Gürültü önleme için gecikme

        // İlacın adını ve süresini al
        if(ilacNumarasi < 5) {
            if(!(PORTB & 0x01)) {
                strcat(ilacAdi[ilacNumarasi], "ILAC");
                ilacSuresi[ilacNumarasi] = 0;
                ilacNumarasi++;
            }
        }

        // İlacın alınma süresini ayarla
        for(i = 0; i < ilacNumarasi; i++) {
            if(!(PORTB & (0x02 << i))) {
                // İlaç alınma süresini giriş yap
                ilacSuresi[i] = /* Kullanıcıdan alınan değer */;
                break;
            }
        }
    }
}

Kod:
ilacsuresi[i] =;

Belki bu anlamana yardımcı olur.
Problem kodun içinde alıntı söz yerleştirilmesi mi? O kısmı kaldırdım ama aynı hata devam ediyor.
 
Bu kadar kodu yazıp sonra da şunu yazmanız ilginç. Bakın bu satır bir şey ifade etmiyor. Sizin yorum olarak kullanıcıdan alınan değer demeniz bir anda vahiy yoluyla kullanıcıdan değer alınacağı anlamına gelmiyor. Oraya bir değer koymalısınız.
ilacSuresi[i] = /* Kullanıcıdan alınan değer */;
 
Sizin yorum olarak kullanıcıdan alınan değer demeniz bir anda vahiy yoluyla kullanıcıdan değer alınacağı anlamına gelmiyor.

Arduino ile kullanıcıdan değer almaya uğraşacağıma o değer her değiştiğinde programı baştan derlerim daha iyi :)

Numpad veya seri bağlantısı kullanabilirsiniz. Amacınız derlensin ise = 10; yazıp geçiniz.
 

Technopat Haberler

Yeni konular

Geri
Yukarı