ePerTutti


Appunti, Tesina di, appunto elettronica

Relazione

ricerca 1
ricerca 2

Relazione



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


La velocità di trasmissione può essere varia e spazia dai 50 bit al secondo ai 54400 bit al secondo. L'impostazione di questo ed altri parametri viene effettuata modificando i registri della tabella sopra riportata e questa operazione è spiegata più dettagliatamente nella descrizione dei passi del programma.

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,

asincrona per r ier=com+1,

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