Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПТ_L_к.doc
Скачиваний:
13
Добавлен:
27.08.2019
Размер:
20.33 Mб
Скачать

8.3. Функції часової витримки

Функції часової витримки або генерації часових інтервалів, необхідні при організації взаємодії МП з периферійними пристроями. Тактова частота МП завжди відома точно та разом з числом тактів , які необхідно на виконання команд в МП, може використовуватись для організації часової затримки. При цьому використовують 2 способи.

Для малих затримок може використовуватись команда пустої операції (NOP;), виконання якої займає фіксовану кількість тактів без виконання перетворення інформації. Наприклад, в МП К580 з тактовою частотою 2 МГц така команда виконується за 4 такти, тобто, за 2 мкс ( час виконання одного такту = 0,5 мкс). Послідовний запис у програмі декількох таких команд дозволяє дістати більший час витримки, але він буде обов’язково кратним часу виконання одної команди.

Другий спосіб організації програмної затримки в часі будується на

організації циклів виконання одної ділянки програми, число повторень якої і відповідно витримка в часі залежать від константи, що завчасно була занесена в лічильник. Наприклад:

MOV A, 40; 7 тактів, безпосередня загрузка акумулятора

TAJM: INX A ; 5 тактів, віднімання 1 від числа в акумуляторі

CZ BEG1 ; умовний перехід по нульовому результату та перехід

JMP TAJM; на початок, займають 10 тактів

Таким чином після виконання цієї послідовності команд дістаємо затримку в тактах 7 + 40 ( 5 + 10) = 607 тактів, та множимо на час одного такту (0,5 мкс) і отримуємо витримку 3,5 + 40 * 7,5 = 303,5 мкс.

Якщо витримка в часі потрібна рівно 300 мкс, то можна використати команди NOP (пуста операція) і програма буде мати вигляд:

MOV A, 39; 7 тактів, безпосередня загрузла акумулятора

TAJM: INX A ; 5 тактів, віднімання 1 від числа в акумуляторі

CZ BEG1 ; умовний перехід по нульовому результату та перехід

JMP TAJM; на початок, займають 10 тактів

BEG1 : NOP ; пуста операція

NOP ; пуста операція

…….. ; продовження програми.

Зальний час витримки = 3,5 + 39 * 7,5 + 2*2 = 300 мкс.

При організації витримки в часі в процесорі КР1816ВЕ51необхідно використовувати таймери/лічильники Т/С0 або Т/С1. Наприклад, підпрограма виконання витримки на 50 мс з похибкою не більше 2 мкс.

ZATRUM MOV TMOD, #0001H; налаштування лічильника Т/С0

MOV TH0, #HIGH (NOT (50000-16));

MOV TL0, #LOW (NOT (50000-16));

SETB TCON.4; старт лічильника Т/С0

VUTR JMB TCON.5, VUTR; чекання

ANL TCON, #NOT (30H); стоп та скид Т/С0

RET; повернення.

8.4. Функції вимірювання часових інтервалів

В задачах керування часто виникає необхідність вимірювання проміжку часу між двома подіями. Загалом такі події надаються дискретними сигналами від відповідних ПВП. Рахуючи подіями фронт та спад імпульсу, можна визначити такі часові характеристики імпульсних сигналів як протяжніть, період та скважність, швидкість переміщення об’єкту, що рухається, при наявності кінцевих вимикачів початку та кінця події.

Простішим способом вимірювання протяжності імпульсу є програмний.

Наприклад, вимірюваний імпульс подається в порт 3 біт 2 МК51:

; версія для КР1818ВЕ51

MOV TMOD, #0001H; налаштування лічильника Т/С0

MOV ТН0, #0; скид таймера

MOV ТL0, #0;

SETB TCON.4; старт лічильника Т/С0

WAIT0: JNB P3.2, WAIT0; очікування переходу із 0 в 1

WAIT1: JB P3.2, WAIT1; очікування переходу із 1 в 0

CLR TCON.4; стоп лічильника Т/С0

EXIT: …… ; вихід із процедури