Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
knigaEMTmikroprotsesori.doc
Скачиваний:
16
Добавлен:
10.03.2016
Размер:
1.33 Mб
Скачать

Лабораторна робота № 23 Створення затримки часу за допомогою переривань від таймера

Мета роботи: засвоїти метод створення затримок часу з використанням таймера TMR0

ТЕОРЕТИЧНІ ВІДОМОСТІ

У мікроконтролерах PIC16хххх на кристалі кремнію, крім ядра мікропроцесора, передбачено розташування різних допоміжних модулів. Їх використання значно спрощує програмування, підвищує продуктивність роботи, скорочує розмір програм. До таких модулів відносяться таймери, що дозволяють отримувати затримки часу або підраховувати зовнішні події, сигнал про які надходить на вхід контролера.

Контролер PIC16F628 має 3 модулі таймерів: восьмирозрядний таймер/лічильник TMR0, шістнадцятирозрядний таймер TMR1 та восьмирозрядний таймер TMR2. Вони можуть використовуватись як окремо, так і для забезпечення роботи інших модулів, наприклад, модуля ССР (захвату/порівняння/широтно-імпульсної модуляції).

Створення затримок часу за рахунок багаторазового виконання вкладених циклів (див. лабораторну роботу № 3), завантажує процесор пустими операціями, тоді як часто в цей час необхідно реалізовувати важливі операції, передбачені алгоритмом контролю, управління та ін.

Значно ефективніше використовувати для затримок таймери. Тоді процесор виконує декілька команд, які програмують таймер на задану затримку. Далі робота таймера і процесора протікає паралельно. Процесор виконує передбачені алгоритмом команди, а таймер одночасно з цим відраховує задану затримку. Після її завершення (переповнення таймера з h'FF' до h'00') автоматично встановлюється в "1" прапорець T0IF, який може бути перевірений програмно. А встановивши попередньо "1" в біті дозволу переривання T0IE, можна після відрахованої таймером затримки автоматично перейти до підпрограми обробки переривання. Функціональну схему таймера подано на рис. 23.1, а регістри, пов'язані з його роботою, у табл. 23.1.

23.1. Регістри, пов'язані з роботою таймера TMR0

Адреса

Назва

Біт 7

Біт 6

Біт 5

Біт 4

Біт 3

Біт 2

Біт 1

Біт 0

0x81

OPTION_REG

RBPU

INTEDG

T0CS

T0SE

PSA

PS2

PS1

PS0

0x0B

INTCON

GIE

PEIE

T0IE

INTE

RBIE

T0IF

INTF

RBIF

Переддільник може бути під'єднаний до TMR0, якщо встановити PSA = 0, або до сторожового таймера WDT (PSA = 1). Коефіцієнт ділення переддільника задається бітами PS2…PS0 (табл. 23.2).

Коли біт T0CS = 0, TMR0 працює від внутрішнього тактового генератора, збільшуючи свій вміст на одиницю після кожних Кп машинних циклів.

Якщо біт T0CS = 1, джерелом імпульсів стає пристрій, підключений ззовні до входу мікроконтролера RA4. Активний фронт цього сигналу визначає біт T0SЕ.

23.2. Варіанти задання коефіцієнтів ділення переддільника

PS2

0

0

0

0

1

1

1

1

PS1

0

0

1

1

0

0

1

1

PS0

0

1

0

1

0

1

0

1

Коефіцієнт ділення переддільника Kп

PSA=0

TMR0

2

4

8

16

32

64

128

256

PSA=1

WDT

1

2

4

8

16

32

64

128

Використання переддільника дозволяє значно розширити діапазон можливих затримок таймера TMR0.

Алгоритм програми (рис. 23.2) передбачає підключення переддільника до таймера TMR0 з коефіцієнтом ділення частоти Кп = 256. Таймер починає рахунок з числа N = 10·Br, де Br – номер бригади. Оскільки при частоті генератора 4 МГц машинний цикл триває 1 мкс, переповнення таймера настає через

ТTMR0 = Кп  (256 – N) мкс = 256  (256 – 10·Br) мкс. (23.1)

Зовнішній лічильник COUNT після кожного переривання зменшується на одиницю. Коли після трьох переривань він дораховує до нуля, відновлюється його початкове значення і за допомогою команди зсуву засвічується наступний світлодіод. Це відбувається через Тп = 3  ТTMR0 . (23.2)

ПОРЯДОК ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ

  1. У середовищі MPLAB створити у папці 1Work новий проект з іменем 23ГБ (Г – номер групи, Б – номер бригади), обравши в меню Project-New Project.

  2. У вікні Edit Project додати новий файл на асемблері 23ГБ.asm (Add Node – додати вузол). Після повернення до вікна Edit Project нижче hex-файла з'явиться файл з розширенням .asm. Після появи вікна середовища MPLAB IDE створити цей текстовий файл з розширенням .asm (File – New), записавши його у папку 1Work (File - Save As …).

  3. Зарисувати алгоритм і ввести текст програми на асемблері.

  4. Записати програму на диск (File – Save).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]