Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB5_W95.DOC
Скачиваний:
19
Добавлен:
16.04.2013
Размер:
102.4 Кб
Скачать

5.2. Практическая часть.

Как было указано выше, таймер может генерировать прерывания по трем событиям:

·по переполнению счетчика таймера(прерывание TOI);

·при обнаружении на входе TCAP заданного сигнала(прерывание ICI);

·при совпадении значения счетчика таймера с содержимым регистра OCR(прерывание OCI).

Рассмотрим более подробно реализацию указанных типов прерываний.

5.2.1. Прерывание по переполнению таймера (toi).

Проиллюстрируем использование первого типа прерываний простой программой, которая по переполнению таймера складывает содержимое портов А и В и выводит результат в порт В. Напомним, что информация в порт A поступает с переключателей, а при выводе в порт B информация отображается на светодиодах.

Основная программа:

300 LDA #$FF Программируем

302 STA $05 порт В на вывод.

304 CLR $01 Очищаем порт В.

306 LDA #$20 Разрешаем прерывания

308 STA $12 по переполнению таймера.

30À WAIT Разрешаем прерывания и

30Â BRA 30A ждем переполнения таймера.

Подпрограмма обработки прерывания:

800 LDA $01 Складываем содержимое

802 ADD $0 портов А и В.

804 STA $01 Сохраняем результат в порту В.

806 LDA $13 Сбрасываем флаг

808 LDA $19 переполнения таймера.

80À RTI Возврат из подпрограммы.

В ячейку памяти $1FF8, где располагается вектор прерывания TOI, запишем адрес подпрограммы обработки прерывания по преполнению таймера ($0800) и предусмотрим возможность по нажатию кнопкиUSER RESET начинать счет сначала, для чего по адресу $1FFE (вектор RESET) занесем число $0300. Ниже приводятся некоторые пояснения к программе.

В ячейке $12 располагается регистр управления таймером (TCR), пятый бит которого является флагом разрешения прерываний по переполнению таймера. Записывая туда единицу командами с адресами $306 и $308, мы разрешаем соответствующее прерывание. При переполнении таймера устанавливается флагTOFв регистре статуса таймера (TSR), расположенном по адресу $13. Этот флаг необходимо сбросить в подпрограмме обработки прерывания, так как в противном случае, после выхода из нее по команде RTI, прерывания будут разрешены, а установленный флаг TOF приведет к генерации нового прерывания. Чтобы его сбросить, необходимо обратиться сначала к TSR, а затем к младшему байту регистра счетчика таймера (адрес $19). Для этого используются команды, находящиеся по адресам $806 и $808. Поскольку по адресу $0 находится регистр данных порта А, к которому подключены переключатели, то команда сложения по адресу $802 использует в качестве своих аргументов содержимое порта В, скопированное в аккумулятор, и значение, считанное с переключателей в порт А.

Запустите программу с адреса $300. На светодиодах начнут отображаться постоянно увеличивающиеся числа (при условии, что на переключателях установлен код, отличный от нуля). Изменяя положение переключателей, убедитесь в правильной работе программы. При нажатии на USER RESETпрограмма начнет считать сначала, так как управление при этом переходит по адресу $300. Выйти из программы можно, нажав кнопку MASTER RESET.

Соседние файлы в предмете Отладка микроконтроллеров ЭВМ