Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа № 4 Вложенные таймеры
В МК PIC16F87x выполнение инструкции осуществляется за четыре такта. В зависимости от времени выполнения одного такта при циклическом исполнении набора инструкций может быть создана временная задержка. В 8-разрядный регистр, в который вносится константа, определяющая число циклов, может быть записано максимально число 255. Если применяются вложенные циклы, то каждый последующий внешний цикл предполагает выполнение внутреннего цикла и, следовательно, существенного увеличения времени работы таймера и создания паузы перед выполнением следующей инструкции в программе. Расчет времени выполнения одного цикла в таймере Если тактовая частота генератора равна 20 МГц, то время выполнения одного такта равно 0,05 мкс. Время выполнения машинного цикла, состоящего из четырех тактов равно 0,2 мкс. Фрагмент одного внутреннего цикла таймера в приведенной ниже программе выполняет команду вычитания за один цикл и команду безусловного перехода за 2 цикла, т.е. в сумме за 3 цикла. Максимально во внутреннем цикле может быть выполнено 255 подциклов (предельное значение десятичного числа, которое может быть введено в 8-ми разрядный регистр). При вычитании 255-й раз условие *(=0) выполняется и происходит выход из цикла, при этом команда DECF выполняется за два цикла. Общее время выполнения внутреннего цикла: 255*3*0,2 + 2*0,2=151,4 мкс При организации одного внешнего цикла в нем выполняется операция вычитания и две операции безусловного перехода, т.е. 3 цикла + внутренний цикл: 3*0,2 + 151,4 = 152 мкс На основании приведенного примера, подбором числа повторений в каждом цикле, можно рассчитать общее время паузы, созданной таймером. На основании приведенного примера, взяв число повторений в каждом цикле из задания, можно рассчитать общее время паузы, созданной таймером.
Исходные данные и выполнение программы Соедините разряды PORTC и разъемы сигнальных ламп также, как и в лабораторной работе №2. Запишите программу 4.1, отладьте ее в режиме MPlabSim. В окно наблюдения включите РСН STATUS, TRISC, W, PORTC, PCL, а также РОН Sch_in, Sch_out, Sch3. В пошаговом режиме перед запуском таймера CALL Timer сохраните в вордовском файле состояние окна наблюдения и далее сохраняйте эти окна после завершения каждого цикла. Сравните состояние регистров STATUS, W и PCL перед включением таймера и после выхода из него. Определите разницу в значениях разрядов. Измените в программе значения количества выполняемых циклов в соответствии с вариантами из таблицы 4. Сохраните программу в общей папке на компьютере, к которому подключен УМК-7. На этом компьютере откройте сохраненный текст программы и выполните последовательно пункты по созданию проекта в режиме MPLAB ICD2 c записью созданного проекта в память программ. Подготовьте секундомер для записи времени задержки. Запустите программу в режиме Run. При загорании лампы в разряде 7 включите секундомер, а при загорании лампы в разряде 0 зафиксируйте время. Запишите время в отчете.
Таблица 4 Задания по количеству операций в каждом цикле
Программа 4.1 Include<p16F877A.inc> Sch_in EQU H'22'; счетчик внутреннего цикла задержки. Sch_out EQU H'23'; счетчик внешнего цикла задержки. Sch3 EQU H'24'; счетчик третьего цикла задержки. ORG h'00' NOP NOP NOP ORG h'05' CLRF STATUS BSF STATUS,5 CLRF TRISC BCF STATUS,5 MOVLW B'10000000' MOVWF PORTC; в режиме Run по загоранию лампы в разряде 7;запускаем секундомер для определения времени работы таймера MOVLW d'2'; задаем количество повторения третьего цикла;таймера равное 2 только для отладки. Для выполнения на микроконтроллере;в режиме Run используйте задание по варианту из таблицы 4 ; сохранить окно в отладочном режиме CALL Timer MOVLW B'00000001' MOVWF PORTC; по загоранию лампы Л-0 на УТК-7 фиксируем;секундомер для определения времени работы таймера в режиме Run ; сохранить окно в отладочном режиме GOTO $; разделитель основной программы и подпрограмм. Timer; подпрограмма Timer. Применено два вложенных цикла. MOVWF Sch3; значение W является аргументом для таймера. ;M3 MOVLW D'2'; для отладки 2, а для варианта-по заданию MOVWF Sch_out; устанавливаем значение внешнего счетчика. ;M_out - метка внешнего счетчика. MOVLW D'2'; для отладки 2, а для варианта-по заданию MOVWF Sch_in; устанавливаем значение внутреннего счетчика. ;M_in - метка внутреннего счетчика. DECF Sch_in,F; уменьшаем значение счетчика Sch_in на 1. Когда;результат будет равен 0, то следующая команда пропускается
; сохранить окно в отладочном режиме, когда Sch_in=0 GOTO M_in; срабатывает только при Z=0. DECF Sch_out,F; уменьшаем значение счетчика Sch_out на 1. ; если счётчик обнулился, пропускаем GOTO. ; сохранить окно в отладочном режиме, когда Sch_out=0 GOTO M_out; инструкция срабатывает только при Z=0. DECF Sch3,F; уменьшаем значение счетчика Sch3 на 1 ; сохранить окно в отладочном режиме, когда Sch3=0 GOTO M3; срабатывает только при Z=0. RETURN; конец подпрограммы Timer. END; конец текста всей программы.
Оформление отчета по лабораторной работе Отчет оформляется на группу. В созданный вордовский файл копируется текст программы и окна по ходу выполнения программы в режиме MPLabSim. Записывается время паузы, созданной таймером при использовании заданных по варианту значений количества повторений в каждом цикле. Определите расчетное значение паузы, исходя из условия, что микроконтроллер в УМК-7 имеет тактовую частоту 20 МГц.
Выводы 4.4.1 Применение встроенных таймеров позволяет создать в 8-разрядных микроконтроллерах необходимые расчетные временные задержки. 4.4.2 В программе может быть создано несколько подпрограмм с разными временными задержками.
4.5 Контрольные вопросы 1.Что выполняет инструкция GOTO METKA? 2. Назначение символа «;» в тексте программы? 3. Какое напряжение питания МК? 4.Какое напряжение в PORTC? 5. Поясните инструкцию условного перехода BTFSC STATUS, Z 6. Поясните инструкцию условного перехода BTFSS STATUS, Z 7. Поясните инструкцию DECF Sch_out,F 8. Поясните инструкцию INCF R,f 9.Поясните инструкцию GOTO$ 10. Поясните инструкцию RETURN 11. Что такое машинный цикл и как определить время его выполнения? 12.Сколько машинных циклов требуется для выполнения команд в подпрограмме Timer в отладочном режиме при задании всем счетчикам значения 3? 13.Как вызывается подпрограмма на выполнение? 14.Какой адрес появляется в счетчике команд в регистре PCL после выполнения подпрограммы?
|
||||||||||||||||||||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 146; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.6.194 (0.008 с.) |