Здраствуйте . Возник вопрос , кто знает пожалуйста подскажите. В программе использующей прерывание , выходя из обработчика прерывания исользуется команда RESUME , так вот эта самая команда сбрасывает флаг вызвавший данное прерывание , или этот флаг нужно сбрасывать самостоятельно програмно ?( например для TMR1 , так PIR1.0 = 0 )
Сообщение отредактировал
555serg - Пн, 02.07.2012, 16:49
Команда Resume предназначена для того, чтобы вновь разрешить обработку возникающих прерываний ранее запрещенных командой Disable, поэтому она должна располагаться в конце подпрограммы обработки прерывания. выходя из обработчика прерывания исользуется команда RESUME - это КАК ???
Это как . Очень просто - команда RESUME ставиться В КОНЦЕ подпрограммы обработки прерывания для того , чтобы вернуться в то место основной программы , где она была прервана. ( это по книге Чака Хелибайка для PicBasic Pro - собственно на PicBasic и писалась программа по поводу которой и возник вопрос ) По вашей ссылке михаил , команда RESUME делает тоже самое плюс сбрасывает (в единицу ) бит разрешения глобального прерывания GIE регистра INCON , но все это для Протона , меня же интересует PicBasic Pro. Вопрос остается открытым - в самом обработчике прерывания нужно ли програмно ( самостоятельно ) сбрасывать флаг ( бит ) этого только что обработанного прерывания , или команда RESUME (или какаето из двух этих DISABLE - ENABLE ) делает это самостоятельно . Спасибо за ответы.
Добавлено (02.07.2012, 22:52) --------------------------------------------- Еще по прерыванию хотел спросить , какой командой ( командами ) в теле обработчика прерывания , в начале сохраняются регистры STATUS и аккумулятор , а в конце перед выходом восстанавливаются обратно регистр W и STATUS . Спасибо.
Сообщение отредактировал
555serg - Пн, 02.07.2012, 23:16
Спасибо большое Михаил. Теперь смог разобраться , написал простенькую программу для прощупывания прерываний от TMR1 , ниже прикладываю програмку . В которой таймер TMR1 , создает прерывания каждые 100 микросекунд , к контроллеру PIC16F877A подключены два индикатора , оба трехразрядные - один красный с общим катодом , ведет счет по 500 микросекунд , - второй зеленый с общим анодом , ведет счет по секундам , применена динамическая индикация , без гашения незначащих нулей. Счет ведется от нуля до 60 секунд , далее все по новой. Для себя открыл одну интересную закономерность по поводу таймера TMR1 , - так как счет в таймере происходит в двух восьмиразрядных регистрах ( младшем - TMR1L и старшем - TMR1H ) то , если не загрузить никакое значение в оба регистра , то по умолчанию счет будет вестись с 0. Все сие собрано на макетной плате , если кому интересно смогу постараться нарисовать схемму. ********** По поводу Протона , читал отзывы о нем , пишут что иногда глючит ,- это правда ?
Хорошо , понял. Буду подумывать насчет Протона. Если не трудно, ткните пож. пальцем откуда и чего надо скачать для начала работы в Протоне. Спасибо. По ПИК Барсику - у себя глюков тоже ни разу не наблюдал.