Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Error: the expression must be a modifiable lvalue


Автор: Nosaer 16.10.2011, 13:23
Здравствуйте:
При компиляции возникает ошибка:
Error: C:\CDAVR\KRR.c(73): the expression must be a modifiable lvalue

Хотя буквально год назад компилировал вроде как этот же код, и все проходило гладко. А сейчас достал его, и не могу понять где ошибка.

Код

#include <mega8.h>
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
#include <stdlib.h>

#define ADC_VREF_TYPE 0x00
#define V 5

// Инициализация LCD
#asm
   .equ __lcd_port=0x18 ;PORTB
#endasm

//Функция для работы с АЦП
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)
{
char acpread[5];
char acptry[5];
int j;

PORTB=0x00; //скорее всего нужно настроить на вывод
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;

PORTD=0x00;
DDRD=0x00;

TCCR0=0x00;  //Регистр управления таймером
TCNT0=0x00;  //Счетный регистр
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;  //Регистр сравнения
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;    //Регистр таймера в ассинхроном режиме
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;   //Разрешение и запрет прерываний по таймеру
UCSRA=0x00;   //Регистры управления и состояни
UCSRB=0x18;   //Регистры управления и состояни
UCSRC=0x86;   //Регистры управления и состояни
UBRRH=0x00;   //Регистры ввода-вывода
UBRRL=0x4D;
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;  //Регистр управления мультиплексером
ADCSRA=0x85;  //Регистр управления АЦП

lcd_init(16); // Инициализация ЖК
while (1)
      { 
      itoa(read_adc(1), acpread);
      acptry = acpread*V/1024;
      j = 0;      //цикл для вывода значения с фотодатчика
      lcd_gotoxy(0,0);
      while(j<3){
      lcd_putchar(acptry[j]);
      delay_ms(200);
      j++;
      }
      }
};



Автор: Mazzi 16.10.2011, 19:52
У вас объявлено как два массива 8-разрядных чисел
Код

char acpread[5];
char acptry[5];


а использование не соответствует декларации 
Код

acptry = acpread*V/1024;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)