вот такая вор прога:
Код: Выделить всё
main:
****
register/interrupt initial
***
main:
in R16,GIFR
out PORTB,R16
;sei
rjmp main
INT_0:
in R16,GIFR
out PORTB,R16
rcall w200_mks
sbi PIND,4
;sei
;ret
retiкогда меняю reti на ret, то после возврашения в основную программу, вижу что флаг в регистре GIFR не становиться 0 (по прежнему 1) отюда понимаю, что ret не сбрасывает прерывание.
когда перед ret в конце прерывания пишу sei (чтобы перед выходом снова поставить флаг global interrupt) и надеюсь что после выхода из прерывания сново будет вход в прерывание и так до бесконечности (флаг же не стирается через ret), то вижу что ничего подобного, 2го раза входа в прерывание нету (sbi PIND,4 нету инверсии на выходе) и ФЛАГ ПРЕРЫИВАНИЯ СБРОШЕН В 0. вопрос, как такое происходит, кто сбрасывает флаг GIFR INT0 ?
п.с. тот же результат если я пишу sei в цикле main.
обьясните плиз почему так происходит, или даите ссыль , ато нифига не могу наити по этому поводу, а логика не прет :'(
СПАСИБО!


