[an error occurred while processing this directive]
все равно прерывание на асме не отрабатывается в IARе
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Анди 15 декабря 2002 г. 13:46

Почитал доку и нашел пример как нужно обрабатывать прерывание на асме если весь проект на С. Попробовал в IAR1.40 все работает, сделал тоже самое в IAR2.27B не работает, а мне нужно софт для меги128 писать.
Люди добрые пишушие в IAR2.27B помогите, как написать обработчик прерывания на ассемблере!!!!

-----------вот обработчик который я использую---------------
NAME EXT_INT1
#include "iom128.h"
extern c_int1
COMMON INTVEC:CODE:ROOT(1)
ORG INT0_vect ; Place code at interrupt vector
JMP c_int1 ; Jump to assembler interrupt function
ENDMOD

NAME c_int1
#include "iom128.h"
PUBLIC c_int1 ; Symbols to be exported to C function
RSEG CODE:CODE:NOROOT(1)
c_int1:
st -Y,R16 ; Push used registers on stack
in R16,SREG ; Read status register
st -Y,R16 ; Push Status register
in R16,PIND ; Load in value from port D
com R16 ; Invert it TESTS
out PORTB,R16 ; Output inverted value to port B
ld R16,Y+ ; Pop status register
out SREG,R16 ; Store status register
ld R16,Y+ ; Pop Register R16
reti
END
--------------------------------------------
фаил обозвал interrupt.s90 и подключил к проекту, после компиляции 0-ибок 0-предупреждений. Заглядываю в ассемблерный фаил всего моего проекта после компиляции и ничего похожего на мой код не вижу, а в конце
; 5 bytes in segment ABSOLUTE
; 672 bytes in segment CODE
; 7 bytes in segment INITTAB
; 4 bytes in segment INTVEC
; 18 bytes in segment NEAR_F
; 1020 bytes in segment NEAR_Z
т.е. 4 байта сегмента векторов используются для вектора таймера который у меня в программе используется.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru