Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с прерываниями
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
RedPlanet
Необходимо написать проект на Си, в котором прерывания будут полностью написаны на ассемблере. В "Mixing C and Assembly Code with IAR.pdf" приведен пример:
Код
NAME EXT_INT1
#include "iom128.h"
extern c_int1
COMMON INTVEC(1)
ORG INT1_vect
RJMP c_int1
ENDMOD

NAME c_int1
#include "iom128.h"
PUBLIC c_int1
RSEG CODE

c_int1:
    st -Y,R16
    in R16,SREG
    st -Y,R16
    in R16,PIND
    com R16  
    out PORTB,R16
    out SREG,R16
    ld R16,Y+
    reti
END

но при компиляции ИАР выдает ошибку на строке RJMP c_int1:
Код
Error[40]: Bad instruction
не могу понять в чем проблема.
Также непонятна строка "COMMON INTVEC(1)", какой у нее параметр.
Подскажите пожалуйста.
zltigo
Цитата(RedPlanet @ Mar 20 2008, 23:12) *
но при компиляции ИАР выдает ошибку на строке RJMP c_int1:
Код
Error[40]: Bad instruction

не могу понять в чем проблема.

А что, там, откуда Вы сие брали rjmp тоже начинается БЕЗ ОТСТУПА С НАЧАЛА СТРОКИ? Прикол такой у этого ассемблера sad.gif
Цитата
Также непонятна строка "COMMON INTVEC(1)", какой у нее параметр.

Ну и что конкретно в документации Вам не понятно?
RedPlanet
И все мои мучения были из-за пробела?!?! Большое спасибо, все компилируется, я даже и подумать не мог, что пробел в том месте может быть настолько важным.
А по поводу "COMMON INTVEC(1) ; Code in interrupt vector segment" - код в сегменте прерывания, так что-ли... пока ничего не понятно...
zltigo
Цитата(RedPlanet @ Mar 20 2008, 23:54) *
А по поводу "COMMON INTVEC(1) ; Code in interrupt vector segment" - код в сегменте прерывания, так что-ли... пока ничего не понятно...

А чего это Вы вольным переводом слов решили заняться? Это ведь не комментарии - это инструкции Ассемблера - читайте Assembler Reference про COMMON. Что Вам про выравнивание сегмента не понятно?



Цитата(RedPlanet @ Mar 20 2008, 23:54) *
..я даже и подумать не мог, что пробел в том месте может быть настолько важным.

Я и говорю - прикол такой. Писать в таком стиле, конечно моветон, но я со своей привычкой временные вставочки исходниках начинать с первой позиции сильно такими шутками был не обрадован.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.