اطلاعیه

Collapse
No announcement yet.

درخواست راهنمایی در برنامه ساده

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    درخواست راهنمایی در برنامه ساده

    سلام ؛من در زیر دو تا برنامه می نویسم یکی درست از آب در میاد ودومی با تغییر کوچک ارور میده اشکال برنامه دومی چی میتونه باشه ؟
    کد:
    #include <mega16.h>
    #include <delay.h>
    #define ADC_VREF_TYPE 0x40
    char sega[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
    //ADC
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    delay_us(10);
    ADCSRA|=0x40;
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
    }
    void main(void)
    {
     long int a;
    int b,c,d;
    PORTB=0x00;DDRB=0xff;
    PORTC=0x00;DDRC=0x00;
    PORTD=0x00;DDRD=0xff;
    // ADC Clock frequency: 125.000 kHz
    // ADC Voltage Reference: AVCC pin
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x83;
    while (1)
       {
       a=read_adc(0);a=a*4887;a=a/10000;
       b=a%10;
       c=a%100;
       c=c/10;
       d=a/100;
       PORTB.1=1;
       PORTB.4=0; // PIN DP seven segment
       PORTD=sega[d];
       delay_ms(4);
       PORTB.1=0;
       PORTB.2=1;
       PORTB.4=1;//// PIN DP seven segment
       PORTD=sega[c];
       delay_ms(4);
       PORTB.2=0;
       PORTB.3=1;     
       PORTD=sega[b];
       delay_ms(4);
       PORTB.3=0;
       };
    }
    حال اگر یک تغییر در متغیر برنامه بدم سون سگمنت درست نشان داده نمی شود ؟ چرا و پیغام خطای زیر را می دهد مگر حاصل 5/1024=0.00488 نمی شود !
    کد:
    Error: C:\Users\E~H\Downloads\Compressed\volt_bascon_and_c\code vision\volt.c(42): operand types 'float' and 'char' are incompatible with the '%' or '%=' operator
    کد:
    #include <mega16.h>
    #include <delay.h>
    #define ADC_VREF_TYPE 0x40
    char sega[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
    //ADC
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    delay_us(10);
    ADCSRA|=0x40;
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
    }
    void main(void)
    {
     long int a;
    int b,c,d;
    PORTB=0x00;DDRB=0xff;
    PORTC=0x00;DDRC=0x00;
    PORTD=0x00;DDRD=0xff;
    // ADC Clock frequency: 125.000 kHz
    // ADC Voltage Reference: AVCC pin
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x83;
    while (1)
       {
       a=read_adc(0);a=a*0.00488;a=a*100;
       b=a%10;
       c=a%100;
       c=c/10;
       d=a/100;
       PORTB.1=1;
       PORTB.4=0; // PIN DP seven segment
       PORTD=sega[d];
       delay_ms(4);
       PORTB.1=0;
       PORTB.2=1;
       PORTB.4=1;//// PIN DP seven segment
       PORTD=sega[c];
       delay_ms(4);
       PORTB.2=0;
       PORTB.3=1;     
       PORTD=sega[b];
       delay_ms(4);
       PORTB.3=0;
       };
    }
    برای تغییر دادن در زندگی اول باید خودم تغییر کنم نه دیگران!
    یک اشتباه جدید در زندگی بهتر از تکرار اشتباه قبلی است .

    #2
    پاسخ : راهنمایی در برنامه

    با سلام


    برنامه رو نمیشه کامل چک کرد چون فهمیدن الگوریتم زمان بره، ولی یه چیزی دیدم اون اینکه tool رو از نوع float تعریف کردید، خروجی strlen از نوع size_t هست اینرو عوض کنید شاید یه فرجی شد.

    دیدگاه

    لطفا صبر کنید...
    X