|
Programarea portului serial
|
|
Trebuie remarcat ca la nivel de programare a portului serial se poate folosi intreruperea
software 14h din cadrul BIOS-ului, dar ea este lenta si nu permite un transfer duplex ci
simplex. De aceea, pentru a folosi la maximum resursele calculatorului se foloseste programarea
la nivel de porturi. Astfel, se pot folosi pana la 4 porturi seriale, numerotate COM1..COM4 si
se poate elabora un altfel de protocol de comunicatie intre DTE (calculator) si DCE (modem,periferic,etc..).
COM1 fortzeaza intreruperea 4 care este coordonata de vectorul INT 0ch, COM2 forteaza intreruperea
3, coordonata de vectorul INT 0bh, intreruperi ce se realizeaza doar daca este activat acest mod de
lucru cu porturile (lucrul in intreruperi).Astfel, la adresa pointata de INT 0ch,respectiv INT 0bh,
se va gasi rutina de tratare a intreruperii COM-urilor.Ea poate fi redirectata sa execute o proprie rutina creata de
utilizator care sa deserveasca noul periferic (ex. un Voltmetru cu achizitie de date ce se cupleaza pe magistrala
RS232).
|
Semnalele de control si de date sunt accesibile programatorului prin 8 porturi aflate la adrese de I/O (input/output)
consecutive, primul port fiind portul de baza, care in cazul COM1 este 3f8h, COM2-2f8h, COM3-3e8h, COM4-2e8h.
Vom nota acest registru de baza cu "pb".
|
Porturile au urmatoarea semnificatie:
- pb+0 : scriere (cu out pb+0,[valoare]) a unui octet catre linie sau citire a unui octet (cu in reg,pb+0)
totodata retine partea cea mai putin semnificativa (Low Byte) a lachu-lui de divizare a frecventei de lucru.
- pb+1 : scriere a partii cea mai semnificativa (High Byte) a latch-ului de divizare a frecventei de lucru.
totodata retine si valoarea registrului de activare a intreruperilor
- pb+2 : citirea acestui registru ne da informatii despre cauza producerii unei intreruperi in momentul cand aceasta apare.
- pb+3 : citirea/scrierea registrului de control al liniei
- pb+4 : scrierea registrului de control al modemului
- pb+5 : citirea registrului de stare a liniei
- pb+6 : citirea registrului de stare a modemului
|
|
|