Код: Выделить всё
PORTB|=(1<<0);Код: Выделить всё
sbi 0x18, 0Код: Выделить всё
ldi r16,0x01
out 0x18,r16Код: Выделить всё
PORTB|=(1<<0);Код: Выделить всё
sbi 0x18, 0Код: Выделить всё
ldi r16,0x01
out 0x18,r16Правильно предвидите.AI_Disable писал(а):Предвижу вопрос "зачем это нужно?"
Код: Выделить всё
PORTB = (1<<0);Код: Выделить всё
ldi r16,0x01
out 0x18,r16Да можно наверняка и без залезания в мейкфал - просто напишите нужно количество заголовочных (*.h) файлов и включайте нужный в исходник.DimAlt писал(а):Есть проект в winavr, в...
Код: Выделить всё
#if VARIANT == 1
// тут определяете комбинации дефайнов для сборки первого варианта
#elif VARIANT == 2
// тут определяете комбинации дефайнов для второго варианта
#elif VARIANT == 3
// и так далее для всех вариантов
#else
#error Надо задавать макрос VARIANT, отличный от 0!!!!
#endifФактически, сейчас у меня тоже самое, только вместов разные файлы - это уже надо править makefile
Действительно, черезDimAlt писал(а):Хотелось этого...в разные файлы - это уже надо править makefile
Свою проблему решил, хоть и через одно место, запускаю программу, которая мониторит изменение выходного файла *.hex и переименовывает его анализируя дефине в *.h
Код: Выделить всё
VARIANT = 2
TARGET := tst-$(VARIANT)
# ну или как там имя проекта у Вас задаётся
OBJDIR := ./obj-$(VARIANT)
CFLAGS += -DVARIANT=$(VARIANT)Код: Выделить всё
$(OBJS) : MakefileКод: Выделить всё
make VARIANT=1
make VARIANT=2
make VARIANT=3
make VARIANT=4Код: Выделить всё
make VARIANT=1 clean all
make VARIANT=2 clean all
make VARIANT=3 clean all
make VARIANT=4 clean allКод: Выделить всё
all : $(TARGET)Все советы которые я нашел, это сделать путь покороче и без кирилицы. Сделано. Но не работает.../test.c:29: fatal error: opening dependency file dep/test.o.d: No such file or directory
Код: Выделить всё
int main(void)
{
PORTB=0x00;
DDRB=0xFF;
PORTD=0x00;
DDRD=0xFF;
PORTC=0x00;
DDRC=0x00;
TCCR1A=0xA1;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=250;
OCR1BH=0x00;
OCR1BL=250;
ASSR=0x00;
TCCR2=0x69;
TCNT2=0x00;
OCR2=250;
OCR1AL=255;
OCR1BL = 255;
OCR2 = 255;
sei();
while (1)
{
OCR1AL--;
OCR1BL--;
OCR2--;
_delay_us(25);
}
}
Код: Выделить всё
int main()
{
...
all:
...
while(1)
{
...
if(...)
{
...
if(...)
{
...
if(...)
{
...
goto all;
}
}
}
}
}Согласен с предыдущим оратором. Один маленький совет: желательно чтобы goto и метка были видны одновременно при редактировании и просмотре кода.AI_Disable писал(а):Подскажите, в чём заключается опасность юзания goto и можно ли его применить разик для выхода из цикла или это недопустимо ни в коем случаи?