Страница 1 из 1

PIC16F628A : прерывание от TMR1

Добавлено: Вс июл 22, 2007 17:08:13
wws63
Пишу программку где хочу использовать прерывание от TMR1.
Вроде всё сделал:
org 0000h
goto START

org 0004h
goto INTERRUPT

movlw b'00000001'
movwf PIE1 ; разрешить прерывание от TMR1
movlw b'10000000'
movwf INTCON ; разрешить общее прерывание

написал подпрограмму прерывания INTERRUPT, где сбрасываю флажок переполнения bcf PIR1, TMR1IF и заканчиваю retfie
Константы внес в оба регистра TMR1
Но что-то программка не желает крутиться
Может что-то забыл указать?

Добавлено: Вс июл 22, 2007 17:30:38
ARV
наверное, забыл "запустить" таймер? я не спец по ПИКам, но в перечисленных манипуляциях отсутствуют "настроил таймер" и "разрешил его работу" :)

Re: прерывание от TMR1 для PIC16F628A

Добавлено: Вс июл 22, 2007 19:18:31
tych
wws63 писал(а):что-то программка не желает крутиться
Может что-то забыл указать?
посмотрите с имуляторе чего не происходит - в MPLAB или PROTEUS

Добавлено: Пн июл 23, 2007 19:37:51
Pahan
В цикле прерывания надо не только
написал подпрограмму прерывания INTERRUPT, где сбрасываю флажок переполнения bcf PIR1, TMR1IF и заканчиваю retfie
но и загружать делитель TMR1H/TMR1L и запускать TMR1
типа так:

Код: Выделить всё

 ......
 movlw delitel_Hi
 movwf TMR1H
 movlw delitel_Lo
 movwf TMR1L
 bcf PIR1, TMR1IF
 bsf T1CON, TMR1ON	;start TIMER1
ну и конечно же ты в курсе, что в прерывании надобно сохранять W, STATUS, а также PCLATH и FSR при необходимости

Добавлено: Вт июл 24, 2007 04:56:30
wws63
Всем спасибо за советы, проблема разрешена.