Главная » Все файлы » Просмотр файлов из архивов » Документы » Реализация функции времени

Реализация функции времени (Реализация функций времени)

2018-01-12СтудИзба

Описание файла

Файл "Реализация функции времени" внутри архива находится в папке "Реализация функций времени". Документ из архива "Реализация функций времени", который расположен в категории "". Всё это находится в предмете "цифровые устройства и микропроцессоры (цуимп)" из 8 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "цифровые устройства и микропроцессоры" в общих файлах.

Онлайн просмотр документа "Реализация функции времени"

Текст из документа "Реализация функции времени"

Реализация функций времени:





  • 1. Программное формирование временной задержки





  • 2. Формирование временной задержки на основе таймеров





  • 3. Измерение временных интервалов





























1. Программное формирование временной задержки

Временная задержка малой длительности. Процедура реализации временной задержки использует метод программных циклов. При этом в некоторый рабочий регистр загружается число, которое затем в каждом проходе цикла уменьшается на 1. Так продолжается до тех пор, пока содержимое рабочего регистра не станет равным нулю, что интерпретируется программой как момент выхода из цикла. Время задержки при этом определяется числом, загруженным в рабочий регистр, и временем выполнения команд, образующих программный цикл. Схема алгоритма такой программы показана на рис. 6.8. Программа имеет символическое имя DELAY.      

   

 

Предположим, что в управляющей программе необходимо реализовать временную задержку 100 мкс. Фрагмент программы, реализующей временную задержку, требуется оформить в виде подпрограммы, так как предполагается, что основная управляющая программа будет производить к ней многократные обращения для формирования выходных импульсных сигналов, длительность которых кратна 100 мкс:

версия для МК48

DELAY: MOV R2, #X   ;(R2) <--- X

COUNT: DJNZ R2, COUNT ;декремент R2 и цикл,если не нуль

       RET         ;возврат

 

Для получения требуемой временной задержки необходимо определить число Х, загружаемое в рабочий регистр. Определение числа Х выполняется на основе расчета времени выполнения команд, образующих данную подпрограмму. При этом необходимо учитывать, что команды MOV и RET выполняются однократно, а число повторений команды DJNZ равно числу Х. Кроме того, обращение к подпрограмме временной задержки осуществляется по команде CALL DELAY, время исполнения которой также необходимо учитывать при подсчете временной задержки. В описании команд МК указывается, за сколько машинных циклов (МЦ) исполняется каждая команда. На основании этих данных определяется суммарное число машинных циклов в подпрограмме: CALL-2МЦ, MOV-2МЦ, DJNZ-2МЦ, RET-2МЦ.

При тактовой частоте 6 МГц каждый машинный цикл выполняется за 2,5 мкс. Таким образом, подпрограмма выполняется за время 5+5+5Х+5=15+5Х мкс. Для реализации временной задержки 100 мкс число Х =(100-15)/5=17.

В данном случае при загрузке в регистр R2 числа 17 требуемая временная задержка (100 мкс) реализуется точно. Если число Х получается дробным, то временную задержку можно реализовать лишь приблизительно. Для более точной подстройки в подпрограмму могут быть включены команды NOP, время выполнения каждой из которых равно 2,5 мкс.

Минимальная временная задержка, реализуемая подпрограммой DELAY, составляет 20 мкс (Х=1).Временную задержку меньшей длительности программным путем можно реализовать, включая в программу цепочки команд NOP.

Максимальная длительность задержки, реализуемая подпрограммой DELAY, составляет 1,29 мс (Х=255).

Для реализации задержки большей длительности можно рекомендовать увеличить тело цикла включением дополнительных команд или использовать метод вложенных циклов. Так, например, если в подпрограмму DELAY перед командой DJNZ вставить дополнительно две команды NOP, то максимальная задержка составит 15+Х(5+5)=15+10*255=2565 мкс (т.е. почти в 2 раза больше).

 

Временная задержка большой длительности. Схема алгоритма программной реализации временной задержки большой длительности методом вложенных циклов показана на рис.6.9. Там же обозначено, сколько раз выполняется каждый фрагмент программы. Числа Х и Y выбираются из соотношения Т=5+5+Х(5+5Y+5)+5, где Т - реализуемый временной интервал в микросекундах. Максимальный временной интервал, реализуемый таким способом, при Х=Y=255 составляет 327,69 мс, т.е. приблизительно 0,3 с.

 

 В качестве примера рассмотрим подпрограмму, реализующую временную задержку 100 мс:

версия для МК48

DELAY : MOV R1, #84      ;загрузка Х

LOOPEX: MOV R2, #236    ;загрузка Y

LOOPIN: DJNZ R2, LOOPIN ;декркмент R2 и внутренний цикл,

                         ;если (R2) не равно нулю

        DJNZ R1, LOOPEX ;декремент R1 и внешний цикл,

                        ;если (R1) не равно нулю

       MOV R3, #4      ;точная подстройка

LOOPAD: DJNZ R3, LOOPAD ;временной задержки

        RET

 

Здесь два вложенных цикла реализуют временную задержку длительностью 15+84(10+5*236)= 99 975 мкс, а дополнительный цикл LOOPAD реализует задержку 25 мкс и тем самым обеспечивает точную подстройку временного интервала.

 

Временная задержка длительностью 1с. Из рассмотренного примера видно, что секунда является очень большим интервалом времени по сравнению с частотой тактирования МК. Такие задержки сложно реализовать методом вложенных циклов, поэтому их обычно набирают из точно настроенных задержек меньшей длительности. Например, задержку в 1 с можно реализовать десятикратным вызовом подпрограммы, реализующей задержку 100 мс:

ONESEC: MOV R3, #10    ;загрузка в R3 числа

                     ;вызовов подпрограммы DELAY

LOOP: CALL DELAY    ;задержка 100 мс

        DJNZ R3, LOOP ;декремент R3 и цикл,если R3

                      ;не равно нулю

 

Погрешность подпрограммы составляет 55 мкс. Для очень многих применений это достаточно высокая точность, хотя реализованные на основе этой программы часы астрономического времени за сутки "убегут" примерно на 5 с. 

 

























2. Формирование временной задержки на основе таймеров

Задержка малой длительности. Недостатком программного способа реализации временной задержки является нерациональное использование ресурсов МК: во время формирования задержки МК практически простаивает, так как не может решать никаких задач управления объектом. В то же время аппаратурные средства МК позволяют реализовать временные задержки на фоне основной программы работы.

При использовании таймера в МК48 можно получить временные задержки длительностью от 80 мкс до 20 мс.

Например, для реализации временной задержки 240 мкс необходимо выполнить следующие действия:

    MOV A, #NOT(240/80-1) ;загрузка таймера

   MOV T, A

    STRT T               ;запуск таймера

    EN TCNTI             ;разрешение прерывания

 

Появление сигнала прерывания от таймера соответствует истечению временного интервала 240 мкс. Погрешность будет составлять 7,5 мкс (время выполнения команды передачи управления по вектору прерывания и команды STOP TCNT) .

В МК51 на вход таймера/счетчика (Т/С) могут поступать сигналы синхронизации с частотой 1 МГц (Т/С в режиме таймера) или сигналы от внешнего источника (Т/С в режиме счетчика) . Оба эти режима могут быть использованы для формирования задержек. Если использовать Т/С в режиме таймера полного формата (16 бит) , то можно получить задержки в диапазоне 1 - 65536 мкс.

В качестве примера рассмотрим организацию временной задержки длительностью 50 мс в МК51. Предполагается, что бит IE.7 установлен.

;организация перехода к метке NEXT при переполнении Т/С0

       ORG 0BH ;адрес вектора прерывания от Т/С0

       CLR TCON.4                 ;останов Т/С0

       RETI                       ;выход из подпрограммы

;обработки прерывания

       ORG 100H                   ;начальный адрес программы

       MOV TMOD, #01H             ;настройка Т/С0

       MOV TLO, #LOW(NOT(5000-1)) ;загрузка таймера

      MOV THO, #HIGH(NOT(5000-1))

       SETB TCON.4                ;старт Т/С0

       SETB IE.1                  ;разрешение прерывания от Т/С0

       SETB PCON.0                ;переход МК51 в режим холостого хода

NEXT: ...

 





























3. Измерение временных интервалов

В задачах управления часто возникает необходимость измерения промежутка времени между двумя событиями. Схема алгоритма типовой процедуры измерения (MEASURE) приведена на рис.6.10. Обычно события в объекте управления представляются сигналами от двоичных датчиков. Считая событиями фронт и спад импульса, можно определять временные характеристики импульсных сигналов: длительность, период и скважность. Кроме того, с помощью процедуры MEASURE можно определять скорость перемещения подвижного органа объекта по эталонному (заданной длины) участку. Начало и конец участка должны быть снабжены датчиками (концевыми выключателями).

Простейшим способом измерения длительности импульса является программный. Для обнаружения событий (фронт и спад импульсного сигнала) в этом случае используются типовые процедуры WAIT, а отсчет времени ведется программным способом. Для "положительного" импульсного сигнала, поступающего на вход Т0, программа измерения его длительности будет иметь вид:

;версия для МК48

MSCONT: MOV R7, #0  ;сброс счетчика

WAITO: JNT0 WAITO ;ожидание фронта сигнала

COUNT: INC R7      ;инкремент счетчика

        JT0 COUNT  ;ожидание спада сигнала

EXIT: ...         ;выход из процедуры

 

После выхода из процедуры содержимое счетчика (R7) пропорционально длительности импульса.

Для нормальной работы этой программы необходимо, чтобы обращение к ней производилось в моменты, когда на входе Т0 присутствует сигнал нулевого уровня. Верхний предел измеряемой длительности "положительного" импульса составит 255*(1+2)*2,5 мкс=8,925 мс. Этот предел может быть увеличен включением в цикл COUNT дополнительных команд NOP. Максимальная погрешность измерений 7,5 мкс.

Для измерения длительности сигнала может быть использован таймер. Особенно эффективно использование для этой цели таймера в МК51, имеющего вход разрешения счета (альтернативная функция входа ¬ЗПР). Измеряемый сигнал можно, например, подавать на вход ¬ЗПР0 измерение длительности при этом будет выполняться в Т/С0. Программа измерения длительности "положительного" импульса будет выглядеть так:

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее