| Микроконтроллеры | Никак не могу запустить прерывание MSC-51, TASM | 
|
|---|---|---|
Прошу прощения за смешной для кого-то вопрос. не могу никак правильно запустить и обработать прерывание от входа т.е. /int0 в приложении асм и бинарник. работает, но только один раз, первый после сброса. должно каждый раз зажигать светик heartbeat (низким уровнем) при отлавливании спада на входе /int0. Где я ошибся???  | 
  | 
|
бинарник не прицепился  | 
  | 
|
не разбираясь...а флаг сбрасываете?  | 
  | 
|
по идее флаг должен сброситься сам при переходу на обработку прерывания, (шепотом: вот так CLR IE0 ? ) вопрос только где ?  | 
  | 
|
да нет...по идее флаг надо сбросить при выходе из прерывания...  | 
  | 
|
Да не, в 51х флаг сам.  | 
  | 
|
надо CLR IE0 вставить в код обработчика прерывания..  | 
  | 
|
ща попробую...  | 
  | 
|
увы... исправленный код - в приложении обработка прерывания выглядит так: ; External INTERRUPT /INT0 CAMSWINT: CLR EX0 ;INT0 disabled MOV     R3,#0AAH RETI результат аналогичен, только первый раз срабатывает.  | 
  | 
|
Странно... Ну разве что: 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...  | 
  | 
|
| 
 Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь  | 
© 2003—2025  | 
|||