Цитата(Goodefine @ Dec 26 2008, 00:03)

Дык и я заменил
Код
#define PORTW PORTD
У Вас объектный код (*.cpp)? Привожу скриншот компиляции Вашего кода (просто вставил его в рабочий проект) в WinAVR 20080610 под AVR Studio 4
А вот так компилится:
Код
void Test1(uchar byte, uchar bitmask)
{
PORTD=(byte & bitmask)? PORTD | (1<<BIT): PORTD & ~(1<<BIT);
}
Попробуйте разделить все три прцедуры на строчки и поймёте где трабл. Да, не нравятся ему аргументы, но в какой позиции строки он не написал.
Кстати, посмотрите, byte может у вас определено ранее #defin'ом как unsigned char? Может просто имя переменной поменять?
Ксати, глотнул пива, идея пришла: А не прокатит ли такая конструкция:
Код
for ((Direction)? mask=1<<0:mask=1<<7;mask;(Direction)? mask<<=1:mask>>1)
{PORTx=(*byte&mask)? PORTx|(1<<BIT):PORTx&~(1<<BIT);delay_us(x);}
Сюда даже вместо 7 (в 'for') можно как-то подставить sizeof(); (хоть в байтах*8-1,хоть в битах-1) ?
Тогда прога будет просто супер универсальной! (Я даже себе в библию программиста запишу

)
И если Direction задано через union...struct... как бит, то налицо ещё и прямая экономия места... ?
Сообщение отредактировал DenisIV - Dec 25 2008, 22:08