Добавил:
Кафедра ВТ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
07.04.2023
Размер:
96.61 Кб
Скачать

МИНОБРНАУКИ РОССИИ

__________________________________________________

Санкт-Петербургский государственный электротехнический

университет «ЛЭТИ» им. В.И. Ульянова (Ленина)

__________________________________________________

МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ

Отчет по лабораторной работе №3

Вариант бригады №5

Выполнили:

Жариков В.В

Шумилов Н.С.

Факультет: КТИ

Группа №: 2307

Проверил:

Зуев И.С

Подпись:

________

Санкт -Петербург

СПбГЭТУ “ЛЭТИ”

2015 г.

Лабораторная работа №3

Изучение режимов работы таймера/счетчика в микроконтроллере

Цель работы:

  1. Ознакомление с некоторыми применениями таймера/счетчика в микроконтроллере.

  2. Изучение вопросов программирования и применения таймера/счетчика в основных режимах его работы.

Задания на лабораторную работу

Вывод результата эксперимента осуществляется через порт P1 контроллера.

  1. Разработать программу аппаратно-программной задержки, обеспечивающую наблюдение эффекта "Бегущего огня" на индикаторных светодиодах. Вид и частота "бегущего огня" определены вариантом задания (номер бригады).

Совместно с таймером/счетчиком при выполнении лабораторной работы необходимо использовать подпрограмму задержки. Сигнал прерывания TF0 из С/Т0 вызывает модуль программной задержки, реализуемой с использованием соответствующего кода, загружаемого в регистр МК и декрементируемого после очередного сигнала прерывания из Т/С0. Разрешение прерывания от Т/С0 осуществляется установкой бита IE.1 в регистре масок прерывания IE и установкой бита IE.7 для общего разрешения прерывания (смотрите описание системы прерывания в лабораторной работе №4).

В режиме реального времени реализация задержки только посредством таймера при частоте тактирования микроконтроллера 6Mгц для 16-битного Т/С составляет около 130 мс, что недостаточно для визуального наблюдения за "бегущим огнем", используемым в качестве индикатора результатов эксперимента.

В режиме моделирования процессы в ОМК идут медленнее в сотни раз. Поэтому настройка C/T0 иная, чем в режиме реального времени

В соответствии с заданием определить длительность и количество вызовов подпрограммы задержки для режимов реального времени и моделирования.

Возврат из подпрограммы программной задержки обеспечивается командой RETI, восстанавливающей содержимое программного счетчика РС из стека. В стек РС загружается автоматически по аппаратно сформированному коду команды LCALL. В РС при прерывании от Т/С0 загружается код адреса 000BH, в котором находится команда перехода к подпрограмме обработки соответствующего прерывания.

А. Разрешение счета обеспечивается битом GATE, устанавливаемым в регистре TMOD.

В. Разрешение счета обеспечивается внешним сигналом, поступающим на вход прерывания INT0 (в макете обозначен IO).

Вариант

задания

Вид бегущего огня

Время свечения

светодиода/СИД/

/в секундах/

5

Слева-направо; горят 4 СИД

0,5

2. Изучить особенность работы Т/С0 в режиме 2.

Разработать программу подсчета числа внешних сигналов /событий/. Источником сигналов является внешний сигнал, поступающий на вход Т0, режим работы Т/С0 – режим 2. Для наблюдения выполнения программы загрузить в TL0 и TH0 одинаковые коды, например 0F8H. Результатом выполнения программы является код числа сигналов, выведенный в P1.

Cтруктурные схемы работы T/C для изучаемых режимов

Режим 1. Работа Т/С в этом режиме показана на рис. на примере Т/С0. В этом режиме разрядность Т/С - 16 бит, при переходе Т/С из состояния "все единицы" в состояние "все нули" устанавливается флаг прерывания TF0. Входной синхросигнал таймера разрешен (поступает на вход Т/С), когда управляющий бит GATE (блокировка) равен 0, либо на внешний вход запроса прерывания INT0 поступает уровень 1. Необходимо отметить, что установка бита GATE в 1 позволяет использовать таймер для измерения длительности импульсного сигнала, поступающего на вход INT0.

Режим 2. В режиме 2 переполнение (переход из состояния 11...1 в 00...0) 8-битного счетчика TL0 приводит к формированию флажка TF0 и автоматической загрузке в TL0 байта из регистра TH0 Т/С0, заданного предварительно программным способом. При перезагрузке содержимое TH0 остается неизменным. В этом режиме T/C0 и T/C1 функционируют одинаковым образом. Работа Т/С0 показана на рис.

- 28 -

Описания алгоритмов и листинги программ

Программа к заданию 1 устанавливает флаги разрешения прерывания, устанавливает режим таймера (режим 1) и запускает таймер, после чего в бесконечном цикле с меткой DIVIDER проверяет значение счетчика вызовов процедуры обработки прерывания от T/C0, если оно равно ограничению (об этом ниже), то циклически сдвигает инициализированный формой «бегущего огня» аккумулятор, подает значение аккумулятора на порт P1, и сбрасывает R0. Процедура обработки прерывания от T/C0 просто инкрементирует R0

Желаемую частоту обновления индикаторов в (1/0.5 c) = 2 Гц можно получить делением тактовой частоты в 6МГц сначала на 2^16 посредством T/C0, а затем на ~46 посредством программного делителя, отсюда ограничение на число вызовов - 46

Поскольку в режиме симуляции процессы протекают в сотни раз медленее, для демонстрации корректности работы программы в нее были внесены некоторые изменения (см. комментарии в коде)

Листинг программы к заданию 1

$mod52

ORG 000h

JMP MAIN

ORG 000Bh

JMP DELAY

ORG 0100h

MAIN:

MOV A, #0F0h ;Форма "бегущего огня"

MOV R0, #0

SETB IE.1 ;Разрешение прерываний от T/C0

SETB IE.7 ;Общее разрешение прерываний

MOV TL0, #0F8h ;Для наблюдения в режиме симуляции, закомментить

MOV TH0, #0FFh ;Для наблюдения в режиме симуляции, закомментить

SETB TMOD.7 ;Установка режима таймера

SETB TCON.4 ;Запуск таймера

;Желаемой частоты (1/0.5 c.) = 2 Гц можно добиться делением тактовой частоты в 6МГц

;сначала на 2^16 посредством T/C0, а затем на ~46 посредством программного делителя.

DIVIDER: ;Программный делитель

;CJNE R0, #46, DIVIDER ;Раскомментить

MOV P1, A ;Выводим наш "огонь" в порт

RR A ;Циклически сдвигаем наш "огонь"

MOV R0, #0

JMP DIVIDER

ORG 0120h

DELAY: ;Подпрограмма задержки

MOV TL0, #0F8h ;Закомментить

MOV TH0, #0FFh ;Закомментить

INC R0

RETI

END

Листинг программы к заданию 2

$mod52

ORG 0000h

JMP MAIN

ORG 000Bh ;Обработка прерывания TF0

JMP TM0

MAIN:

MOV TMOD, #00000110b ;Устанавливаем режим работы 2 таймера

MOV TL0, #0f8h

MOV TH0, #0f8h

MOV IE, #10000010b;

MOV P1, #0h

MOV TL1,#1h

SETB TR0; Запуск таймера

M1: JMP M1

TM0:; Прерывание таймера 0;

MOV P1,TL1

INC TL1

RETI

END

Соседние файлы в папке Первый чел