Параллельного обмена.

 

Используя описанные выше функции программирования КПО, можно реализовать самые разные режимы его работы и алгоритмы взаимодействия с внешними устройствами.

1. Программа реализации асинхронного протокола взаимодействия с "медленными" внешними устройствами. Основа такого протокола — цикл типа "команда—ожидание реакции—действие".

В качестве примера рассмотрим сопряжение БИС АЦП 1113ПВ1 с компьютером с помощью КПО. Условное обозначение БИС, ее подключение к портам УКПО и временные диаграммы работы показаны на рис. 5.1. Видно, что процедура чтения кода с АЦП реализуется последовательностью действий: запуск — ожидание готовности — чтение данных.

Рис. 4.1. Подключение БИС АЦП 1113ПВ1 локальной сети.

 

// *** Программа чтения данных из БИС АЦП 1113ПВ1 ***

#include <DOS.H>

#include <STDIO.H>

#define START 1 // Маска бита запуска (бит 0 порта 2)

#define READY 0х80 // Маска бита готовности (бит 7 порта 1)

#define DH 3 // Маска 8-го и 9-го битов данных АЦП

// (биты 0 и 1 порта 1)

// Глобальные переменные

unsigned BASE_ADDR; // Базовый адрес УКПО

unsigned CW_ADDR; // Адрес регистра управляющего слова

void main (void)

{

unsigned data_ADC = 0; // Данные с АЦП

outportb (CW_ADDR, 4); //Установка конфигурации: порт 2 на вывод,

// остальные на ввод

outportb (BASE_ADDR+2, START^1);

// Запуск АЦП — запись 0

while (((data_ADC = inportb (BASE_ADDR+1)) & READY ) !=0);

// Опрос готовности

data_ADC = (data_ADC & DH) « 8 + inportb (BASE_ADDR);

// Чтение младшего байта данных

printf ("\nПрочитан код — %u", data_ADC);

}

//*** Конец программы

2. Программа сопряжение с компьютером простейшего устройства, состоящего из четырех ключей и четырех лампочек.

Предположим, что ввиду большой загруженности КПО другими задачами для подключения нашего устройства выделен только один порт 5 (рис. 5.2). Драйверы, приведенные ниже, реализуют две функции — чтение состояния ключей и "поджигание" лампочек.

Рис. 4.2. Подключение простейшего устройства из ключей и лампочек.

 

 

//*** Программа „Набор лампочек и кнопочек“ ***

#define LAMP 0x0F // Маска битов светодиодов (биты 0...3 порта 5)

#define P5 0х20 // Маска бита порта 5 в управляющем слове

// Глобальные переменные

unsigned BASE_ADDR; // Базовый адрес УКПО

unsigned CW_ADDR; // Адрес регистра управляющего слова

unsigned char CW; // Управляющее слово

// Прототипы функций

unsigned char Get_Switch (void):

void Set_Lamp (unsigned char data); // Функция чтения состояния ключей

unsigned char Get_Switch (void)

// В возвращаемом байте четыре старших бита

// (4 ... 7) соответствуют четырем ключам (0 — замкнут, 1 — разомкнут).

{

unsigned char data;

outportb (CW_ADDR, CW & (~P5)); // Порт 5 — на ввод

data = inportb (BASE_ADDR+5); // Чтение состояния ключей

outportb (CW_ADDR, CW | Р5); // Порт 5 — на вывод

return (data):

}

// Функция "поджигания" лампочек

void Set_Lamp (unsigned char data)

// Четыре младших бита из data соответствуют четырем

// лампочкам (1 — горит, 0 — погашен).

{

outportb (BASE_ADDR+5, (data & LAMP) | Get_Switch());

}

 

//*** Конец программы

 

Для "поджигания" лампочек необходимо вывести соответствующую тетраду в порт 5, но это может привести к конфликту на четырех старших линиях между выводимой информацией и состоянием ключей. Поэтому в старшую тетраду надо записывать данные, которые установлены ключами.

Для этого приходится считывать их состояние при каждой записи в порт 5.

Для считывания состояния ключей необходимо переводить порт 5 на ввод, а затем после чтения — опять на вывод.

Такое кратковременное отключение порта от лампочек (время зависит от быстродействия компьютера, но во всяком случае не превосходит нескольких десятков микросекунд) не будет заметно.

 








Дата добавления: 2015-10-13; просмотров: 1081;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.