перейти к полному списку дипломных проектов
Ссылка на скачивания файла в формате .doc находится в конце странички
-*)
Function read_modem_status(RS232_address, x:integer):integer; export;
(*x=l - вибір біта DCD, x=2 - вибір біта DSR, x=3 - вибір біта CTS
Щоб передати дані, можна записати їх безпосередньо в буферний регістр передавача 3F8h використовуючи наступний оператор мови QBASIC:
OUT 3F8h,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 (зчитування даних з буферного регістра прий-мача).*)
Function read_receive_buffer(RS 232_addгеss,output_byte: integer]: integer;
begin
read_receive_buffer:=port(RS232_address);
end;
Нижче показані дві функції, написані на Turbo Pascal для Windows.
(*Бібліотека ресурсів № А10 (запис даних в буферний регістр передавача).*)
Function write_transmit_butfer(RS232_address;output_byte:integer):integer; export;
begin
port(RS232_address):=output_byte;
end;
(*Бібліотека ресурсів № A11 (читання даних з буферного регістра прийма-ча). *)
Function read_reseive_buffer(RS232_address,output_byte:integer):integer; export;
begin
read_reseive_buffer:=port(RS232_address);
end;
Передача даних по лініях взаємодії
Для виводу даних через лінії RTS і DTR у регістр керування модемом (зміщення 04h) необхідно записувати біти 1 і 0, що відповідають сигналам RTS і DTR. Лінії керуються процедурами на мовах TP6 і Turbo Pascal для Windows, що вимагають базову адресу обраного СОМ-порту і стан цих ліній - або 0, або 1. Причому RTE і DTR інвертуються перед подачею в порт з метою компенсації інверсії перетворювачами TTЛ/RS232, що також використовуються для трансформації рівня напруги.
(*-Бібліотека ресурсів № А11 (запис даних у регістр стану модему).-*)
procedure write_modem_status(RS232_address, RTS, DTR:integer);
(*RTS і DTR інвертуються за допомогою МАХ238 на експериментальній платі *)
(*RTS=біт 1, DTR=біт 0 регістру керування модемом, зміщення 04h.*)
begin
RTS.=1-RTS,
DTR:=1-DTR;
port(RS232_address+4):=RTS*2+DTR; (*3апис у регістр 04h *)
end;
(*-Бібліотека ресурсів № A11 (запис даних у регістр стану модему).-*)
Function wrile_modem_stalus(RS232_address, RTS, DTR:integer):integer; export;
(*RTS і DTR інвертуються за допомогою MAX238 на експериментальній платі.*)
(*RTS=біт 1, DTR=біт 0 регістра керування модемом, зміщення 04h.*)
begin
RTS:=1-RTS;
DTR:=1-DTR;
port(RS232_address+4):=RTS*2+DTR; (*Запис в регістр 04h.*)
end.
Щоб зчитати дані з ліній DSR, CTS і DCD, необхідно зчитати регістр стану модему. Для цього служать нижчеподані процедури на мовах TP6 і TPW, що вимагають базову адресу обраного СОМ-порту. Лінії DSR, CTS і DCD інвертуються для компенсації інверсії перетворювачами TTJI/RS232.
(*-Бібліотека ресурсів № A13 (читання даних з регістра стану модема).-*)
Function read_modem_status(RS232_address, x:integer):integer;
(*х=1 - вибір біта DCD, х=2 - вибір біта DSR, х=З - вибір біта CTS.*) (*DCD=біт 7, DSR=біт 5, CTS=біт 4 регістру стану модема, зміщення 06h.*) (*Всі біти інвертуються за допомогою МАХ238 на експериментальній пла-ті.*)
var
input_byte:byte;
begin
input_byte:=port(RS232_address+6),
case x of
1: Read_modem_status = 1- round((input_byte and 128)/128);
2: Read_modem_status = 1- round((input_byte and 32)/32);
3: Read_modem_status = 1- round((input_byte and 16)/16);
end;
end;
(*-Бібліотека ресурсів № A13 (читання даних з регістра стану модему).-*)
Function read_modem_status(RS232_address, x:integer):integer; export;
(*x=l - вибір біта DCD, x=2 - вибір біта DSR, x=3 - вибір біта CTS.*)
(*DCD=біт 7, DSR=біт 5, CTS= біт 4 регістри стану модему, зміщення 06h.*)
(*Усі біти інвертуються за допомогою МАХ238 на експериментальній пла-ті.*)
var
input byte:byte;
begin
input_byte:=port|RSZ32_addres+GJ;
case x of
1: Read_modem_status:=1-round((input_byte and 128)/128);
2: Read_modem_status:=1-round((input_byte and 32)/32);
3: Read_modem_status:=1-round((input_byte and 16)/16);
end;
end;
2.
скачать бесплатно КОМП’ЮТЕРНЕ МОДЕЛЮВАННЯ РОБОТИ
Содержание дипломной работы
З одного боку, RS-232 і RS-485 називають протоколами, а з іншого, MODBUS, ZModem і CAN - також протоколи
І хоча уже всі комп'ютери мають інтерфейс USB, інтерфейс RS-232 ще живий і активно застосовується
2 Будова і принцип роботи послідовного порта
Послідовна передача даних
Послідовний потік даних складається з бітів синхронізації і власне бітів даних
Якщо інтерфейс націлений на перевірку за парністю, такий біт буде виставлятися в одиницю при непарній кількості одиниць у бітах даних, і навпаки
Під час прийому відбувається зворотна операція: після того як дані успішно прийняті і за допомогою регістра зміщення перетворені в рівнобіжний формат, вони передаються в буферний регістр приймача
Перетворювачі передавачів конвертують рівень напруги ТТЛ у рівень RS232, а перетворювачі приймачів - навпаки
RS232(0) повертає кількість установлених СОМ-портів, RS232(1) - базову адресу СОМ1, RS232(2) - базову адресу COM2 і т
Третій, найбільш гнучкий метод конфігурує порт за допомогою запису даних у регістр формату даних UART (зсув 03h)
-*)
Function read_modem_status(RS232_address, x:integer):integer; export;
(*x=l - вибір біта DCD, x=2 - вибір біта DSR, x=3 - вибір біта CTS
;
• привід гнучких дисків (дисковод)