|
В начало
Лабораторная работа
«Вычисление параметров импульсного
сигнала»
Цель: получить
практические навыки работы с прерываниями по внешнему воздействию и получения
временных параметров импульсного сигнала при помощи встроенного таймера. Теоретическая часть 1. Организация работы с прерываниями в PIC-контроллерах Микроконтроллеры серии
PIC16FXX имеют 4 прерывания: прерывание по переполнению таймера TMR0, прерывание по изменению значения на
выводах RB4-RB7, прерывание по
окончанию записи в перепрограммируемое постоянное запоминающееся устройство
EEPROM, внешнее прерывание по
сигналу на выводе INT(RB0). Для всех прерываний в микроконтроллере зарезервирован
1 вектор прерывания, расположенный по адресу 0x04. Т.е. при срабатывании любого
из прерываний программа автоматически перейдет на адрес 0x04 и очистит бит GIE
в регистре INTCON, тем самым, запретив все прерывания. Для выхода из прерывания
используется команда RETIE, которая возвращает программу на тот адрес, на
котором она была в момент возникновения прерывания, и выставляет бит GIE,
разрешая прерывания. За работу прерываний отвечает регистр INTCON. Назначение
битов регистра INTCON приведено в табл. 2.1. Все биты
регистра INTCON доступны и для чтения, и для записи. По умолчанию все биты
регистра INTCON, кроме RBIF, равны 0. Значение бита RBIF по умолчанию
неопределенно. Для того, чтобы обеспечить переход
программы на адрес 0x04 при срабатывании того или иного прерывания, следует
записать 1 в бит GIE и биты, отвечающие за разрешение конкретных прерываний. Для того чтобы узнать, какое из прерываний сработало, надо проверить значение флагов прерываний T0IF,
INTF, RBIF. Таблица 1. Назначение битов регистра
INTCON
После обработки
прерываний перед вызовом инструкции RETFIE следует самостоятельно очистить
флаги прерываний, тем самым, предотвратив повторное срабатывание прерываний. 2. Настройка параметров таймера TMR0 и прерывания по внешнему сигналу на выводе INT За настройку параметров таймера TMR0 и
прерывания по внешнему сигналу на выводе INT отвечает регистр OPTION. Назначение
битов регистра OPTION приведено в табл.2.2. Все биты регистра OPTION
доступны как для записи, так и для чтения. По умолчанию все биты регистра
OPTION равны 1. Таблица 2. Назначение битов регистра OPTION
В микроконтроллере
PIC16F84A реализован 8-битный таймер/счетчик. Значение таймер/счетчика хранится
в регистре TMR0. Приведем возможный порядок
инициализации таймера: - установка
разрешения прерывания таймера в регистре INTCON; - установка
начального значения таймера в регистр TMR0; - установка
источника тактовых импульсов и значения делителя частоты. Выбор значения делителя частоты осуществляется при
помощи установки соответствующего значения в младшую тетраду
регистра OPTION (биты PSA-PS0). В таблице 2.3 приведены значения делителя
частоты. Таблица 3. Значения делителя частоты
Для того чтобы остановить таймер достаточно просто
установить в 1 бит T0CS в регистре OPTIONS, переведя таймер в работу
от внешнего источника тактовых импульсов. При записи значения в регистр TMR0
значение делителя частоты в регистре OPTION сбрасывается, однако сами установки
делителя частоты остаются неизменными. 3. Работа с внешними портами ввода/вывода Микроконтроллер PIC16F84A имеет 2 двунаправленных
порта ввода/вывода: PORTA (выводы RА0-RА4) и PORTB (RB0-RB7). Некоторые из
выводов портов могут быть настроены для выполнения специальных функций (например вывод RB0 порта PORTB может быть настроен для
генерации прерывания по внешнему сигналу), в этом случае вывод не будет работать
как вывод порта ввода/вывода. Для настройки режима
работы каждого вывода портов PORTA и PORTB используются регистры TRISA (0x85) и
TRISB (0x86) соответственно. Если в регистре TRISA (TRISB) бит n установлен в 1, то вывод RAn
(RBn) будет работать в режиме ввода информации, если
же в регистре TRISA (TRISB) бит n установлен в 0, то
вывод RAn (RBn) будет
работать в режиме вывода. Для того, чтобы получить
информацию с того или иного вывода, надо настроить его при помощи регистра
TRISA (TRISB) в режим ввода информации и прочитать соответствующий бит в регистре
PORTA (PORTB). Пример 1. Для того,
чтобы получить значение на выводе RA3, следует: 1. Установить 3-й бит регистра TRISA в 1. 2. Прочитать значение 3-го бита регистра PORTA. Для того, чтобы вывести
информацию на тот или иной вывод, надо настроить его при помощи регистра TRISA
(TRISB) в режим вывода информации. Пример 2. Для того,
чтобы получить значение на выводе RB5, следует: 1. Установить 5-й бит регистра TRISB в 0. 2. Записать необходимое значение в 5-й бит регистра
PORTB. По умолчанию оба порта PORTA и PORTB находятся в режиме
ввода информации (т.е. все биты регистров TRISA, TRISB равны 1). 4. Задание Необходимо написать программу формирования заданной
выходной импульсной последовательности на выводе RB7 микроконтроллера. Ширина
первого импульса равна a тактов, количество импульсов - N, импульсы, следующие после первого,
должны иметь ширину на b меньше предыдущего. Период импульсов
остается постоянным и равным 256 тактам. Таблица 4. Варианты задания
5. Содержание отчёта Отчёт должен содержать: - тему и цель лабораторной работы; - задание и номер варианта; - блок-схему алгоритма; - текст программы,
соответствующей варианту задания, с комментариями; - результат реализации программы - импульсная последовательность
(количество и длительности импульсов в соответствии с вариантом задания). |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||