Разработка алгоритмов и программ по реализации обмена данными, страница 2

b)  для передачи необходимо записать это число в порт 3F8;

4)  прием данных:

a)  для приема необходимо прочитать содержимое порта 2F8;

b)  для того чтобы убедиться, что обмен произошел успешно, необходимо вывести содержимое порта 2F8 на экран.

На рис.7 приведена структурная схема алгоритма, реализующая данную задачу.

Рис.7

Символ 1. Запись в порт 3FB числа 131. Это новый режим последовательного адаптера СОМ1 и подготовка к следующему шагу, где будет записан новый делитель частоты тактового генератора.

Символ 2. Запись в порт 3F9 числа 0. Это старший байт делителя частоты тактового генератора для СОМ1.

Символ 3. Запись в порт 3F8 числа 1. Это младший байт делителя частоты тактового генератора для СОМ1.

Символ 4. Запись в порт 3FB числа 3. Это для того что можно было осуществлять обмен данных.

Символ 5. Запись в порт 3F9 числа 0. Это означает, что прерывания от последовательного адаптера COM1 не используются.

Символ 6. Запись в порт 2FB числа 131. Это новый режим последовательного адаптера СОМ2 и подготовка к следующему шагу, где будет записан новый делитель частоты тактового генератора.

Символ 7. Запись в порт 2F9 числа 0. Это старший байт делителя частоты тактового генератора для СОМ2.

Символ 8. Запись в порт 2F8 числа 1. Это младший байт делителя частоты тактового генератора.

Символ 9. Запись в порт 2FB числа 3. Это для того что можно было осуществлять обмен данных.

Символ 10. Запись в порт 2F9 числа 0. Это означает, что прерывания от последовательного адаптера COM2 не используются.

Символ 11. Была нажата клавиша <ESC>? Если ДА, переход к концу структурной схеме алгоритма. Если НЕТ, переход к символу 12.

Символ 12. Ввод с клавиатуры числа (в диапазоне от 0 до 255) для его передачи.

Символ 13. Запись в порт 3F8 числа, введенного с клавиатуры.

Символ 14. Чтение байта из порта 2F8 и вывод на экран переданного числа.

На рис.8 приведен листинг программы, которая реализует на языке Бейсик структурную схему алгоритма, приведенную на рис.7.

CLS

PRINT "ИНИЦИАЛИЗАЦИЯ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА (СОМ1)"

PRINT "1) Установка нового режима последовательного адаптера"

OUT &H3FB, 131

PRINT "2) Установка скорости передачи данных"

PRINT "     Старший байт делителя частоты тактового генератора"

OUT &H3F9, 0

PRINT "     Младший байт делителя частоты тактового генератора"

OUT &H3F8, 1

OUT &H3FB, 3

OUT &H3F9, 0

PRINT "ИНИЦИАЛИЗАЦИЯ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА (СОМ2)"

PRINT "1) Установка нового режима последовательного адаптера"

OUT &H2FB, 131

PRINT "2) Установка скорости передачи данных"

PRINT "     Старший байт делителя частоты тактового генератора"

OUT &H2F9, 0

PRINT "     Младший байт делителя частоты тактового генератора"

OUT &H2F8, 1

OUT &H2FB, 3

OUT &H2F9, 0

PRINT "Для выхода нажмите <ESC>"

DO

PRINT "ПЕРЕДАЧА ДАННЫХ"

IF INKEY$=CHR(27) THEN EXIT DO

INPUT "Введите число (от 0 до 255):", A

OUT &H3F8, A

PRINT "ПРИЕМ ДАННЫХ"

PRINT "Переданное число:", INP(&H2F8)

LOOP

END

Рис.8

3.5 Разработка структурной схемы алгоритма и программы по реализации обмена
данными с одного персонального компьютера на другой

В качестве исследования целесообразно выбрать адаптер COM2, так как СОМ1, как правило, занят манипулятором "мышь". Его порты имеют адреса 2F8-2FF.

Для реализации такого обмена необходимо разработать две структурные схемы алгоритма и программы, реализующие эти структурные схемы алгоритма.

Первый компьютер будет отвечать за передачу данных, второй – за прием.

Для первого компьютера:

1)  инициализация порта:

a)  установка требуемого режима для обмена данными: задание дины передаваемого слова, количество стоповых бит, контроля четности;

b)  задание скорости передачи данных;

c)  перед тем как начать обмен данными, следует открыть доступ к портам для приема и передачи;

d)  так как прерывания не используются при обмене данными, то их целесообразно запретить;

2)  передача данных:

c)  предварительно необходимо ввести с клавиатуры число (0-255), которое будет передаваться;

d)  для передачи необходимо записать это число в порт 2F8;

На рис.9 приведена структурная схема алгоритма, реализующая данную задачу.

Рис.9

Символ 1. Запись в порт 2FB числа 131. Это новый режим последовательного адаптера СОМ1 и подготовка к следующему шагу, где будет записан новый делитель частоты тактового генератора.

Символ 2. Запись в порт 2F9 числа 0. Это старший байт делителя частоты тактового генератора для СОМ1.

Символ 3. Запись в порт 2F8 числа 1. Это младший байт делителя частоты тактового генератора для СОМ1.

Символ 4. Запись в порт 2FB числа 3. Это для того что можно было осуществлять обмен данных.

Символ 5. Запись в порт 2F9 числа 0. Это означает, что прерывания от последовательного адаптера COM1 не используются.

Символ 6. Была нажата клавиша <ESC>? Если ДА, переход к концу структурной схеме алгоритма. Если НЕТ, переход к символу 7.

Символ 7. Ввод с клавиатуры числа (в диапазоне от 0 до 255) для его передачи.

Символ 8. Запись в порт 3F8 числа, введенного с клавиатуры.

На рис.10 приведен листинг программы, которая реализует на языке Бейсик структурную схему алгоритма, приведенную на рис.9.

CLS

PRINT "ИНИЦИАЛИЗАЦИЯ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА (СОМ2)"

PRINT "1) Установка нового режима последовательного адаптера"

OUT &H2FB, 131

PRINT "2) Установка скорости передачи данных"

PRINT "     Старший байт делителя частоты тактового генератора"

OUT &H2F9, 0

PRINT "     Младший байт делителя частоты тактового генератора"

OUT &H2F8, 1

OUT &H2FB, 3

OUT &H2F9, 0

PRINT "Для выхода нажмите <ESC>"

DO

PRINT "ПЕРЕДАЧА ДАННЫХ"

IF INKEY$=CHR(27) THEN EXIT DO

INPUT "Введите число (от 0 до 255):", A

OUT &H3F8, A

LOOP

END

Рис.10

Для второго компьютера:

1)  инициализация порта (протоколы у двух компьютеров должны быть одинаковы):

a)  установка требуемого режима для обмена данными: задание дины передаваемого слова, количество стоповых бит, контроля четности;

b)  задание скорости передачи данных;

c)  перед тем как начать обмен данными, следует открыть доступ к портам для приема и передачи;

d)  так как прерывания не используются при обмене данными, то их целесообразно запретить;

2) прием данных:

c)  для приема необходимо прочитать содержимое порта 2F8;

d)  для того чтобы убедиться, что обмен произошел успешно, необходимо вывести содержимое порта 2F8 на экран.

На рис.11 приведена структурная схема алгоритма, реализующая данную задачу.

Рис.11

Символ 1. Запись в порт 2FB числа 131. Это новый режим последовательного адаптера СОМ2 и подготовка к следующему шагу, где будет записан новый делитель частоты тактового генератора.

Символ 2. Запись в порт 2F9 числа 0. Это старший байт делителя частоты тактового генератора для СОМ2.

Символ 3. Запись в порт 2F8 числа 1. Это младший байт делителя частоты тактового генератора.

Символ 4. Запись в порт 2FB числа 3. Это для того что можно было осуществлять обмен данных.

Символ 5. Запись в порт 2F9 числа 0. Это означает, что прерывания от последовательного адаптера COM2 не используются.

Символ 6. Была нажата клавиша <ESC>? Если ДА, переход к концу структурной схеме алгоритма. Если НЕТ, переход к символу 7.

Символ 7. Чтение байта из порта 2F8 и вывод на экран переданного числа.

На рис.12 приведен листинг программы, которая реализует на языке Бейсик структурную схему алгоритма, приведенную на рис.11.

CLS

PRINT "ИНИЦИАЛИЗАЦИЯ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА (СОМ2)"

PRINT "1) Установка нового режима последовательного адаптера"

OUT &H2FB, 131

PRINT "2) Установка скорости передачи данных"

PRINT "     Старший байт делителя частоты тактового генератора"

OUT &H2F9, 0

PRINT "     Младший байт делителя частоты тактового генератора"

OUT &H2F8, 1

OUT &H2FB, 3

OUT &H2F9, 0

PRINT "Для выхода нажмите <ESC>"

DO

IF INKEY$=CHR(27) THEN EXIT DO

PRINT "ПРИЕМ ДАННЫХ"

PRINT "Переданное число:", INP(&H2F8)

LOOP

END

Рис.12