"DVDXpert" - компас в мире Hi-Fi и High End техники и другой stereo и home cinema аппаратуры.

ПРОГРАММЫ И СХЕМЫ ПИШЕМ ПЕРВЫЕ ПРОГРАММЫ

13-08-2018

Эти проблемы легко устранить, но тогда программа не будет настолько простой и наглядной.

Если вам совершенно понятно, как работает эта программа, исправьте ее самостоятельно, чтобы устранить описанные выше недочеты. Затем сделайте так, чтобы при нажатии кнопки раздавался короткий "beep", после чего программа возвращалась к нормальной работе независимо от состояния кнопки. При отпускании и повторном нажатии все должно повторяться. Затем сделайте так, чтобы звук раздавался синхронно с включением светодиода, но длительности включенного и выключенного состояния были равны. Когда вы напишете эти программы, можете считать, что почти научились программировать микроконтроллеры.

beep

ОБРАБОТКА ПРЕРЫВАНИЯ

Микроконтроллеры PIC16FXX имеют два внешних и два внутренних прерывания. В качестве примера мы рассмотрим внешнее прерывание по входу RB0/INT. Разобравшись с этим примером, вам будет несложно работать и с внешним прерыванием по изменению состояния линий RB4RB7. Обработку внутреннего прерывания по переполнению таймера мы рассмотрим в описании программы часов термометра.

Прерывание по входу RB0/INT может происходить как по нарастанию, так и по спаду входного сигнала. Мы сделаем так, чтобы прерывание вызывалось при нажатии кнопки S1. В исходном состоянии на входе поддерживается высокий логический уровень при помощи внутреннего подтягивающего резистора. При нажатии кнопки происходит переход от высокого уровня к низкому. Поэтому для генерации прерывания в момент замыкания контактов кнопки бит INTEDG регистра OPTIONJR.EG должен быть установлен в ноль.

Кроме этого следует учесть, что вектор прерывания всего один и находится по адресу 0004h. Поэтому с адреса 0004h начинается подпрограмма обработки прерывания, а по адресу вектора сброса OOOOh размещают команду перехода на метку, расположенную после окончания подпрограммы обработки прерывания.

Как видите, теперь после директивы "ORG 0000h" идет команда перехода на метку main, а затем директива "ORG 0004h" Начиная с этого адреса будет располагаться подпрограмма обработки прерывания. Она начинается стандартным фрагментом кода, сохраняющего текущие значения аккумулятора W и регистра STATUS. Затем идет программа генерации звукового фрагмента. От предложенной в листингах 2 и 3 она отличается только тем, что добавлены два внешних цикла, чтобы задать необходимую длительность звукового сигнала Когда все циклы завершены, восстанавливаются сохраненные значения W и STATUS, очищается флагбит прерывания и происходит возврат из прерывания.

В основном фрагменте подпрограммы добавилась настройка служебных регистров OPTIONJR.EG и INTCON Настройка портов и управление светодиодом происходит так же, как и в предыдущих программах

У вас может возникнуть вопрос при замыкании и размыкании кнопки происходит так называемый "дребезг контаков ", т е очень быстрое и хаотическое появление и пропадание контакта В результате на входе RB0/INT реально присутствуют не четкие фронты, а серии хаотичных импульсов при замыкании и размыкании Встроенный триггер

Шмитта не полностью защищает от дребезга Как в этом случае будет обрабатываться прерывание


Смотрите также:
 СИНТАКСИС ИСХОДНОГО ТЕКСТА
 Небесная битва
 Что же такое цифровое и аналоговое телевидение и чем они отличаются?
 «Рекьявик» - новая фишка Яндекс
 ОСТАНОВ ПО УСЛОВИЮ

Добавить комментарий:
Введите ваше имя:

Комментарий:

Защита от спама - решите пример: