Пытаюсь реализовать вот что:
CODE
/* линия 0 */
#define _PORT0 B //определение буквы порта микроконтроллера
#define _PINN0 2 //определение номера бита порта
/* линия 1 */
#define _PORT1 C
#define _PIN1 3
/* линия 2 */
#define _PORT2 D
#define _PIN2 4
/* макрос склейки лексем */
#define _concatuate(a,b ) (a##b )
#define con(a,b ) _concatuate(a,b )
#define _PORTCHAR(line) con(_PORT,line) //здесь я ожидаю получить букву порта, в зависимости от номера линии. т.е. если указываю line = 0, то на выходе получаю B
#define _PORT(line) con(PORT,_PORTCHAR(line)) //здесь ожидаю получить лексему вида "PORTx", где х - буква порта, полученная в предыдущем пункте.
#define _DDR(line) (DDR##_PORTCHAR(line)) //здесь аналогично _PORT(line)
#define _PIN(line) (PIN##_PORTCHAR(line)) //здесь аналогично _PORT(line)
#define _PINNUMBER(line) (_PIN##line) //здесь я ожидаю получить номер бита порта в зависимости от значения line. т.е. если line = 0, то на выходе получаю 2.
#define _PINN(line) (1<<_PINNUMBER(line)) // здесь уже получаю маску этого бита.
#define _PORT0 B //определение буквы порта микроконтроллера
#define _PINN0 2 //определение номера бита порта
/* линия 1 */
#define _PORT1 C
#define _PIN1 3
/* линия 2 */
#define _PORT2 D
#define _PIN2 4
/* макрос склейки лексем */
#define _concatuate(a,b ) (a##b )
#define con(a,b ) _concatuate(a,b )
#define _PORTCHAR(line) con(_PORT,line) //здесь я ожидаю получить букву порта, в зависимости от номера линии. т.е. если указываю line = 0, то на выходе получаю B
#define _PORT(line) con(PORT,_PORTCHAR(line)) //здесь ожидаю получить лексему вида "PORTx", где х - буква порта, полученная в предыдущем пункте.
#define _DDR(line) (DDR##_PORTCHAR(line)) //здесь аналогично _PORT(line)
#define _PIN(line) (PIN##_PORTCHAR(line)) //здесь аналогично _PORT(line)
#define _PINNUMBER(line) (_PIN##line) //здесь я ожидаю получить номер бита порта в зависимости от значения line. т.е. если line = 0, то на выходе получаю 2.
#define _PINN(line) (1<<_PINNUMBER(line)) // здесь уже получаю маску этого бита.
при попытке использовать _PORT() - выдает ошибку
Цитата
"Warning[Pe223]: function "PORT" declared implicitly D:\PRJ\MCU\AVR Projects\....
Error[Pe137]: expression must be a modifiable lvalue D:\PRJ\MCU\AVR Projects\... "
Гуру, подскажите что я делаю не так. Спасибо.
Error[Pe137]: expression must be a modifiable lvalue D:\PRJ\MCU\AVR Projects\... "