Программирование таймеров, ввод-вывод данных через параллельные порты, прерывания
Лабораторная
работа
Программирование
таймеров, ввод-вывод данных через параллельные порты, прерывания
Введение
Цель работы: Научится отмерять временные
интервалы в различных режимах работы таймеров, обеспечивать ввод-вывод данных
через параллельные порты и использовать систему прерываний микроконтроллера.
1. Теоретические сведения
В нашей лабораторной работе будем использовать
прерывания от таймеров счетчиков. При подсчете внешних событий используем
счетчик, для подсчета времени - таймер. Для простоты подсчета времени будем
считать, что частота кварцевого резонатора равна 12 МГц, то есть
"рабочая" частота составит 1 МГц. Единица времени 1/1000000 и равна 1
мкс. При использовании 16 битного таймера счетчика (режим 1) таймер сможет
подсчитать промежуток времени до 65536 мкс или 65 мс.
Для подсчета внешних событий достаточно 8-ми
битного таймера счетчика (режим 2), измеряем количество до 256.
2. Ход работы
.1 Задание 1
Установить начальное значение портов.
В зависимости от значения заданного временного
интервала выбрать наиболее удобный режим (0, 1, 2). По истечении временного
интервала выполнить увеличение значения регистра 7 на 1 и выдать на ССИ и
возобновить состояние таймера для следующего отсчета.
= 3.4 = 68*50 мс.
Для такого промежутка времени необходимо 68
переходов таймера. После подсчета времени необходимо инвертировать состояние
бита 0 порта 1.
$mod 510; вектор прерывания по сбросу. При
включении необходимо произвести настройку для выдачи информации на порт 1 при
первом к нему обращении записываем 1.P1,#11111111bEA; разрешение всех
прерываний.ET1; разрешение прерывания от таймера 1. Режим работы таймеров
счетчиков устанавливается в регистре Tmod, управление - Tcon.
Mov Tmod,#00010000bTL1.#LOW(15536)
Mov TH1.#NIGH(15536); в младшую и старшую часть
таймера 1 записываем начальные условия.R7,#86; вписываем любое значение в
регистр 7R6,#68; при помощиTR1; запуск таймера счетчикаSTART; переходим в
основную программу001BH; место, куда перейдет контроллер, когда таймер счетчика
1 переполнитсяTR1; останавливаем таймер счетчика 1
Mov TL1,#LOW(15536)TH1,#HIGH(15536)
Djnz R6,Schet; уменьшаем на единицу и переход
если не 0
Setb TR1A,R7A,P1acc.0P1,AP6,#68
Schet:P2,A; выводим число на ССИSTART.
Контроллер будет подсчитывать количество нажатий
кнопки SB1 и выдавать результат на ЖКИ через Р2.
$mod 510EAET1
Mov Tmod,#01100000b; восьми битный
автоперезагружательный счетчик используется для подсчета чисел 256, подсчет
ведется в младшей части таймера счетчика, а при переполнении в младшую часть
записываем число из старшей частиTH0,#246TL0,#246TR1; запускаем таймер счетчика
1P2,#255; настраиваем порт на выдачу информации
Jmp
START001BHTR1TR1A,TL1A,#246P2,ASTART.
таймер интервал порт микроконтроллер
Вывод
В ходе выполнения лабораторно работы мы
научились отмерять временные интервалы в различных режимах работы таймера,
обеспечивать ввод-вывод данных через параллельные порты и использовать систему
прерываний микроконтроллера.
Контрольные вопросы
. Что такое параллельный код?
Параллельным называют код, все разряды которого
передаются с устройства на устройство одновременно (параллельно).
. Сколько параллельных портов у
микроконтроллера, какие альтернативные функции могут выполнить порты?
Четыре программируемых параллельных порта
ввода/вывода.
. Сколько таймеров имеется у
микроконтроллера, какие есть режимы работы таймеров?
В базовых моделях семейства имеются два
программируемых 16-битных таймера\счетчика (Т/С0и Т/С1), которые могут быть
использованы как в качестве таймеров, так и в качестве счетчиков внешних
событий.
. Что такое прерывание?
Прерывание - сигнал, сообщающий
процессору
<http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80>
о наступлении какого-либо события. При этом выполнение текущей
последовательности команд приостанавливается, и управление передаётся
обработчику прерывания
<http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA_%D0%BF%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F>,
который реагирует на событие и обслуживает его, после чего возвращает
управление в прерванный код.
5. Что такое запрос на прерывание?
Запрос на прерывание - сигнал, отправляемый
устройством для привлечения ресурсов процессора в момент, когда оно готово для
приема или передачи данных.
. Что такое вектор прерывания?