Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
длительность импульса.doc
Скачиваний:
3
Добавлен:
17.11.2019
Размер:
256 Кб
Скачать

4 Описание функционирования алгоритма программного обеспечения (по).

Имея в виду тот факт, что работа проектируемого устройства основана на управлении микроконтроллером остальными узлами и блоками устройства, то для правильной работы, помимо правильно разработанной схемы устройства, необходимо разработать алгоритм управления этими устройствами. Алгоритм отражает конечный набор правил для выполнения процедур управления. От его структуры зависит, насколько рационально используются возможности устройства, возможность усовершенствования устройства без существенных или без изменения схемы устройства, скорость обработки команд управления, а также вероятность сбоя в работе устройства по вине программиста использующего не совсем верный принцип работы устройства. По этой причине разработка алгоритма управляющей программы является одним из основных этапов разработки устройства. Разработчик должен чётко представлять назначение и принцип работы каждого узла не только в отдельности, но и их совместную работу.

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

Блок-схема алгоритма управляющей программы и листинг программы на языке Ассемблера приведены соответственно в прил. 2 и прил. 3.

При запуске системы оператором, т. е. при нажатии кнопки «Сброс» счетчик команд обнуляется. МП выполняет обращение к ПЗУ по адресу 0000Н, который является начальным адресом программы. Программа начинается с настройки таймера/счетчика Т0. Для этого задаем режим работы – режим шестнадцатибитного таймера, причем таймер будет запускаться при наличии логической «1» на входе INT0 и при значении TR0, равном «1». После этого МП переходит в состояние ожидания события, постоянно опрашивая входной порт 3 и анализируя состояние входного сигнала на линии Т0. После того как сигнал на входе станет равным «1», содержимое Т/С0 будет увеличиваться на 1 через каждую 1мкс до тех пор, пока на выходе сигнал не приобретет значение «0». Значение, равное Tx в мкс, будет находиться в соответствующих регистрах TH0 и TL0. Далее для отображения на шестиразрядном семисегментном индикаторе необходимо перевести данное значение из двоичного вида в десятично-двоичный код.

В таблице приведены описания используемых в программе команд.

Табл. 8. Используемые в программе команды.

Название команды

Мнемокод

Операция

Пересылка в аккумулятор из регистра (n = 0 - 7)

MOV A, Rn

(A) = (Rn)

Пересылка в аккумулятор прямоадресуемого байта

MOV A, ad

(A) = (ad)

Пересылка в аккумулятор байта из РДП (i = 0, 1)

MOV A, @Ri

(A) = ((Ri))

Загрузка в аккумулятор константы

MOV A, #d

(A) = #d

Пересылка в регистр из аккумулятора

MOV Rn, A

(Rn) = (A)

Пересылка в регистр прямоадресуемого байта

MOV Rn, ad

(Rn) = (ad)

Загрузка в регистр константы

MOV Rn, #d

(Rn) = #d

Десятичная коррекция аккумулятора

DA A

Если

(A0-3) > 9 \/ ((AC) = 1),

то (A0-3) = (A0-3) + 6, затем если

(A4-7) > 9 \/ ((C) = 1),

то (A4-7) = (A4-7) + 6

Инкремент регистра

INC Rn

(Rn) = (Rn) + 1

Декремент регистра

DEC Rn

(Rn) = (Rn) - 1

Логическое И аккумулятора и константы

ANL A, #d

(A) = (A) /\ #d

Логическое ИЛИ аккумулятора и регистра

ORL A, Rn

(A) = (A) \/ (Rn)

Обмен местами тетрад в аккумуляторе

SWAP A

(A0-3) <-> (A4-7)

Сброс бита

CLR bit

(b) = 0

Установка бита

SETB bit

(b) = 1

Длинный переход в полном объеме памяти в программ

LJMP ad16

(PC) = ad16

Переход, если бит равен единице

JB bit, rel

(PC) = (PC) + 3,

если (b) = 1,

то (PC) = (PC) + rel

Переход, если бит равен нулю

JNB bit, rel

(PC) = (PC) + 3,

если (b) = 0,

то (PC) = (PC) + rel

Декремент регистра и переход, если не нуль

DJNZ Rn, rel

(PC) = (PC) + 2,

(Rn) = (Rn) -1,

если (Rn) ? 0,

то (PC) = (PC) + rel

Возврат из подпрограммы

RET

(PC8-15) = ((SP)),

(SP) = (SP) - 1,

(PC0-7) = ((SP)),

(SP) = (SP) - 1

Переход, если перенос равен нулю

JNC rel

(PC) = (PC) + 2,

если (C) = 0,

то (PC) = (PC) + rel