|
Вот она. Основная программа - зацикленный nop. Все прочие прерывания запрещены. STATUS и W сохраняю. Переключение портов прекрасно вижу на осцилографе. В инициализации (которую один раз вызываю)еще portc,4 в высокий/низкий устанавливаю и вижу, что portc,4 через время примерно равное time-out от PWRT - переключается. Отсюда делаю вывод, что произошел reset.
RESET vector - 000h, INTERRUPT vector - 004h, main - 005h
int_service
bcf status, 5
loop_int
bcf intcon, 7
btfsc intcon, 7
goto loop_int
MOVWF W_TEMP
SWAPF STATUS,W
BCF STATUS,RP0
MOVWF STATUS_TEMP
btfsc pir1, 0
call int_tmr1
SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
bsf intcon, 7
retfie
int_tmr1 ;обработка прерывания от TMR1 (0,25сек)
bcf status, 5
bcf pir1, 0
movlw h'DC'
movwf tmr1l
movlw h'0B'
movwf tmr1h ;восстановлен TMR1
bsf portc, 2
bcf portc, 2
bsf portc, 3
bcf portc, 3
bsf portc, 4
bcf portc, 4
return
E-mail: info@telesys.ru