Я было уже решил поставленную задачу: #define IN0 0 #define IN1 1 #define OUT0 2 #define OUT1 3 #define PortA 4 #define PortB 5 #define PortC 6 #define PortD 7 #define SetupBit(Port,Bit,Direction)\ {\ if (Port == PortA && Direction == IN0) {CLRBIT(DDRA,Bit);CLRBIT(PORTA,Bit);}\ if (Port == PortA && Direction == IN1) {CLRBIT(DDRA,Bit);SETBIT(PORTA,Bit);}\ if (Port == PortA && Direction == OUT0) {SETBIT(DDRA,Bit);CLRBIT(PORTA,Bit);}\ if (Port == PortA && Direction == OUT1) {SETBIT(DDRA,Bit);SETBIT(PORTA,Bit);}\ \ if (Port == PortB && Direction == IN0) {CLRBIT(DDRB,Bit);CLRBIT(PORTB,Bit);}\ if (Port == PortB && Direction == IN1) {CLRBIT(DDRB,Bit);SETBIT(PORTB,Bit);}\ if (Port == PortB && Direction == OUT0) {SETBIT(DDRB,Bit);CLRBIT(PORTB,Bit);}\ if (Port == PortB && Direction == OUT1) {SETBIT(DDRB,Bit);SETBIT(PORTB,Bit);}\ \ if (Port == PortC && Direction == IN0) {CLRBIT(DDRC,Bit);CLRBIT(PORTC,Bit);}\ if (Port == PortC && Direction == IN1) {CLRBIT(DDRC,Bit);SETBIT(PORTC,Bit);}\ if (Port == PortC && Direction == OUT0) {SETBIT(DDRC,Bit);CLRBIT(PORTC,Bit);}\ if (Port == PortC && Direction == OUT1) {SETBIT(DDRC,Bit);SETBIT(PORTC,Bit);}\ \ if (Port == PortD && Direction == IN0) {CLRBIT(DDRD,Bit);CLRBIT(PORTD,Bit);}\ if (Port == PortD && Direction == IN1) {CLRBIT(DDRD,Bit);SETBIT(PORTD,Bit);}\ if (Port == PortD && Direction == OUT0) {SETBIT(DDRD,Bit);CLRBIT(PORTD,Bit);}\ if (Port == PortD && Direction == OUT1) {SETBIT(DDRD,Bit);SETBIT(PORTD,Bit);}\ }
Но здесь есть ошибка. Дело в том, что записи типа PORTA,PORTB и т. п. являются нечисловыми и следовательно при компиляции вышеуказанного выдаются ошибки. Вот если бы это преодолеть...
|