Site dedicat in intregime bunicului meu care mi-a insuflat o gandire libera
si comunitatii Antionline [ IRC #antionline, undernet ]
Powered By LinuX ( Line X :)
Calea curenta: Home/Tutoriale/Porturi/Portul Serial/Programare Serial
[Home]
[Tutoriale]
[Scheme]
[Pascal]
[Asembler]
[C,C++]
[Linux]
[Link-uri]
[Antionline]
[Old NewS]
[Bad NewS]
[Manifesto]
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
We continue to hack... @2003 MrBadNewS Design, Antionline TeaM...
Optimized for NetScape