[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено ss 16 июля 2002 г. 10:31
В ответ на: Ответ: %DEFINE (VECTAB) (0H) ; default Address 0x8000 отправлено Andrew II 15 июля 2002 г. 19:02

Переопределение таблицы векторов происходит только лишь когда код стартует с 0 адреса. Это делает следующая конструкция
$IF (SERIAL0)
%IF (%CODE_START EQ 0) THEN (
%SET(COUNT,4) ; SET UP INTERRUPT TABLE
%WHILE(%COUNT LE 01FCH)
(%IF (%COUNT EQ (%BRK_T_ADR*4)) THEN (JMP FAR BRKP
) ELSE (%IF (%COUNT EQ (2BH*4)) THEN (JMP FAR SER_ISR
) ELSE (JMPS INT_ADR_SEG,INT_ADR_OFF + %COUNT ) FI ) FI
%SET(COUNT,%COUNT + 4)
)
) FI
$ENDIF

То есть все пользовательские вектора она переадресует туда куда указывает %DEFINE (VECTAB), а также определяет вектора для NMI и Serial Int -> BRKP и SER_ISR соответственно. И все работает, но вот когда код монитора стартует не с нуля, то вектора для NMI и Serial Int вообще не определены, и поэтому наверное и происходит проблема.

что думаете?

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

Ответы



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

E-mail: info@telesys.ru