[an error occurred while processing this directive]
Это CodeVision'овская опция компилятора, она говорит компилятору о том, что при вызове обработчика прерывания не нужно добавлять стандартную процедуру сохранения регистров, т.к. программист будет делать это сам.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено ... 09 декабря 2002 г. 17:17
В ответ на: Ответ: а можно по подробнее, пожалуйста на счет #pragma savereg отправлено Анди 09 декабря 2002 г. 17:01

Тебе она не подойдет, т.к. ты похоже используешь IAR C. Поищи, возможно имеется соответствующий аналог.
А в CodeVision'е можно например писать так:

#pragma savereg- ; Отключили автосохранение регистров
// Обработчик прерывания
interrupt [USART_DRE] void uart_dre_isr(void)
{
#asm
; Сохраняем регистры, которые будем пользовать
push r26
in r26,sreg
push r26

bla-bla-bla
bla-bla-bla
..........................
; Восстанавливаем регистры
pop r26
out sreg, r26
pop r26
#endasm
}
#pragma savereg+

Фактически написано на Ассемблере :))
Компилятор только добавит сам команду reti в конце (о том, что это нужно сделать, ему говорит ключевое слово interrupt).

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

Ответы



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

E-mail: info@telesys.ru