Лабораторная работа № 4 Вложенные таймеры 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа № 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 Задания по количеству операций в каждом цикле

Наимен.цикла Вариант 1 Вариант 2 Вариант 3
Sch_in      
Sch_out      
Sch3      

 

 

Программа 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 с.)