Однокристальные микроконтроллеры семейства MCS-51. Программная реализация типовых функций управления

Страницы работы

15 страниц (Word-файл)

Фрагмент текста работы

                         Однокристальные микроконтроллеры семейства 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 для формирования временной задержки могут быть использованы

Похожие материалы

Информация о работе