elettronica |
classe: 5binf
Nome programma: SERIALE.cpp
Introduzione: Lo scopo di questo programma è quello di
effettuare una comunicazione seriale tra due computer. Per
rendere possibile questo tipo di comunicazione abbiamo
utilizzato l'interfaccia programmabile 8250.
Teoria: L'interfaccia programmabile 8250 è seriale in
quanto spedisce e riceve i dati un bit alla volta. E' di
tipo 'UART' in quanto è un'interfaccia universale
asincrona per ricezione e trasmissione. Le operazioni
rese possibili da questo dispositivo sono:
1)conversione seriale parallela;
2)generare 'baud-rate'(=frequenza di trasmissione
della forma d'onda);
3)controllo modem;
4)è inoltre presente una diagnostica interna. Per programmare questa
interfaccia abbiamo impostato i diversi registri presenti al suo interno.
Nome Indirizzo Funzione
thr 3f8 Registro memorizzazione trasmett.
rbr 3f8 Registro dati ricevitore
dll 3f8 Divisore di 'baud-rate'(lsb)
dlm 3f9 Divisore di 'baud-rate'(msb)
ier 3f9 Registro abilitazione interruzione
iir 3fA Rgistro identificazione interruzione
lcr 3fB Registro controllo linea
mcr 3fC Registro controllo modem
lsr 3fD Registro stato linea
msr 3fE Registro stato modem
Prove effettuate: Per testare il corretto funzionamento
del nostro programma abbiamo effettuato una prova su
sue due personal collegati tramite un cavo seriale. Abbiamo
lanciato il nostro programma su entrambi i computer,
impostando su un computer il programma in ricezione
e sull'altro in trasmissione.
Osservazioni: Abbiamo dovuto tenere ben presente che
l'indirizzo di partenza della mia interfaccia 8250 fosse
pari a 3f8. Inoltre per agevolare eventuali cambiamenti degli indirizzi dei dieci registri interni, abbiamo creato una
piccola libreria COM.H interna al programma in cui è presente la
seguente dichiarazione:
const com=0x3f8,
iir=com+2,
lcr=com+3,
mcr=com+4,
lsr=com+5,
msr=com+6;
Descrizione
Il programma svolge due funzioni: trasmette/riceve caratteri riconoscendo la
provenienza del carattere. E' stato diviso in due parti essenziali: il primo file di libreria(com.h) contiene le dichiarazioni di tutti i registri e le istruzioni per
inizializzare l' interfaccia 8250 ; il secondo file(seriale.cpp) invece riconosce
se l'utente desidera trasmettere o ricevere e conseguentemente alla scelta dell'utente procede alla trasmissione/ricezione dei dati.
Funzioni
Per lo svolgimento del file com.h sono state usate le seguenti funzioni:
com.h
void inizializza (int ind, int lsd, int msb) la variabile ind corrisponde all'indirizzo effettivo della com1(03f8) mentre i parametri lsb e msb corrispondono al divisore di baud rate. All' interno della funzione abbiamo dichiarato una costante com che riceve l'indirizzo ind. In seguito abbiamo assegnato ai restanti registri (dlm,ier,dll, lcr, mcr) i valori trovati all'interno del manuale e attraverso la funzione outport abbiamo inviato nei vari registri i valori occorrenti per l'inizializzazione della porta con le opzioni desiderate(valutando quindi: i bit di parità, la velocità di trasmissione,
la presenza di interruzioni etc.)
Funzioni
Per lo svolgimento del programma abbiamo chiamato la funzione inizializza contenuta nel file com.h per inizializzare i registri descritti sopra ; succes- sivamente abbiamo impostato un ciclo <do while> all'interno del quale leggiamo la porta all'indirizzo di lsr, questo valore lo mettiamo nella variabile rec. Poi facciamo un and tra rec e 20 per testare il bit 5 del registro lsr e a seconda che sia 1 o 0 andiamo a trasmettere o a ricevere un carattere.
Se il bit è a 1, attraverso la routine getch() ricevo un carattere dalla tastiera e con Outportb lo trasmetto nel registro thr.
Successivamente vado a leggere il registro lsr e lo metto in and con 1; se il 1° bit è a 1 leggo il carattere con la funzione inportb.
La condizione per l'uscita dal ciclo è quando viene premuto il tasto ESC.
Input: carattere dalla tastiera o carattere dalla porta 8250
Output: output a video del carattere ricevuto da un altro 8250 o se viene usato per trasmettere,l'output è il carattere che spedisco all'altro computer.
Tempi di sviluppo: 10 ore (comprendenti: analisi,creazione programma, prove, relazione).
Bibliografia: 'IBM PC, programmazione del
microprocessore 8088' di David C. Willen, Jeffrey I.
Krantz.
Privacy
|
© ePerTutti.com : tutti i diritti riservati
:::::
Condizioni Generali - Invia - Contatta