
- •;Инициализация таймеров
- •; Подпрограмма формирования временной задержки
- •Порядок выполнения работы
- •Бродин в.Г., Шагурин м.И. Микроконтроллеры: архитектура, программирование, интерфейс. Справочник. – м.: эком, 1999, с. 179-182.
- •Бродин в.Б., Калинин а.В. Системы на микроконтроллерах и бис программируемой логики. – м.: эком, 2002, с. 82-87.
- •Подготовка к работе
- •;Подпрограмма кодирования символа клавиши
- •;Подпрограмма временной задержки
- •Порядок выполнения работы
- •Цель работы
- •Аппаратные и программные средства
- •Векторы системы прерываний
- •Подготовка к работе
- •Порядок выполнения работы
- •Краткое описание лабораторной установки
- •Одноплатный контроллер
- •Плата супервизора
- •Интерфейсная плата
-
ЛАБОРАТОРНАЯ РАБОТА №4
РЕАЛИЗАЦИЯ ТАЙМЕРНЫХ ФУНКЦИЙ В ЦИФРОВЫХ СИСТЕМАХ НА БАЗЕ МИКРОКОНТРОЛЛЕРА 80С31
Цель работы
Изучение таймеров/счетчиков микроконтроллера 80СЗ1 и их функциональных возможностей для управления внешними устройствами в режиме реального времени и приобретение практических навыков разработки и отладки микропроцессорных систем с помощью интегрированной системы программирования.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
Бродин В.Г., Шагурин М.И. Микроконтроллеры: архитектура, программирование, интерфейс. Справочник. – М.: ЭКОМ, 1999, с. 175-179.
Бродин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики. – М.: ЭКОМ, 2002, с. 87-89.
Лабораторная установка
Лабораторная работа выполняется на отладочном аппаратно-программном лабораторном комплексе, описание которого дано в приложении к данным лабораторным работам. В приложении представлена также схема интерфейсной платы и адреса используемых внешних устройств.
Подготовка к работе
Изучить аппаратные и программные средства управления таймерами/счетчиками микроконтроллера 80С31.
Ознакомиться с принципиальной схемой интерфейсной платы, представленной в приложении к данным лабораторным работам.
Создать файл с именем 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 выключается, флаг переполнения сбрасывается и происходит возврат в главную программу.
Вычислить максимальную величину временной задержки, которую можно получить с помощью подпрограммы Delay.