Експериментальне підтвердження вірності програмних рішень.
Реалізація проекту
Для ініціалізації контролера послідовного інтерфейсу необхідно зробити наступні кроки: Записати за адресою 3FB (2FB) керуючий байт з одиницею в біті D7; Записати код поділювана частоти за адресами 3F8 (2F8) та 3F9 (2F9); Записати керуючий байт за адресою 3FC; Записати керуючий байт за адресою 3F9. Check=inportb (port+3); printf («→ Dovzhyna slova: «); Case 0: printf («Is not using;»);n—; break… Читати ще >
Експериментальне підтвердження вірності програмних рішень. Реалізація проекту (реферат, курсова, диплом, контрольна)
Ініціалізація послідовного порту
Контролер послідовного інтерфейсу забезпечує дуплексний обмін даними тобто можливо одночасно приймати і передавати дані. Але всі параметри обміну (швидкість, формат знаку та ін.) для прийому та передачі повинні бути однаковими.
Для ініціалізації контролера послідовного інтерфейсу необхідно зробити наступні кроки:
- — записати за адресою 3FB (2FB) керуючий байт з одиницею в біті D7;
- — записати код поділювана частоти за адресами 3F8 (2F8) та 3F9 (2F9);
- — записати за адресою 3FB (2FB) керуючий байт з нулем в біті D7 і з необхідним значенням інших бітів;
- — записати керуючий байт за адресою 3FC;
- — записати керуючий байт за адресою 3F9.
В розробленому програмному забезпеченні за ініціалізацію відповідає функція initializing (), лістинг якої наведено нижче:
int initializing (int port).
{.
outportb (port+3,0×80);
printf («-> Set D7 (xbH) = 1»);
outportb (port+0,0×60);
printf («-> molodshui byte dilnuka»);
outportb (port+1,0×00);
printf («-> starshui byte dilnuka»);
outportb (port+3,0x0b);
printf («-> Settings of sending parametrs»);
outportb (port+4,0×00);
printf («-> Turning off modem»);
outportb (port+1,0×00);
printf («-> Zaborona of interrupt»);
printf («Success! «);
}.
На рисунку 2 зображено процес ініціалізації контролеру послідовного інтерфейсу. Спочатку, користувач вводить порт, за допомогою якого він хочу реалізувати передачу даних (COM1 або COM2, COM3 та COM4 не враховуються так, як зараз дуже важко знайти материнську плату з більш, ніж двома послідовними портами). Далі змінній port надається відповідне значення: якщо натиснуто клавішу 1 — то port = 3F8h, якщо 2 — port = 2F8h. Далі керування передається вищезазначеній функції initializing (), яка виконує ініціалізацію контролеру послідовного інтерфейсу за наведеним вище алгоритмом.
При успішній ініціалізації керування передається функції parametrs (), яка виводить на екран користувача інформацію про налаштування контролера послідовного інтерфейсу. Дану функцію реалізовано за допомогою наступної послідовності операторів:
int parametrs (int port).
{.
int check, n=0;
printf («Parametrs of connection:»);
check=inportb (port+3); printf («-> Dovzhyna slova: «);
switch (check&3).
{.
case 0: printf («5»); break;
case 1: printf («6»); break;
case 2: printf («7»); break;
case 3: printf («8»); break;
}.
printf («bit; -> Kilkist stop-bitiv: «);
switch (check&4).
{.
case 0: printf («1»); break;
case 4: printf («2»); break;
}.
printf («-> Kontrol na parnist: «);
switch (check&8).
{.
case 0: printf («Is not using;»);n—; break;
case 8: printf («Using»); n++; break;
}.
printf («-> Type of control: «);
switch (check&0×10).
{.
case 0: printf («neparnui»);break;
case 0×10: printf («patnui»);n++;break;
}.
printf («-> Fiksaciya parnosti: «);
switch (check&0×20).
{.
case 0: printf («Is not using;»); break;
case 0×20: if (n==1) printf («bit=1;»);
if (n==2) printf («bit=0;»); break;
}.
printf («-> Interrupt: «);
switch (check&0×40).
{.
case 0: printf («Is not using;»); break;
case 0×40: printf («Using;»); break;
}.
getch ();
}.
Після ініціалізації послідовного порту та виведення на екран параметрів передачі, користувачу пропонується вибрати одну з двох дій: виконати прийом або передачу даних, які будуть виконуватись за ініціалізованими параметрами. Ініціалізація виконує функцію частотної синхронізації. Якби параметри приймача і передавача відрізнялися один від одного, то неможливо б було виконати передачу даних.