Лаба№4 МПС Сайынов


Некоммерческое акционерное общество
Алматинский университет энергетики и связи
Кафедра ЭПП
Отчет
По лабораторной работе № 4
На тему: Таймеры
Специальность: 5В071800 – Электроэнергетика
Выполнил Сайынов С. Е. Группа Эсн-11-4
Вариант 1
Проверил:
«____»______________2014г.
Алматы 2014
4 Таймеры
Цель работы: изучение способов создания задержек выполнения следующей инструкции, в соответствии с реализацией управляющего алгоритма. Например, такие задержки нужны в цикле АПВ, в реализации алгоритмов АЧР и т.д.
4.1 Краткие теоретические сведения и задания для внеаудиторной подготовки
Реализацию пауз между следующими друг за другом инструкциями можно осуществить созданием таймеров на основе вложенных циклов и использования периферийных устройств микроконтроллера - таймеров: ТМR0, ТМR1 и ТМR2.
Задания для внеаудиторной подготовки
Изучите работу таймеров ТМR0, ТМR1 и ТМR2 и назначение регистра PCL по [11] и приложению Г, а также инструкции DECF.
4.2 Лабораторная работа № 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 мкс
На основании приведенного примера, подбором числа повторений в каждом цикле, можно рассчитать общее время паузы, созданной таймером. На основании приведенного примера, взяв число повторений в каждом цикле из задания, можно рассчитать общее время паузы, созданной таймером.
4.2.1 Исходные данные и выполнение программы
Соедините разряды PORTC и разъемы сигнальных ламп также, как и в лабораторной работе №2. Запишите программу 4.1, отладьте ее в режиме MPlabSim. В окно наблюдения включите РСН STATUS, TRISC, W, PORTC, PCL, а также РОН Sch_in, Sch_out, Sch3. В пошаговом режиме перед запуском таймера CALLTimer сохраните в вордовском файле состояние окна наблюдения и далее сохраняйте эти окна после завершения каждого цикла. Сравните состояние регистров STATUS, W и PCL перед включением таймера и после выхода из него. Определите разницу в значениях разрядов. Измените в программе значения количества выполняемых циклов в соответствии с вариантами из таблицы 4. Сохраните программу в общей папке на компьютере, к которому подключен УМК-7. На этом компьютере откройте сохраненный текст программы и выполните последовательно пункты по созданию проекта в режиме MPLABICD2 c записью созданного проекта в память программ. Подготовьте секундомер для записи времени задержки. Запустите программу в режиме Run. При загорании лампы в разряде 7 включите секундомер, а при загорании лампы в разряде 0 зафиксируйте время. Запишите время в отчете.
Таблица 4 Задания по количеству операций в каждом цикле
Наимен.цикла Вариант 1 Вариант 2 Вариант 3
Sch_in 255 255 255
Sch_out 255 255 255
Sch3 2 4 6
Программа 4.1
Include<p16F877A.inc>
Sch_inEQU H'22'; счетчик внутреннего цикла задержки.
Sch_outEQU H'23' ; счетчик внешнего цикла задержки.
Sch3EQU H'24' ; счетчик третьего цикла задержки.
ORG h'00'
NOP
NOP
NOP
ORG h'05'
CLRF STATUS
BSF STATUS,5
CLRF TRISC
BCFSTATUS,5
MOVLWB'10000000'
MOVWFPORTC; в режиме Run по загоранию лампы в разряде 7 ;запускаем секундомер для определения времени работы таймера
MOVLW d'2'; задаем количество повторения третьего цикла ;таймера равное 2 только для отладки. Для выполнения на микроконтроллере ;в режиме Run используйте задание по варианту из таблицы 4
; сохранить окно в отладочном режиме
CALLTimer
MOVLWB'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
; сохранить окно в отладочном режиме, когда Sch_in=0
BTFSSSTATUS, Z; если счетчик Sch_in обнулился, пропускаем ;GOTO.
GOTOM_in; срабатывает только при Z=0.
DECF Sch_out, F; уменьшаем значение счетчика Sch_out на 1.
BTFSSSTATUS, Z; если счётчик обнулился, пропускаем GOTO.
GOTOM_out; инструкция срабатывает только при Z=0.
DECF Sch3, F; уменьшаем значение счетчика Sch3 на 1,
BTFSSSTATUS, Z; если оно равно нулю (Z=1), пропускаем GOTO.
GOTO M3; срабатывает только при Z=0.
RETURN; конец подпрограммы Timer.
END; конец текста всей программы.







Контрольные вопросы
1.Что выполняет инструкция GOTO METKA?
goto (от англ. go to — «перейти на») — оператор безусловного перехода (перехода к определённой точке программы, обозначенной номером строки либо меткой) в некоторых языках программирования.
Как правило, оператор goto состоит из двух частей: собственно оператора и метки, указывающей целевую точку перехода в программе: goto метка. Метка, в зависимости от правил языка, может быть либо числом (как, например, в классическом Бейсике), либо идентификатором используемого языка программирования. Для меток-идентификаторов метка, как правило, ставится перед оператором, на который должен осуществляться переход, и отделяется от него двоеточием (метка:).
2. Что такое машинный цикл и как определить время его выполнения?
Микропроцессор выполняет команды по машинным циклам. Число циклов, необходимое для выполнения команды, зависит от ее типа и может быть от одного до пяти. Машинные циклы выполняются по машинным тактам. Число тактов в цикле определяется кодом выполняемой команды и может быть от трех до пяти. Длительность такта равна периоду тактовой частоты и при частоте 2 0 МГц составляет 500 не.

3. Назначение символа «;» в тексте программы?
Коммента́рии — пояснения к исходному тексту программы, находящиеся непосредственно внутри комментируемого кода. Синтаксис комментариев определяется языком программирования. С точки зрениякомпилятора или интерпретатора, комментарии — часть текста программы, не влияющая на её семантику. Комментарии не оказывают никакого влияния на результат компиляции программы или её интерпретацию. Помимо исходных текстов программ, комментарии также применяются в языках разметки и языках описания.
; однострочный комментарий.
4. Как вызывается подпрограмма на выполнение?
Вызов подпрограммы выполняется с помощью команды вызова, включающей в себя имя подпрограммы. В большинстве современных языков программирования команда вызова представляет собой просто имя вызываемой подпрограммы, за которым могут следовать фактические параметры.
5. Поясните инструкцию RETURN
Замыкание (англ. closure) в программировании — функция, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся её параметрами. Говоря другим языком, замыкание — функция, которая ссылается на свободные переменные в своём контексте.
Оператор return завершает выполнение функции, в которой он задан, и возвращает управление в вызывающую функцию, в точку, непосредственно следующую за вызовом.
Значение выражения, если оно задано, возвращается в вызывающую функцию в качестве значения вызываемой функции. Если выражение опущено, то возвращаемое значение не определено. 
Список литературы
Погребинский М.П. Микропроцессорные системы управления электротехническими установками. –М.: МЭИ, 2003.
Информатика. Базовый курс. Учебное пособие для вузов под ред. Симоновича С.В., - СПб.: Питер, 2003.
Сайт в Internet www.microchip.ru.
Катцен С. PIC микроконтроллеры. Все, что необходимо вам знать. –М.: Додека, 2008.
Копесбаева А.А. Микропроцессорные комплексы в системах управления. Учебное пособие. Алматы. АИЭС, 2010.

Приложенные файлы

  • docx 8981987
    Размер файла: 1 016 kB Загрузок: 0

Добавить комментарий