elettronica |
L'obiettivo di questa esperienza è quello di riuscire a collegare tra loro due PC per poter eseguire uno scambio seriale di dati tra i due computer. Per poter effettuare una comunicazione seriale tra due PC sono stati fatti due programmi: uno per la trasmissione dei dati ed uno per l'acquisizione degli stessi. Si dovrà quindi scegliere quale computer deve trasmettere e quale deve ricevere i dati. A questo proposito dovrà essere eseguito il programma per la trasmissione (TR8250) nel computer che è stato scelto per trasmettere i dati, e quello per la ricezione (RI8250) nel computer scelto per ricevere.
Poiché la comunicazione tra i due terminali deve essere di tipo seriale è stata utilizzata per questo scopo l'interfaccia seriale 8250. Questa interfaccia presenta 10 segnali di controllo, può essere programmata per usare il modem oppure no e può funzionare con gli interrupt. I registri di controllo dell'8250 sono i seguenti:
3F8H THR REGISTRO MEMORIZZAZIONE TRASMISSIONE
3F8H RBR REGISTRO DATI RICEVUTI
3F8H DLL DIVISORE DI BAUD RATE (LSB)
3F8H DLM DIVISORE DIBAUD RATE (MSB)
3F8H IER REGISTRO ABILITAZIONE INTERRUZIONI
3F8H IIR REGISTRO IDENTIFICAZIONE INTERRUZIONI
3F8H LCR REGISTRO CONTROLLO LINEA
3F8H MCR REGISTRO CONTROLLO MODEM
3F8H LSR REGISTRO STATO LINEA
3F8H MSR REGISTRO STATO MODEM
I registri da noi utilizzati sono i seguenti: LCR, IER, DLM,DLL, THR, RBR.
Il collegamento tra i due computer è stato fatto mediante l'utilizzo di un cavo seriale come in ura:
Il programma di trasmissione funziona nel seguente modo:
Inizializza la porta per la trasmissione a 2400 baud
Controlla che il registro di trasmissione sia vuoto
Se è vuoto scrive il byte in THR e quindi viene trasmesso
Il programma di ricezione funziona così:
Inizializza la porta per la ricezione a 2400 baud
Controlla che il registro di ricezione sia pieno
Se è pieno lo legge
Listato programmi:
TRASMISSIONE (TR8250)
#include<dos.h>
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
main()
RICEZIONE (RI8250)
#include<dos.h>
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
main()
while(stato==0); // CONTROLLA CHE IL REGISTRO DI RICEZIONE
clrscr(); // SIA PIENO
dato=inportb(rbr); // LEGGE IL DATO DA STAMPARE
cout<<'Dato ricevuto : '<<dato;
getch();
Per lo sviluppo di questa esperienza abbiamo impiegato quattro ore senza riscontrare nessun problema rilevante.
Privacy
|
© ePerTutti.com : tutti i diritti riservati
:::::
Condizioni Generali - Invia - Contatta