ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
132516 Топик полностью
M@ik (25.09.2008 18:10, просмотров: 253) ответил Alex B. на я имел в виду ассемблерный листинг посмотреть...
Разобрался. PSVPAG устанавливается компилятором правильно (сразу не заметил, что PSVPAG - это адрес 0x0034). Просто надо было включать режим PSV в регистре CORCON при входе в прерывание. листинг прерывания: // Прерывание по завершению приема кадра void __attribute__((interrupt, auto_psv)) _T5Interrupt(void) { push.w 0x0036 mov.d 0x0000,[0x001e++] mov.d 0x0004,[0x001e++] mov.d 0x0008,[0x001e++] mov.d 0x000c,[0x001e++] push.w 0x0034 mov.b #0x2,0x0000 mov.w 0x0000,0x0034 lnk #0x0 uart_set_off_mode(); rcall 0x001592 stop_timer(); rcall 0x0016b2 exchangeCompleted = True; mov.w #0x477d,0x0002 mov.b #0x1,0x0000 mov.b 0x0000,[0x0002] exchange_complete_event(); rcall 0x0015a0 IFS1bits.T5IF = 0; bclr.b 0x0087,#4 } ulnk pop.w 0x0034 mov.d [--0x001e],0x000c mov.d [--0x001e],0x0008 mov.d [--0x001e],0x0004 mov.d [--0x001e],0x0000 pop.w 0x0036 retfie //----------------------------------------------------