реклама на сайте
подробности

 
 
> обработчик прерывания в ассемблерном файле
forever failure
сообщение Mar 29 2007, 10:23
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Возможно, вопрос простейший, но однако ответ мне не попался ни в документации по компилятору, ни в поиске.
Как правильно объявить функцию-обработчик прерывания, определённую в ассемблерном исходнике?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
forever failure
сообщение Mar 29 2007, 10:43
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Вопрос по асму. Есть асмовский исходник, в котором опрделена функция - обработчик, скажем

;interrupt.S:

intr0_handler:
push r16
; ...
pop r16
reti

Как объявить эту фукцию (intr0_handler), чтобы она стала обработчиком прерывания INT0 ?
Go to the top of the page
 
+Quote Post
_Bill
сообщение Mar 29 2007, 12:34
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- forever failure   обработчик прерывания в ассемблерном файле   Mar 29 2007, 10:23
- - rezident   Все же вопрос про Си или про ASM? Где объявлять-то...   Mar 29 2007, 10:26
|- - rezident   Цитата(forever failure @ Mar 29 2007, 13...   Mar 29 2007, 10:58
|- - Сергей Борщ   Цитата(forever failure @ Mar 29 2007, 09...   Mar 29 2007, 12:43
- - forever failure   Что это значит: ORG 0FFECh DW TA0_ISR_HANDLER и...   Mar 29 2007, 11:04
- - forever failure   Ага, вроде получается то, что надо. Thanxx! ...   Mar 29 2007, 12:58
- - _Артём_   В продолжение темы... А как передать в asm-файл им...   Mar 29 2007, 17:38
|- - Сергей Борщ   Цитата(_Артём_ @ Mar 29 2007, 16:38) А ка...   Mar 29 2007, 22:21
|- - _Bill   Цитата(Сергей Борщ @ Mar 29 2007, 22:21) ...   Mar 30 2007, 10:24
|- - Сергей Борщ   Цитата(_Bill @ Mar 30 2007, 09:24) Предви...   Mar 30 2007, 12:24
|- - _Артём_   Правильно предвидите. Спасибо за ответы...   Mar 30 2007, 17:05
- - forever failure   Ув. модераторы, раз уж тему перенесли из первонача...   Mar 31 2007, 14:29
- - zltigo   Цитата(forever failure @ Mar 31 2007, 13...   Mar 31 2007, 15:01


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 21:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01504 секунд с 7
ELECTRONIX ©2004-2016