سلام ؛من در زیر دو تا برنامه می نویسم یکی درست از آب در میاد ودومی با تغییر کوچک ارور میده اشکال برنامه دومی چی میتونه باشه ؟
حال اگر یک تغییر در متغیر برنامه بدم سون سگمنت درست نشان داده نمی شود ؟ چرا و پیغام خطای زیر را می دهد مگر حاصل 5/1024=0.00488 نمی شود !
کد:
#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;
};
}
کد:
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;
};
}




دیدگاه