ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
38766 Топик полностью
Romario (08.09.2005 17:32, просмотров: 1) ответил dmyl на Ответ:
он универсальный вот этот код процессор делает автоматически если разместить по 0x18 тот операнд, который Вы хотите
void (*interrupt_function)();
unsigned int vector;

              vector = VICVectAddr;       // Get interrupt vector.
  interrupt_function = (void(*)())vector;
(*interrupt_function)();                  // Call vectored interrupt function.
а asm исходник будет выглядеть так примерно только не пытайсеь засунуть его в IAR - этот код из ADS 1.2 но логика я думаю понятна. Можно переделать под IAR

  AREA Vect, CODE, READONLY

        ENTRY

        LDR     PC, Reset_Addr
        LDR     PC, Undefined_Addr
        LDR     PC, SWI_Addr
        LDR     PC, Prefetch_Addr
        LDR     PC, Abort_Addr
        NOP                             ; Reserved vector
        LDR     PC, [PC,#-0xFF0]
        LDR     PC, FIQ_Addr

        IMPORT  Reset_Handler           ; In Crt0.s
        
Reset_Addr      DCD     Reset_Handler
Undefined_Addr  DCD     Undefined_Handler
SWI_Addr        DCD     SWI_Handler
Prefetch_Addr   DCD     Prefetch_Handler
Abort_Addr      DCD     Abort_Handler
FIQ_Addr        DCD     FIQ_Handler

; ************************
; Exception Handlers
; ************************

; The following dummy handlers do not do anything useful in this example.
; They are set up here for completeness.

Undefined_Handler
        B       Undefined_Handler
SWI_Handler
        B       SWI_Handler     
Prefetch_Handler
        B       Prefetch_Handler
Abort_Handler
        B       Abort_Handler

FIQ_Handler
        B       FIQ_Handler
        
        END