Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа № 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
Программа 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 с.) |