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

10.3.5 Програмна реалізація генератора імпульсних послідовностей

Вхідний контроль:

  1. Генератор, який синхронізує роботу МПС, видає імпульси на МП з частотою 10 МГц; яка тривалість тактового імпульсу МП?

  2. Як можна реалізувати програмно часову затримку на 10 мкс?

В основу методу створення програмних моделей генераторів імпульсних послідовностей покладено три прийоми:

– використання різних підпрограм часових затримок;

– використання таблиць в ОЗП, які вміщують інформацію про імпульсні послідовності;

– використання алгоритмів обчислення часових логічних функцій.

Вираз для часової логічної функції генератора імпульсної послідовності Y = f(t), деt– дискретний час, показує залежність вихідного сигналу від дискретного реального часу. Обчислення часової логічної функції повинне відбуватися за рівні інтервали часу, інакше синхронізація формованих послідовностей буде порушуватись. На рис. 10.1 показано змодельовану імпульсну послідовність кінцевої довжини, яка виводиться через молодший розряд паралельного портуPORT.

Імпульсна послідовність розбивається на інтервали ∆tта кодується, закодований опис завантажується у пам’ять.

Рисунок 10.1 – Кодування імпульсної послідовності

Наведена нижче підпрограма ІМреалізації імпульсної послідовності працює таким чином: через рівні інтервали часу ∆tнаступний байт опису послідовності виводиться уPORT. Інтервал ∆tвизначається кількістю тактів синхронізації МП, які потрібні для виводу байта у порт (10 тактів = 1 мкс) та кодом часу затримки у підпрограміDELAY. Таким чином ∆t= 1МКС+tDELAY. Підпрограма моделює тільки період імпульсної послідовності, для моделювання довгої серії імпульсів треба організувати цикл звернення до підпрограмиІМ:

IM: MOV BX,A1ABН ; Занесення до ВХ адреси таблиці опису

M2: MOV CL,02H ; Занесення до CL кількості байтів опису

MOV DH,8H ; Занесення до DH кількості бітів у байті

MOV AL,[BX] ; Занесення до АL чергового байта опису

MOV DL,AL ; Запам’ятовування цього байтау DL

M1: AND AL,01H ; Виділення молодшого біта

OUT PORT ; Вивід його у PORT

SHR DL,1 ; Логічний зсув праворуч на 1 розряд

MOV AL,DL ; Запам’ятовування нового значення байта

CALL DELAY ; Затримка сигналу на виході порту

DЕC DH ; Декрементування лічильника бітів

JNZ M1 ; Повернення на початок циклу

INC BX ; Нарощування адреси елемента таблиці

LOOP M2 ; Звернення до наступного елемента таблиці

RET ; Повернення з підпрограми

NOP

10.3.6 Програмне вимірювання періоду імпульсної послідовності det

Період імпульсної послідовності Тпервимірюється підрахуванням кількості відомих малих інтервалів часу Δt, які накопичуються за один період імпульсної послідовності. Імпульсна послідовність показана на рис. 10.1. Частота імпульсів повинна знаходитись у межах 5 Гц ... 167 кГц. ПідпрограмаDETкожні Δt= 3 мкс опитує порт, на молодший розряд якого надходить послідовність імпульсів. Фіксується фронт імпульсу, після чого у лічильникуСХнакопичується кількість дискретних інтервалів часуТІ, протягом яких у порт надходить високий рівень напруги, а у лічильникуВХнакопичується кількість інтервалів часуТП, протягом яких зберігається низький рівень напруги. ЧислаТІ таТП запам’ятовуються відповідно за адресами 20Н та 22Н у сегменті даних, а кількість інтервалів часу за періодТпер=ТІ +ТП запам’ятовується у комірці пам’яті за адресою 24Н у сегменті даних.

В основній програмі після повернення з підпрограми DETможна підрахувати тривалість імпульсуti, тривалість паузиtnта періодТперу секундах

ti = Δt(ТІ) = 3 мкс (ТІ);

tn= Δt(ТП) = 3 мкс (ТП);

Тпер= Δt(ТІ +ТП) = 3 мкс (ТІ +ТП).

Фрагмент програми DETнаведено нижче:

MOV DX,PORT ; Завантаження до DX адреси порту

DET: IN AL,DX ; Фіксація

AND AL,01H ; фронту

JNZ DET ; імпульсу

М1: IN AL,DX

AND AL,01H

JNZ M1

MOV CX,00H ; Скидання лічильника часу (ТІ) імпульса

М2: INС СX ; Вимірювання ТІ

IN AL,DX

AND AL,01H

JNZ M2

MOV [20H],CX ; Занесення ТІ у пам’ять

MOV ВX,00H ; Скидання лічильника часу (ТП) паузи

М3: INС ВX ; Вимірювання ТП

IN AL,DX

AND AL,01H

JNZ M3

MOV [22H],ВX ; Занесення ТП у пам’ять

ADD BX,CX ; Визначення періоду послідовності

; імпульсів (Тпер)

MOV [24H],ВX ; Занесення Тперу пам’ять

RET ; Повернення з підпрограми

Контрольні питання:

  1. Яка підпрограма використовується для формування будь-яких часових послідовностей?

  2. Як за допомогою табличного метода програмно реалізувати генератор імпульсних послідовностей?

  3. Як, використовуючи комп’ютер або МПС, здійснити вимірювання періоду імпульсної послідовності?

Контрольні питання підвищеної складності:

  1. Напишіть програму формування імпульсної послідовності з коефіцієнтом заповнення 0,5.

  2. Виведіть цю імпульсну послідовність через порт RS-232-C.