Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы №4, №5, №6_КА1-03.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
207.87 Кб
Скачать

- 22 -

ЛАБОРАТОРНАЯ РАБОТА №4

РЕАЛИЗАЦИЯ ТАЙМЕРНЫХ ФУНКЦИЙ В ЦИФРОВЫХ СИСТЕМАХ НА БАЗЕ МИКРОКОНТРОЛЛЕРА 80С31

  1. Цель работы

Изучение таймеров/счетчиков микроконтроллера 80СЗ1 и их функциональных возможностей для управления внешними устройствами в режиме реального времени и приобретение практических навыков разработки и отладки микропроцессорных систем с помощью интегрированной системы программирования.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

  1. Бродин В.Г., Шагурин М.И. Микроконтроллеры: архитектура, программирование, интерфейс. Справочник. – М.: ЭКОМ, 1999, с. 175-179.

  2. Бродин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики. – М.: ЭКОМ, 2002, с. 87-89.

  1. Лабораторная установка

Лабораторная работа выполняется на отладочном аппаратно-программном лабораторном комплексе, описание которого дано в приложении к данным лабораторным работам. В приложении представлена также схема интерфейсной платы и адреса используемых внешних устройств.

  1. Подготовка к работе

    1. Изучить аппаратные и программные средства управления таймерами/счетчиками микроконтроллера 80С31.

    2. Ознакомиться с принципиальной схемой интерфейсной платы, представленной в приложении к данным лабораторным работам.

    3. Создать файл с именем tc_demo.a52 и записать в него следующую программу на языке Ассемблера:

Del equ 00h ;установка константы, определяющей

;величину временной задержки

ljmp 30h

org З0h ;начальный адрес программы

;Инициализация таймеров

mov TMOD, #21h ;Т/С1 в режиме 2, Т/С0 в режиме 1

mov TH1, #0fdh ;установка частоты переполнения

mov TL1, #0fdh ;Т/С1, которая соответствует скорости ;передачи по последовательному ;каналу 9600 бод при условии, что ;тактовая частота равна 11059 кГц

mov TCON, #40h ;запуск Т/С1 для стробирования

;последовательного порта

mov SCON, #50h ;инициализация последовательного интер-;фейса для работы на приём в режиме 1

mov DPTR, #8000h ;инициализация индикатора

clr A ;формирование первой цифры

movx @DPTR, A ;вывод этой цифры на индикатор

mov R3, #9 ;в R3 – счётчик числа циклов

Next_Number:

inc A

mov TH0, #High(Del) ;загрузка таймера Т/С0 константой для

mov TL0, #Low(Del) ;формирования заданной задержки

acall Delay ;вызов п/п временной задержки

movx @DPTR, A ;вывод очередной цифры

djnz RЗ, Next_Number

; Подпрограмма формирования временной задержки

Delay:

setb TR0 ;запуск Т/С0

jnb TF0, $ ;ожидание переполнения

clr TR0 ;выключение Т/С0

clr TF0 ;сброс флага переполнения

ret ;возврат

end

Таймеры/счетчики микроконтроллеров могут использоваться для формирования временной сетки (как последовательности равных временных интервалов), отдельных временных интервалов произвольной длительности и формирования сигнала синхронизации для встроенного последовательного порта. В программе tc_demo Т/С1 задает скорость обмена по последовательному порту, а Т/С0 используется для формирования временной задержки.

В начале программы tc_demo находятся две директивы, первая определяет значение константы временной задержки, а вторая размещает код программы с адреса 30h, чтобы она не накладывалась на область таблицы переходов системы прерываний.

Первые три исполняемые команды программы конфигурируют Т/С0 и Т/С1, четвертая запускает Т/С1, а пятая определяет режим работы последовательного порта.

Следующий фрагмент из четырех команд загружает в регистр указателя внешней памяти данных адрес первого семисегментного индикатора, очищает аккумулятор и выводит на индикатор цифру 0 (дешифраторы имеются в схеме). Регистр R3 отводится под счетчик циклов и в него загружается десятичное число 9.

В цикле, начинающемся с метки Next_Number, инкрементируется содержимое аккумулятора, в Т/С0 загружается константа и вызывается подпрограмма временной задержки. После временной задержки, величина которой при прочих равных условиях определяется величиной константы, записанной в T/C0, на индикатор выводится очередная цифра, декрементируется содержимое счётчика R3 и проверяется его значение. Работа программы завершается после последовательного вывода на индикатор всех десятичных цифр от 0 до 9.

Работа подпрограммы временной задержки начинается с запуска Т/С0 путём установки разряда TR0 и ожидания установки флага переполнения TF0. После установки флага переполнения T/C0 выключается, флаг переполнения сбрасывается и происходит возврат в главную программу.

  1. Вычислить максимальную величину временной задержки, которую можно получить с помощью подпрограммы Delay.