PDA

Просмотр полной версии : Ошибка при компилировании файла в AVR Studio.



vladimirovich
24.06.2009, 06:34
При компилировании файла для микроконтроллера ATtini 2313 программа пишет ошибку C:\ tn2313def.inc : error: Attept to redefine keyword " z " и " or" ( попытка переопределить ключевое слово "z").
Не подскажите изменение, которые необходимо внести во включаемый файл tn2313def.inc . что бы устранить проблему?

DMJ
24.06.2009, 07:52
Лучше не трогать файл tn2313def.inc (он стандартный), а найти и заменить другими имена z и or в компилируемой программе. Вообще использование ключевых слов не по прямому назначению допускается, но не рекомендуется, так как вносит путаницу как в "мозги" компилятора, так и программиста.

uu5jkb
24.06.2009, 09:43
OR - операция логического или
Заходите в tn2313.inc, находите там следующее
;***** UCSRA ******
.equ RXC = 7
.equ TXC = 6
.equ UDRE = 5
.equ FE = 4
.equ DOR = 3
.equ UPE = 2
.equ PE = 2 ; for compatibility purpose
.equ U2X = 1
.equ MPCM = 0
.equ OR = 3 ; for compatibility purpose

Как видно, OR называется 3 -й бит в регистре UCSRA, и назван так только для совместимости с другими мк, а на самом деле он называется DOR. Так что можно спокойно закомментриовать эту строчку, а в программе потом писать, например, ldi r16, (1 << DOR), всесто ldi r16, (1 << OR).
Под Z ассемьлер понимает пару регистров R31:R32, а инк файл - бит Z в SREG
;***** SREG *******
.equ I = 7
.equ T = 6
.equ H = 5
.equ S = 4
.equ V = 3
.equ N = 2
.equ Z = 1
.equ C = 0

Можете в инк файле заменить Z на ZERO, только при написании программы надо будет помнить об этом :)

vladimirovich
24.06.2009, 13:48
Всё прекрасно получилось! Вы в очередной раз мне помогли!