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



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа № 5 Таймер TMR1

Поиск

Краткие теоретические сведения

Таймер TMR1 входит в состав периферийных устройств микрокон-троллера PIC16F877A. TMR1 - 16-разрядный таймер/счетчик, состоящий из двух 8-разрядных регистров (TMR1H и TMR1L), доступных для чтения и записи. Счет выполняется в спаренных регистрах (TMR1H:TMR1L), инкрементируется их значение от 0000h до FFFFh. Если перед включением TMR1 в эти регистры будут записаны некоторые числа, то после включения TMR1 единица добавляется вначале к значению, записанному в регистр TMR1L. Включается TMR1 установкой бита TMR1ON в ‘1’ (регистр T1CON<0>).

При переполнении регистров они будут снова равны 0000h. При переполнении счетчика устанавливается в '1' бит флага прерывания TMR1IF в регистре PIR1<0> вне зависимости от состояния бита разрешения/запрещения прерываний. Флаг прерывания снимается в программе обработки прерывания или по ходу выполнения программы.

Запрет прерывания, (при котором не будет вызвана программа обработки прерывания, название которой указывается в адресе 04h) может быть выполнен:

- установкой бита глобального запрещения/разрешения прерываний

GIE=0 (регистр INTCON<7>);

- установкой бита запрещения/разрешения прерываний от периферий-

ных устройств PEIE=0 (регистр INTCON<6>);

- установкой бита запрещения/разрешения периферийных прерываний

TMR1IE=0 (регистр РIЕ1<0>).

Если прерывания будут разрешены (соответствующие биты равны 1), то после переполнения счетчика запустится подпрограмма обработки этого прерывания, название которой записывается в память программ по адресу 04h.

(разумеется, можно в подпрограмме обработки прерывания, анализируя флаги прерывания, выявить причину появления прерывания и правильно определить реакцию программы на это прерывание).

TMR1 может работать в режимах: режим таймера, режим счетчика. В лабораторных работах рассмотрен только режим тайме ра.

Управляющие биты TMR1 находятся в регистре T1CON.

Если бит TMR1CS=0 (регистр T1CON<1>), то выбирается внутренний источник тактовых импульсов Fosc/4. TMR1 инкрементируется при каждом машинном цикле, т.е. вначале регистр TMR1L, а затем TMR1H, при переполнении которого появляется прерывание, а бит TMR1IF в регистре PIR1<0> становится равным 1 (появляется «флаг»).

Регистры TMR1H и TMR1L не сбрасываются в 00h при сбросе по включению питания и других видах сброса, кроме сброса по сигналу триггера специальных событий модуля ССР1 и ССР2.

Предделитель TMR1 предназначается для замедления заполнения счетчика в соответствии со своей настройкой. Коэффициент деления предделителя (биты 5-4 в регистре T1CON<5:4>) принимает следующие значения:

11 = 1:8

10 = 1:4

01 = 1:2

00 = 1:1

Предделитель очищается при записи чисел в регистр TMR1L или TMR1H.

 

Исходные данные и выполнение программы

Соедините разряды PORTC и разъемы сигнальных ламп также, как и в лабораторной работе №2. Запишите программу 4.2. Для отладки ее в режиме MPlabSim в целях сокращения циклов заполнения регистров TMR1N и TMR1L и появления флага их переполнения в регистре PIR1(бит TMR1IF) уберите точку с запятой перед строками, в которых вносятся в аккумулятор и затем в регистры TMR1H и TMR1L временные числа. Точки с запятой перед строками, где вносятся изменения в настройки предделителя, не убирайте. В окно наблюдения включите РСН STATUS, W, PORTC, PCL, TMR1H, TMR1L, T1CON, PIR1, PIE1 и INTCON. В пошаговом режиме сохраните в вордовском файле состояние окна наблюдения перед запуском Timer1 и после окончания работы. Сравните состояние регистров STATUS, W и PCL перед включением таймера и после выхода из него. Определите разницу в значениях разрядов. Восстановите в программе точки с запятой в строках, где вносились в регистры TMR1H и TMR1L временные числа. Снимите со строк изменения предделителя точки с запятой и внесите значение числа П из задания. Сохраните программу в общей папке на компьютере, к которому подключен УМК-7. На этом компьютере откройте сохраненный текст программы и выполните последовательно пункты по созданию проекта в режиме MPLAB ICD2 c записью созданного проекта в память программ. Подготовьте секундомер для записи времени задержки. Запустите программу в режиме Run. При загорании всех лампы в разряде 7 включите секундомер, а при загорании всех ламп зафиксируйте время. Запишите время в отчете.

 

Таблица 5 Задания по изменению времени работы TMR1

Установка предделителя Вариант 1 Вариант 2 Вариант 3
     

 

 

Программа 4.2

Include<p16F877A.inc>

ORG h'00'

NOP

NOP

NOP

ORG h'05'

CLRF STATUS

BSF STATUS,5

CLRF TRISC

CLRF PIE1;запрещаем периферийные прерывания

BCF STATUS,5

CLRF T1CON; установка TMR1 в режим ожидания

;тактирование TMR1от внутреннего генератора, значение

;предделителя частоты 1:1

CLRF TMR1H; очищаем старший регистр-счетчик TMR1

CLRF TMR1L; очищаем младший регистр-счетчик TMR1

CLRF INTCON; запрещаем прерывания от TMR1

MOVLW b'00010000'

MOVWF T1CON;устанавливаем предделитель частоты 1:2

;MOVLW b'П';устанавливаем предделитель частоты по заданию

;MOVWF T1CON

MOVLW B'10000000'

MOVWF PORTC;включаем секундомер

CALL Timer1

MOVLW B'11111111'

MOVWF PORTC; засекаем время работы таймера

GOTO $; разделитель основной программы и подпрограмм.

Timer1

MOVLW D'255'; для отладки TMR1, при добавлении 1 регистр;переполнится, появится флаг прерывания, оба регистра обнулятся

MOVWF TMR1H;для отладки TMR1

MOVLW D'254';для отладки TMR1

MOVWF TMR1L;для отладки TMR1

BCF PIR1,TMR1IF; сброс флага переполнения таймера

BSF T1CON,TMR1ON; пуск таймера TMR1

;следующие три строки это циклы работы таймера TMR1

M_TRM1;

BTFSS PIR1,TMR1IF; проверка флага переполнения таймера

GOTO M_TRM1; если флага нет,то цикл TMR1 продолжается

BCF T1CON,TMR1ON; останов таймера TMR1

RETURN; конец подпрограммы Timer.

END; конец текста всей программы.

 

Оформление отчета по лабораторной работе

Отчет оформляется на группу. В созданный вордовский файл копируется текст программы и окна по ходу выполнения программы в режиме MPLabSim. Записывается время паузы, созданной таймером при использовании заданных по варианту значений предделителя.

4.9 Контрольные вопросы

1. Что будет, если в подпрограмме не остановить работу TMR1?

2. Как влияет установка предделителя на общее время работы таймера?

3. Как изменяется значение в регистре PCL при входе в подпрограмму Timer1 и при выходе из нее?

4. Где сохраняется значение счетчика регистра, позволяющее при завершении подпрограммы вернутся к выполнению следующей инструкции?

 

 



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 756; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.3.204 (0.007 с.)