- •Алматы 2011
- •1 Лабораторная работа №1. Байтовые и битовые команды. Логика
- •2 Лабораторная работа № 2.Маскирование. Суммирование массива
- •3 Лабораторная работа №3. Подпрограммы
- •4 Лабораторная работа №4. Умножение на дробное число
- •5 Лабораторная работа №5. Регулирование расхода газа
- •6. Лабораторная работа №6. Программирование клавиатуры
- •Фрагменты программы.
- •8 Лабораторная работа №8. Перевод чисел из 2-й в 2_10 систему.
- •9 Лабораторная работа №9. Таймер tmr1
- •10 Лабораторная работа №10. Прерывания
- •11 Лабораторная работа №11. Сложение двухбайтных чисел
- •Конец алгоритма
- •Конец алгоритма
- •Приложение а Регистр Status
- •Приложение б Описание инструкций мк pic
- •Приложение в Модуль таймера tmr1
- •Приложение г Карта памяти мк pic16877
- •Список литературы
- •0 50013, Алматы, Байтурсынова, 1
9 Лабораторная работа №9. Таймер tmr1
Цель работы. Научиться применять встроенный таймер TRM1 и регистры специального назначения, связанные с его настройкой.
Ознакомьтесь с регистрами специального назначения PIR1, TICON, INTCON, TMR1, TMR1H, TMR1L по приложению В.
Задание на проектирование. Создать программу, применяющую таймер TMR1,для автоматической окрасочной камеры, описанной в лабораторной работе «Подпрограммы». Дополнительно следует пересчитывать детали
Временная диаграмма работы камеры показана на рисунке 3.3.
Проработайте блок-схему алгоритма автоматизации работы окрасочной камеры по рисункам 9.1 и 9.2. Ознакомьтесь с фрагментом программы. На его основании создайте программу для заданного варианта.
Фрагменты программы. Курсивом отмечены дополнительные команды по сравнению с лабораторной работой «Подпрограммы».
Include<p16F877.inc>; подключаем библиотеку символов.
T_reg EQU h'20'; регистр, определяющий время задержки.
Kol_det EQU h'21'; регистр, хранящий количество окрашенных деталей.
; настройка МК опущена. Ниже настройка TMR1.
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'00110000'; тактирование от внутреннего генератора
MOVWF T1CON; устанавливаем предделитель частоты =1:8.
Рабочая часть программы совпадает с программой лабораторной работы «Подпрограммы».
Подпрограмма Timerзаменяется подпрограммойTimer2.
GOTO$
Timer2; подпрограмма с TMR1.
MOVWF T_reg
; Return; для выключения при отладке главной программы.
M_T_reg; следующие 4 команды только для отладки в режиме F7.
;MOVLW D'255'; для отладки Timer2.
;MOVWF TMR1H; для отладки Timer2.
;MOVLW D'254'; для отладки Timer2.
;MOVWF TMR1L; для отладки Timer2.
BCF PIR1, TMR1IF; сброс флага переполнения таймера в каждом цикле.
BSFT1CON,TMR1ON; запуск таймераTMR1.
; следующие три строки это циклы работы таймера TRM1
M_ TRM1; метка
BTFSS PIR1, TMR1IF; проверка флага переполнения таймера
GOTO M_ TRM1; если флага нет, то цикл TRM1 продолжается.
DECFSZ T_reg, F; уменьшаем число в регистре и проверяем на ноль.
GOTO M_T_reg; (только при Z=0) время не кончилось, повторяем цикл.
RETURN
END
Разработайте программу, включающую и выключающую оборудование на заданное время для окрашивания трех деталей, согласно варианту задания из таблицы 9.1.
Т а б л и ц а 9.1 – Варианты заданий
Вариант |
Биты подключения S1, D1, D2 L1, L2. |
Время работы, сек |
Вариант |
Биты подключения S1, D1, D2 L1, L2. |
Время работы, сек | ||||
S1 |
D1 |
D2 |
S1 |
D1 |
D2 | ||||
1 |
1, 2, 3, 4, 5 |
5 |
6 |
3 |
6 |
6, 7, 0, 1, 2 |
6 |
6 |
4 |
2 |
2, 3, 4, 5, 6 |
6 |
7 |
4 |
7 |
7, 0, 1, 2, 3 |
7 |
7 |
5 |
3 |
3, 4, 5, 6, 7 |
7 |
6 |
5 |
8 |
0 ,1 ,2 ,3, 4 |
8 |
6 |
6 |
4 |
4, 5, 6, 7, 0 |
8 |
5 |
6 |
9 |
1, 3, 5, 7, 0 |
9 |
5 |
7 |
5 |
5, 6, 7, 0, 1 |
9 |
7 |
7 |
10 |
2, 4, 6, 0, 1 |
10 |
6 |
3 |
Результаты занесите в таблицу 9.2.
Т а б л и ц а 9.2– Результаты настройки циклов задержки
|
Вариант |
Оборудование |
Параметры подпрограммы Timer2 |
| ||||
---|---|---|---|---|---|---|---|---|
|
Время, сек |
Значение счетчиков |
| |||||
|
T_reg |
TMR1H |
TMR1L |
| ||||
|
|
S1 |
|
|
|
|
| |
|
|
D1, D2, L1 |
|
|
|
|
| |
|
|
D2, L1 |
|
|
|
|
| |
Отладка программы.Оставьте только первый вызов подпрограммыTimer2, установив аргументW=2. Установите значения для счетчиков приведенные в подпрограмме с пометкой для отладки. (СчетчикиTMR1 срабатывают не на каждое нажатие кнопки F7, из-за отсутствия синхронизации). После отладки программы в пошаговом режиме, выключите указанные строки и запустите ее в автоматическом режиме. Настройте заданное время работы установки. | ||||||||
Рисунок 9.1 – Окно наблюдения |
Контрольные вопросы.
Назначение таймера TMR1.
Сколько счетчиков у TMR1?
Как устанавливается максимальное время TRM1?
Какое максимальное число можно записать в счетчики TMR1.
Назначение регистра TICON.
Назначение регистра INTCON.
Назначение регистра PIR1.
Назначение регистра PIE1.
Как задается длительность работы Timer2?
Назначение предделителя.
В каком банке находится регистр PIE1?
Когда появляется флаг, сигнализирующий, что TMR1 переполнен?
Как запускается TMR1?
Назначение регистра T_reg.
Какой будет результат сложения в регистре 255+1?
Рисунок 9.1 - Блок-схема программы Рисунок 9.2 - Блок-схема п/п Timer2