Однокристальные микроконтроллеры семейства MCS-51
Лабораторная работа № 9
Программная реализация типовых функций управления
1. Цель работы
Изучить типовые функции управления и их программную реализацию для микроконтроллеров семейства МК51. Исследовать типовые функции управления с помощью симулятора AVSIM51 на персональном компьютере.
2.Основные теоретические сведения
При проектировании устройств и систем управления различными технологическими объектами возникает необходимость программирования таких типовых процедур управления, как опрос состояния двоичного датчика, опрос группы датчиков, ожидание события, формирование управляющих сигналов, формирование временных задержек и т.п.
2.1. Опрос двоичного датчика
На рис. 1,а приведена схема подключения контакта К двоичного датчика к порту P1 микроконтроллера. Если контакт разомкнут, то на линии порта P1.0 присутствует сигнал логической единицы (P1.0 = 1), если контакт замкнут, то P1.0 = 0. Необходимо в некоторой части управляющей программы опросить значение сигнала на линии порта P1.0 и в зависимости от его значения передать управление фрагменту программы с меткой L1 (если P1.0 = 1) или по адресу, отмеченному меткой L2 (при P1.0 = 0).
На рис. 1,б приведена блок-схема алгоритма программы, реализующей процедуру опроса двоичного датчика. Программа имеет символическое имя INPKEY (ввод ключа), которое используется в качестве метки начальной команды этой программы. Текст программы:
INPKEY: JB P1.0, L1 ; Переход на метку L1, если P1.0 = 1, иначе выполнение
; очередной команды
L2: …………….. ; Начало фрагмента 2
…………….
L1: …………….. ; Начало фрагмента 1
2.2. Ожидание события
Пусть требуется по ходу выполнения управляющей программы приостановить продвижение по программе до тех пор, пока в результате процессов, происходящих в объекте управления, не сработает контакт некоторого двоичного датчика. Типовая процедура ожидания события (WAIT) состоит из следующих действий: ввода сигнала от датчика, анализа значения сигнала и передачи управления в зависимости от состояния датчика. По форме сигнала от датчика эту процедуру можно разделить на два вида: ожидание статического и ожидание импульсного сигнала.
2.2.1. Ожидание статического сигнала
На рис. 2.а приведена схема подключения контакта К датчика к линии 1 порта P1, а на рис. 2,б – БСА программы. Программа имеет символическое имя WAIT_0 (ожидание 0-го уровня входного сигнала) и может быть использована основной управляющей программой МК многократно по команде CALL WAIT_0. Из БСА видно, что программа должна постоянно опрашивать значение сигнала на линии P1.1 до тех пор, пока оно не станет равным нулю (контакт датчика события замкнется), и в этом случае продолжить выполнение основной управляющей программы. Если переход к циклу ожидания события из основной программы осуществляется по команде CALL WAIT_0, то возврат в нее из процедуры WAIT_0 должен выполняться по команде RET.
Текст программы ожидания замыкания контакта (ожидание низкого уровня, логического нуля):
WAIT_0: JB P1.1, WAIT_0 ; Ожидание замыкания контакта
EXIT: …. (RET) ……. ; Выход из процедуры (возврат)
Другим частным случаем типовой процедуры ожидания статического сигнала является ожидание размыкания контакта. На рис. 3, а приведена схема подключения нормально-замкнутого контакта К, а на рис. 3, б – БСА программы с символическим именем WAIT_1 (ожидание высокого уровня, логической единицы). Текст программы:
WAIT_1: JNB P1.2, WAIT_1 ; Цикл ожидания, если P1.2 = 0
EXIT: …..(RET) ……. ; Выход из процедуры
2.2.3. Ожидание импульсного сигнала
Особенность процедуры ожидания импульсного сигнала состоит в том, что МК должен обнаружить не только факт появления, но и факт окончания сигнала.
Для программирования этой процедуры удобно воспользоваться рассмотренными выше примерами ожидания события, смонтировав их последовательно в линейную программу. Последовательность склеивания процедур WAIT_0 и WAIT_1 зависит от формы импульса. Для «отрицательного» импульса (последовательность перепадов 1à0à1) процедура WAIT_0 предшествует процедуре WAIT_1, для «положительного» (перепады 0à1à0) – следует за ней.
Пример программной реализации ожидания «отрицательного» импульсного сигнала (рис. 4, а) при подключении датчика к линии 3 порта P1 (рис. 4,б):
WAIT_0: JB P1.3, WAIT_0 ; Ожидание P1.3 = 0
WAIT_1: JNB P1.3, WAIT_1 ; Ожидание P1.3 = 1
………………… ; Следующая команда программы
Аналогичным образом строится программа при подключении датчика «положительного» импульсного сигнала (рис. 5,а) к входу P1.4 (рис. 5, б):
WAIT_1: JNB P1.4, WAIT_1 ; Ожидание P1.4 = 1
WAIT_0: JB P1.4, WAIT_0 ; Ожидание P1.4 = 0
…………………. ; Следующая команда программы
Программная реализация цикла ожидания накладывает ограничения на длительность импульса: импульсы длительностью меньше времени выполнения цикла ожидания могут быть «не замечены» микроконтроллером. Так как команды JB и JNB выполняются в МК51 за 2 машинных цикла, то их длительность при тактовой частоте 12 МГц составляет 2 мкс, а при 6 МГц – 4 мкс. Эти значения и определяют минимальную длительность импульса.
2.3. Формирование временной задержки
В МК51 для формирования временной задержки могут быть использованы
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.