ZeDStavr (14.12.2009 17:21, просмотров: 173) ответил MBedder на .equ и #define выполняют действия над совершенно разными типами данных, и результаты этих действий по-разному используется при компиляции/линковке, к тому же сами .equ и .equiv различаются. А насчет А = В вместо .equ A,B - попробуй сам и увидишь
.equ и .equiv различаются только тем, что последняя директива не допускает переопределение уже определенных выражений. На А = В вроде не ругнулся. Попутно обнаружил вот что.
Это полная вырезка конфликтных "определений", с ней возникает вышеописанная ошибка
; ....
.equiv MUL_LINE_X_PORT,PORTE
;
.equiv ADDR_JMP1_PORT, MUL_LINE_X_PORT
.equiv ADDR_JMP2_PORT, MUL_LINE_X_PORT
.equiv ADDR_JMP3_PORT, MUL_LINE_X_PORT
.equiv EXT_OFF_IN_PORT, MUL_LINE_X_PORT
.equiv NOM_VOLTAGE_JMP_PORT, MUL_LINE_X_PORT
.equiv DBL_VOLTAGE_JMP_PORT, MUL_LINE_X_PORT
.equiv SYNC_IN_PORT, MUL_LINE_X_PORT
; ....
Если я меняю хотя бы в одной строке, напрмер
.equiv DBL_VOLTAGE_JMP_PORT, PORTE
ошибка пропадает.
Подумал, что влияет число определений, однако, если я просто комментирую одну или несколько строк, ошибка все равно вылазиет.
Если я ставлю везде '=', ситуация полностью повторяется.
В общем моразм крепчал.
Microchip, кстати, до сих пор молчит.