Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1 Mб
Скачать

3.7.3 Содержание лабораторной работы

1. Реализовать программу бегущих огней с задержкой между переключениями Тзад = 1сек. При формировании подпрограммы задержки использовать опыт создания п/п DELAY_SCAN.

Как один из вариантов получения задержки в 1 сек, можно использовать 100-кратный вызов рассмотренной в п 3.7.2 п/п DELAY_SCAN.

  1. Используя краткие сведения из раздела 3.7.2 реализовать программу подсчёта числа импульсов, приходящих на вывод RA4/T0CKI.

3.7.4 Порядок проведения лабораторной работы

1. Создайте новый проект и, пользуясь рассмотренными выше примерами, напишите и введите программу.

2. Откомпилируйте проект и перейдите к режиму симуляции.

3. Откройте окна регистров специальных функций и ОЗУ данных.

4. Выполняя в пошаговом режиме (F7) проанализируйте содержимое регистров STATUS, OPTION_REG, INTCON, FSR и содержимое TMR0.

Примечание:

  1. При переходе, в пошаговом режиме, к команде вызова подпрограммы нажмите клавишу (F8), которая позволит выполнить подпрограмму за один шаг.

  2. В теле подпрограммы DELAY_SCAN задайте значения TMR0 например как 02h, что позволит пронаблюдать работу подпрограммы задержки за много меньшее число тактов.

  3. Имитацию внешних воздействий на входе 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.