Дипломная работа: Комп’ютерне моделювання роботи послідовного порта
2.1.3 Способи керування портами у WINDOWS95 таWINDOWSXP
Програмне керування
У розділі приведені основні варіанти програмування послідовного порту.
Одержання базової адреси послідовного порту
Представлена програма, написана мовою QBASIC, виводить загальну кількість СОМ-портів, вбудованих у ПК, і їхні базові адреси. Рядок 20 зчитує байт з комірки пам'яті 0000:0411 h, використовуючи команду РЕЕК(). Біти 0,1 і 2 містять інформацію про кількість встановлених СОМ-портів. На ці три біти накладається маска за допомогою оператора AND(1+2+4) для визначення кількості портів. Рядок 30 зчитує два байти з комірок пам'яті, що містять базову адресу СОМ1. Рядки 40, 50 і 60 роблять те ж саме для інших портів.
10 DEFSEG=0
20 PRINT "Number of RS232 ports:", (PEEK(&H411) AND (1+2+4))
30 PRINT "Address of COM1:", PEEK(&H400)+256*РЕЕК(&H401)
40 PRINT "Address of CОM2:", PEEK(&H402)+256*PEEK(&H403)
50 PRINT "Address of COM3:", PEEK(&H404)+256*PEEK(&H405)
60 PRINT "Address of COM4:", PEEK(&H406)+256*PEEK(&H407)
70 INPUTX
Наступна функція, написана мовою TP6, зчитує інформацію про кількість встановлених портів і привласнює отримане значення змінній Number_of_ COM. Потім вона зчитує базові адреси з комірок пам'яті, де вони зберігаються, і привласнює адресу обраного порту змінній RS232_address.
(*-Бібліотека ресурсів № А6 (визначення базових адрес СОМ-портів).-*)
ProcedureCOM_address;
(* $0000:$0400 містить базову адресу порту СОМ1,
$0000:$0402 містить базову адресу порту COM2,
$0000:$0404 містить базову адресу порту COM3,
$0000:$0406 містить базову адресу порту COM4,
$0000:$0411 містить кількість СОМ-портів в двійковому форматі.*)
var
СOM:аггау[1..4] of integer;
COM_number.number_of_COM,code:integer;
Kbchar;char;
begin
clrscr;
COM_number:=1; (*Установка порту за замовчуванням.*)
Number_of_COM:=mem($0000:$0411); (*3читування кількості СОМ-портів.*)
Number_of_COM:=(Number_of_COM and (8+4+2)) shr 1;