Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Антонов О.С., Хiхловська I.В. Обчислювальна тех...doc
Скачиваний:
15
Добавлен:
01.09.2019
Размер:
4.12 Mб
Скачать

10.3.3 Фрагмент програми приймання даних через асинхронний адаптер rs-232-c

MOV DX,3FDH ; Завантаження адреси порту стану лінії

M2: IN AL,DX ; Введення слова стану лінії

AND AL,01H ; Перевірка наявності даних в лінії (D0=1?)

JZ M2 ; у циклі

MOV DX,3F8H ; Завантаження адреси порту приймання даних 3F8H у ; DX

M5: IN AL,DX ; Введення даних

NOP

10.3.4 Приклад програми ініціалізації rs-232-c та введення-виведення даних, написаної у програмному середовищі turbo assembler (tasm)

; Програма ініціалізації послідовного адаптера та введення/виведення

; даних TITLE RS232.ASM

MODEL SMALL

STACK 256

DATA SEGMENT

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, ES:DATA

START: MOV AX,DATA ; Суміщення

MOV DS,AX ; сегментів

MOV ES,AX ; даних

MOV DX,3FBH ; Завдання

MOV AL,80H ;

OUT DX,AL ; подільника

MOV DX,3F8H ;

MOV AL,60H ;

OUT DX,AL ; частоти

MOV DX,3F9H ;

MOV AL,00H ; генератора

OUT DX,AL ;

; Завдання нового режиму адаптера

CONTR: MOV AL,1EН ; Завантаження

MOV DX,3FBH ; керувального

OUT DX,AL ; слова (1ЕН)

INTER: MOV AL,00H ; Заборона

MOV DX,3F9H ; переривань

OUT DX,AL ; від RS-232-C

; Передавання даних

STATUS: MOV DX,3FDH ; Перевірка

IN AL,DX ; стану

AND AL,20H ; буфера передавання

JZ STATUS ; у циклі

SEND: MOV AL,41H ; Передавання

MOV DX,3F8H ; даного

OUT DX,AL ; 41H

; Приймання даних

MOV DX,3FDH ; Перевірка

READY: IN AL,DX ; наявності

AND AL,01H ; даних в лінії

JZ READY ; у циклі

MOV DX,3F8H ; приймання

IN AL,DX ; даного

JMP STATUS ; Циклування програми

NOP

EXIT: MOV AH,4CH ; Вихід

INT 21H ; з програми

CODE ENDS

END

Циклування програми командою JMP STATUS здійснюється з метою забезпечення перегляду часових діаграм за допомогою осцилографа на перемкнутих контактах 2 та 3 з’єднувача DB9P COM 1. Часові діаграми для наведеного прикладу будуть співпадати з наведеними на рис. 6.2

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

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

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

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

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

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

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

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

Наведена нижче підпрограма ІМ реалізації імпульсної послідовності працює таким чином: через рівні інтервали часу ∆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