КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Программная реализация функций времениМасштабирование
При вводе и выводе информации возникает задача согласования диапазонов представления чисел в МП и в аппаратуре связи контроллера с объектом управления. Эта задача называется масштабированием и сводится к операции умножения числа на некоторую константу К. Масштабирование двоичных кодов, вводимых с цифровых датчиков для последующей обработки в МП или выводимых из МП на станок, можно выполнить с применением стандартных подпрограмм умножения и деления. Тем не менее более эффективным может оказаться способ умножения числа на константу путем сдвига (по быстродействию и требуемому объему памяти программы). Способ основан на том, что сдвиг двоичного кода числа на один бит влево (в сторону старших бит) эквивалентен его умножению на 2, а сдвиг на один бит вправо - делению на 2. Пример. Необходимо двоичный код X, полученный от цифрового датчика, умножить на константу К=2,5. Результат масштабирования числа может быть получен в соответствии с выражением Х х 2,5 = Х х 2 + Х/2, т.е. путем суммирования сдвинутых влево и вправо двоичных кодов числа X.
Пример. Требуется сформированное в аккумуляторе МП УС Y умножить на К=17. Операция умножения заменяется (Y х 17 = Y х 16 + Y) четырьмя операциями сдвига и сложением.
Рассмотренные примеры программ для упрощения составлены в предположении, что при умножении не происходит переполнение одного байта (результат < 255). Рисунок 57 – Схема алгоритма временной задержки Формирование временной задержки малой длительности. Применяется метод программных циклов, при котором в рабочий регистр блока регистров общего назначения загружается число, которое затем в каждом проходе цикла уменьшается на 1. Процедура продолжается до тех пор, пока содержимое рабочего регистра не станет равным О, что интерпретируется программой как момент выхода из программного цикла. Время задержки при этом определяется величиной числа, загруженного в рабочий регистр, и временем выполнения команд, образующих программный цикл. На рисунке 57 представлена БСА такой программы. Программа имеет символическое имя TIME и в случае вызова ее основной УП по команде CALL TIME должна завершаться командой возврата RET. Пример. В программе, управляющей работой контроллера, процессор которого работает с тактовой частотой 2 МГц (период - 500 нс), необходимо реализовать временную задержку 100 мс. Фрагмент программы необходимо оформить в виде подпрограммы, так как предполагается, что основная УП производила к ней многократные обращения для формирования выходных импульсных сигналов, длительность которых кратна величине 100 мс.
Текст программы (рис. 57) будет выглядеть следующим образом:
Для получения требуемой временной задержки определяется величина числа X, загружаемого в рабочий регистр В. Определение Х производится на основе расчета времени выполнения команд, образующих подпрограмму. Необходимо учитывать, что команды MVI В X и RET выполняются однократно, а число повторений команд DCR В и JNZ COUNT равно числу X, загружаемому в регистр В. Обращение к подпрограмме временной задержки осуществляется по команде CALL TIME, время исполнения которой также необходимо учитывать при подсчете временной задержки. В описании команд МП 580ИК80 указывается, за сколько тактов основной частоты синхронизации исполняется каждая команда МП. Имея эти данные, запишем:
Таким образом, однократно исполняемые команды в этой подпрограмме требуют 17 мкс (8,5 + 3,5 + 5,0). Следовательно, для получения требуемой задержки в 100 мкс необходимо выполнять команды DCR В и JNZ COUNT столько раз, чтобы время их исполнения составило 83 мкс (100-17), но время исполнения этой пары команд составляет 7,5 мкс (2,5 + 5,0). Поэтому, если принять, что Х=10, то возможно получение временной задержки 7,5 мкс, а недостающие 8 мкс можно получить четырехкратным использованием команды пустой операции NOP, время исполнения которой равно 2 мкс. На основании вышеизложенного запишем текст подпрограммы TIME:
Формирование временной задержки равно 1 с. Формирование длительных задержек (с, мин и т.д.) при частоте синхронизации МП, равной 2 МГц, с использованием этого процесса невозможно, так как максимальной емкости регистровой пары (FFFFH) не хватает и для 1 с. Сформировать большую задержку можно с использованием метода вложенных циклов так, как представлено на БСА (рис. 58), а текст программы будет иметь следующий вид:
Рисунок 58 – Схема алгоритма временной задержки, равной 1 с Для получения задержки, равной 1 мин, основная УП может 60 раз осуществить вызов подпрограммы ONESEC. Для этого число 60 загружается в регистр, например D, который выполняет функции декрементного счетчика секунд и после каждого прогона подпрограмм ONESEK его содержимое уменьшается на 1. Недостаток длительной задержки в том, что во время подсчета временных интервалов МП не выполняет другой работы и устройство может не отреагировать на быстроменяющиеся процессы в объекте управления.
Дата добавления: 2015-04-29; Просмотров: 366; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |