Свежие обсуждения
Микроконтроллеры

Никак не могу запустить прерывание MSC-51, TASM

1 2

Прошу прощения за смешной для кого-то вопрос.

не могу никак правильно запустить и обработать прерывание от входа т.е. /int0

в приложении асм и бинарник.

работает, но только один раз, первый после сброса.

должно каждый раз зажигать светик heartbeat (низким уровнем) при отлавливании спада на входе /int0.

Где я ошибся???

107830.asm

 

бинарник не прицепился

 

не разбираясь...а флаг сбрасываете?

 

по идее флаг должен сброситься сам при переходу на обработку прерывания,
или я ошибаюсь?

(шепотом: вот так CLR IE0 ? ) вопрос только где ?

 

да нет...по идее флаг надо сбросить при выходе из прерывания...
я тока на пиках сижу...незнаю как...

 

Да не, в 51х флаг сам.

Вроде всё правильно, хотя и немного запутано

 

Пардон, соврамши

надо CLR IE0 вставить в код обработчика прерывания..

 

ща попробую...

 

увы...

исправленный код - в приложении

обработка прерывания выглядит так:

; External INTERRUPT /INT0

CAMSWINT: CLR EX0 ;INT0 disabled

MOV R3,#0AAH
CLR IE0

RETI

результат аналогичен, только первый раз срабатывает.

107849.asm

 

Странно... Ну разве что:

INCYCLE:	MOV     R3,#0
		SETB    EX0 - вставить здесь
		CYCLE:          CJNE    R3,#0AAH,CYCLE
		CLR     EX0
		CLR     HEARTBEAT
		LCALL   DELAY
		SETB    HEARTBEAT
		SETB    EX0   -- это убрать
		AJMP    INCYCLE

А то может сначала возникнуть прерывание, а потом произойти запись 0 в R3...