Дипломная работа: Комп’ютерне моделювання роботи послідовного порта
output_byte:=(data_bit-5)+4*(stop_bit - 1)+8*(parity);
port(RS232_address+3):=126;
{Завантаження ініціалізаційних даних, перший біт регістра порівнює 1.}
port(RS232_address+0):=byte1; {Молодший байт дільника дорівнює 1.}
port(RS232_address+1):=byte2; {Старший байт дільника дорівнює 0.}
port(RS232_address+3):=output_byte; {Завантаження дільника й інших параметрів.}
end;
Передача і прийом послідовних даних
Існує кілька способів прийому і передачі даних через послідовний порт: за допомогою команд операційної системи, переривань BIOS чи безпосереднього доступу до порту. Останній спосіб найбільш зручний при проведенні операцій введення/виведення загального призначення. Розглянемо приклад для порту СОМ1. Щоб передати дані, можна записати їх безпосередньо в буферний регістр передавача 3F8hвикористовуючи наступний оператор мови QBASIC:
OUT3F8h,X
де X- дані в десятковому форматі. Для одержання даних з порту СОМ1 зчитуються дані з буферного регістра приймача 3F8h. З цією метою використовується інший оператор мови QBASIC (Y- вхідні дані в десятково-му форматі):
Y=INP(3F8h)
Наступні дві процедури написані на мові ТР6 і виконують ті ж функції.
(*Бібліотека ресурсів № А10 (запис даних в буферний регістр передавача).*)
Procedure write_transmit_buffer(RS232_address,output_byte:integer);
Begin
port(RS232_address):=output_byte;
end;
(*Бібліотека ресурсів № A12 (зчитування даних з буферного регістра прий-мача).*)
Functionread_receive_buffer(RS 232_addгеss,output_byte: integer]: integer;
begin
read_receive_buffer:=port(RS232_address);
end;
Нижче показані дві функції, написані на TurboPascal для Windows.
(*Бібліотека ресурсів № А10 (запис даних в буферний регістр передавача).*)
Functionwrite_transmit_butfer(RS232_address;output_byte:integer):integer; export;
begin
port(RS232_address):=output_byte;
end;