- •3. Методические указания к лабораторным работам
- •3.1 Лабораторная работа № 1 «интегрированная среда разработки программ для микроконотроллеров piCmicro mplab ide 5.61»
- •3.1.1 Цель работы
- •3.1.2 Содержание лабораторной работы
- •3.1.3 Порядок проведения лабораторной работы
- •Графическое меню проектирования
- •3.1.4 Контрольные вопросы
- •3.2 Лабораторная работа № 2 «абсолютная адресация в командах пересылки данных»
- •3.2.1 Цель работы
- •3.2.2 Краткие сведения из теории
- •3.2.2.1 Регистры port а и trisa
- •3.2.2.2 Регистры portb и trisb
- •3.2.3 Содержание лабораторной работы
- •3.2.4 Порядок проведения лабораторной работы
- •3.2.5 Контрольные вопросы
- •3.3 Лабораторная работа № 3 «косвенная адресация в командах пересылки данных»
- •3.3.1 Цель работы
- •3.3.2 Краткие сведения
- •3.3.3 Содержание лабораторной работы
- •3.3.4 Порядок проведения лабораторной работы
- •3.3.5 Контрольные вопросы
- •3.4 Лабораторная работа № 4 «изучение команд арифметических операций»
- •3.4.1 Цель работы
- •3.4.2 Краткие сведения
- •3.4.3 Содержание лабораторной работы
- •3.4.4 Порядок проведения лабораторной работы
- •3.4.5 Контрольные вопросы
- •3.5 Лабораторная работа № 5 «изучение команд логической обработки и маскирования данных»
- •3.5.1 Цель работы
- •3.5.2 Краткие сведения
- •3.5.3 Содержание лабораторной работы
- •3.5.4 Порядок проведения лабораторной работы
- •3.5.5 Контрольные вопросы:
- •3.6 Лабораторная работа № 6 «команды передачи управления»
- •3.6.1 Цель работы
- •3.6.2 Краткие сведения
- •3.6.3 Содержание лабораторной работы
- •3.6.4 Порядок проведения лабораторной работы
- •3.6.5 Контрольные вопросы:
- •3.7 Лабораторная работа № 7 «модуль таймера tmr0»
- •3.7.1 Цель работы
- •3.7.2 Краткие сведения
- •3.7.3 Содержание лабораторной работы
- •3.7.4 Порядок проведения лабораторной работы
- •3.7.5 Контрольные вопросы:
- •3.8 Лабораторная работа № 8 «изучение способов обработки прерываний»
- •3.8.1 Цель работы
- •3.8.2 Краткие сведения
- •3.8.2.1 Прерывание по переполнению tmr0
- •3.8.2.2 Внешнее прерывание с входа rb0/int
- •3.8.2.3 Прерывание по изменению уровня сигнала на входах rb7:rb4
- •3.8.3 Содержание лабораторной работы
- •3.8.4 Порядок проведения лабораторной работы
- •3.8.5 Контрольные вопросы:
- •4. Список рекомендуемой литературы
3.7.3 Содержание лабораторной работы
1. Реализовать программу бегущих огней с задержкой между переключениями Тзад = 1сек. При формировании подпрограммы задержки использовать опыт создания п/п DELAY_SCAN.
Как один из вариантов получения задержки в 1 сек, можно использовать 100-кратный вызов рассмотренной в п 3.7.2 п/п DELAY_SCAN.
Используя краткие сведения из раздела 3.7.2 реализовать программу подсчёта числа импульсов, приходящих на вывод RA4/T0CKI.
3.7.4 Порядок проведения лабораторной работы
1. Создайте новый проект и, пользуясь рассмотренными выше примерами, напишите и введите программу.
2. Откомпилируйте проект и перейдите к режиму симуляции.
3. Откройте окна регистров специальных функций и ОЗУ данных.
4. Выполняя в пошаговом режиме (F7) проанализируйте содержимое регистров STATUS, OPTION_REG, INTCON, FSR и содержимое TMR0.
Примечание:
При переходе, в пошаговом режиме, к команде вызова подпрограммы нажмите клавишу (F8), которая позволит выполнить подпрограмму за один шаг.
В теле подпрограммы DELAY_SCAN задайте значения TMR0 например как 02h, что позволит пронаблюдать работу подпрограммы задержки за много меньшее число тактов.
Имитацию внешних воздействий на входе RA4/T0CKI произведите с помощью асинхронных стимулов, рассмотренных в разделе 3.6.4, Лабораторной работы № 6.
3.7.5 Контрольные вопросы:
1. Что произойдёт с содержимым предделителя при записи нового значения в TMR0?
2. Каков максимальный коэффициент деления можно осуществить с помощью TMR0 при наличии предделителя?
3. Какие факторы определяют время выполнения группы команд микроконтроллера?
4. Чем ограничена частота внешнего входного сигнала для TMR0?
3.8 Лабораторная работа № 8 «изучение способов обработки прерываний»
3.8.1 Цель работы
Изучить особенности использования таймера для формирования программно-независимых временных задержек и подсчёта внешних событий.
3.8.2 Краткие сведения
PIC16F87X имеют 14 источников прерываний. Регистр INTCON содержит флаги отдельных прерываний, биты разрешения этих прерываний и бит глобального разрешения прерываний.
Регистр INTCON (адрес 0Bh, 8Bh, 10Bh или 18h)
R/W–0 |
R/W–0 |
R/W–0 |
R/W–0 |
R/W–0 |
R/W–0 |
R/W–0 |
R/W–x |
GIE |
PEIE |
T0IE |
INTE |
RBIE |
T0IF |
INTF |
RBIF |
Бит 7 |
Бит 6 |
Бит 5 |
Бит 4 |
Бит З |
Бит 2 |
Бит 1 |
Бит 0 |
Бит 7: |
GIE: Глобальное разрешение прерываний 0 = все прерывания запрещены 1 = разрешены все немаскированные прерывания |
Бит 6: |
PEIE: Разрешение прерываний от периферийных модулей 0 = прерывания от периферийных модулей запрещены 1 = разрешены все немаскированные прерывания периферийных модулей |
Бит 5: |
T0IE: Разрешение прерывания по переполнению TMR0 0 = прерывание запрещено 1 = прерывание разрешено |
Бит 4: |
INTE: Разрешение внешнего прерывания INT 0 = прерывание запрещено 1 = прерывание разрешено |
Бит 3: |
RBIE: Разрешение прерывания по изменению сигнала на входах RB7:RB4 PORTB 0 = прерывание запрещено 1 = прерывание разрешено |
Бит 2: |
T0IF: Флаг прерывания по переполнению TMR0 0 = переполнения TMR0 не было 1 = произошло переполнение TMR0 (сбрасывается программно) |
Бит 1: |
INTF: Флаг внешнего прерывания INT 0 = внешнего прерывания не было 1 = выполнено условие внешнего прерывания на выводе RB0/INT (сбрасывается программно) |
Бит 0: |
RBIF: Флаг прерывания по изменению уровня сигнала на входах RB7:RB4 PORTB 0 = не было изменения уровня сигнала ни на одном из входов RB7:RB4 1 = зафиксировано изменение уровня сигнала на одном из входов RB7:RB4 (сбрасывается программно) |
Если бит GIE (INTCGN<7>) установлен в '1', разрешены все немаскированные прерывания. Если GIE=0, то все прерывания запрещены. Каждое прерывание в отдельности может быть разрешено/запрещено установкой/сбросом соответствующего бита в регистрах INTCON, PIE1 и PIE2. При сбросе микроконтроллера бит GIE сбрасывается в '0'.
При возвращении из подпрограммы обработки прерывания, по команде RETFIE, бит GIE аппаратно устанавливается в '1', разрешая все немаскированные прерывания.
В регистре INTCON находятся флаги следующих прерываний: внешнего сигнала INT, изменения уровня сигнала на входах RB7:RB4, переполнения TMR0.
В регистрах PIR1, PIR2 содержатся флаги прерываний периферийных модулей микроконтроллера, а в регистрах PIE1, PIE2 соответствующие биты разрешения прерываний. В регистре INTCON находится бит разрешения прерываний от периферийных модулей.
Когда возникает прерывание бит GIE аппаратно сбрасывается в '0', запрещая прерывания, адрес возврата из подпрограммы обработки прерываний помещается в стек, а в счетчик команд PC загружается вектор прерывания 0004h.
В программе обработки прерываний должен определяться источник(и) прерывания с помощью опроса флагов прерываний, которые должны быть сброшены программно перед новым разрешением прерываний, чтобы избежать повторного вызова.
Для внешних источников прерываний (сигнал INT, изменения уровня сигнала на входах RB7:RB4) время перехода на подпрограмму обработки прерываний будет составлять 3-4 машинных цикла. Точное время перехода зависит от конкретного случая, оно одинаково для 1 и 2-х цикловых команд.
Флаги прерываний устанавливаются независимо от состояния соответствующих битов маски и бита GIE.
Из всего многообразия прерываний рассмотрим способы обработки и определения источника прерывания при прерывании от внешнего входа RB0/INT, переполнения TMR0 и изменения уровня сигнала на входах RB7:RB4.
