|
|
  |
обработчик прерывания в ассемблерном файле |
|
|
|
Mar 29 2007, 12:34
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(forever failure @ Mar 29 2007, 10:43)  Вопрос по асму. Есть асмовский исходник, в котором опрделена функция - обработчик, скажем
;interrupt.S:
intr0_handler: push r16 ; ... pop r16 reti
Как объявить эту фукцию (intr0_handler), чтобы она стала обработчиком прерывания INT0 ? Например, так: Код COMMON INTVEC
ORG TIMER1_OVF_vect ;;; Timer1 Overflow interrupt handler rjmp Timer1Ov_Int ;;;
;;; ORG TIMER0_OVF_vect ;;; Timer0 Overflow interrupt handler ;;; reti ;;;
;; ORG UART_RX_vect ;;; UART receiver interrupt handler ;; rjmp UART_RX_Int ;;;
RSEG CODE ;;; Handlers code start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Timer1Ov_Int: ;;; Timer1 Overflow interrupt handler st -Y, r30 ; Save used register on stack st -Y,R19 ; in R19,SREG ; Save status register st -Y,R19 ;
ldi r30, Flags ; ld r19, Z ; Set OFF LINE mode flag ori r19, OFF_LINE_MODE ; st Z, r19 ;
ld R19,Y+ ; Restore status register out SREG,R19 ; ld R19,Y+ ; ld r30, Y+ ; reti
|
|
|
|
|
Mar 29 2007, 12:43
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(forever failure @ Mar 29 2007, 09:43)  Как объявить эту фукцию (intr0_handler), чтобы она стала обработчиком прерывания INT0 ? Код COMMON INTVEC:CODE:ROOT(1); Align at an even address ORG INT0_vect RJMP intr0_handler
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 29 2007, 22:21
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(_Артём_ @ Mar 29 2007, 16:38)  А как передать в asm-файл имена переменных объяеленных в других C-файлах? Код если somefile.h: extern char variable1 extern int variable2 extern struct mytype variable3 extern float variable4 то somefile.inc: EXTERN variable1, variable2 EXTERN variable3 EXTERN variable4 otherfile.asm: #include "somefile.inc"
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 30 2007, 10:24
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(Сергей Борщ @ Mar 29 2007, 22:21)  Код если somefile.h: extern char variable1 extern int variable2 extern struct mytype variable3 extern float variable4 то somefile.inc: EXTERN variable1, variable2 EXTERN variable3 EXTERN variable4 otherfile.asm: #include "somefile.inc" Предвижу следующий вопрос: "Как передать в Си файлы имена переменных, объявленных в асм файлах?".
|
|
|
|
|
Mar 30 2007, 12:24
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(_Bill @ Mar 30 2007, 09:24)  Предвижу следующий вопрос: "Как передать в Си файлы имена переменных, объявленных в асм файлах?". Отвечать? Код если otherfile.asm PUBLIC variable1, variable2 PUBLIC variable3 PUBLIC variable4
то somefile.h: extern char variable1; extern int variable2; extern struct mytype variable3; extern float variable4; Да, если С++, то extern "C" char variable1; и т.д.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 31 2007, 15:01
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(forever failure @ Mar 31 2007, 13:29)  речь идёт про IARовский компилятор для AVR. Компилятор и уж тем более контроллер совершенно не принципиальны. Буде существуют нюансы - просите компилятор сгененрить ASM текст из него за совершенно спокойно черпаете всю необходимую информацию по сути задаваемых вопросов. Это, конечно, если совсем лень с документаций ознакомиться.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|