Anteprima
Vedrai una selezione di 1 pagina su 5
Configurazione USART Pag. 1
1 su 5
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Interruzioni e registri per l'interfaccia seriale

Interruzione su ENTER: linea 1, autovettore 25, mappata a $64, ISR a $8500

Interruzione su BUFFER FULL: linea 2, autovettore 26, mappata a $68, ISR a $8600

Al dispositivo USART sono associati due livelli di interruzione:

Interruzione su RxRDY: linea 3, autovettore 27, mappata a $6C, ISR a $8700

Interruzione su TxRDY: linea 4, autovettore 28, mappata a $70, ISR a $8800

*********************************************************************************

usart EQU $2004 Interfaccia seriale.

ter EQU $2000 Terminale video.

ORG $8200 Indirizzo di partenza del main program.

START MOVEA.W #usart,A0 Inizializza l'interfaccia seriale,

*********************************************************************************

PRIMO ACCESSO IN SCRITTURA ALLA SERIALE => REGISTRO MODE

INDIRIZZO DISPARI

MODE |0 |1 |0 |1 |1 |1 |0 |1 |

| | | | | | | |__Trasmissione Asincrona

| | | | |_ | |____Non utilizzato

| | | | |_______8 bit per dato

| | | |__________bit di parità

tipo di parità dispari
2 bit di stop
#bit di sync in trasmissione asincrona
MOVE.B #$5D,1(A0) trasmissione asincrona, 8 bit di informazione, bit di parità dispari e 2 bit di stop
SECONDO ACCESSO IN SCRITTURA ALLA SERIALE => REGISTRO CNTRL
INDIRIZZO DISPARI CNTRL
0 0
1 1
0 1
1 1
Abilita trasmettitore
Attiva DTR
Attiva ricevitore
Non utilizzato
Azzera bits di errore in STATUS
Attiva RTS
Non resetta la periferica
Non va in 'hunt'
MOVE.B #$37,1(A0) abilita trasmettitore e ricevitore, cancella

flags* di errore e attiva i segnali di handshaking.

MOVEA.W #ter,A0 Inizializza il terminale video,

*********************************************************************************

INIZIALIZZAZIONE DEL TERMINALE:

** CNTRL |0 |0 |1 |1 |1 |1 |1 |1 |

* | | | | | | | |__Abilita interruzioni su Buffer full

* | | | | | | |____Abilita interruzioni su Enter

* | | | | | |______Pulisci schermo

* | | | | |________Pulisci buffer tastiera

* | | | |__________Abilita tastiera

* | | |____________Abilita echo

* | |______________Stato di buffer full

* |________________Stato di Enter inviato

********************************************************************************

MOVE.B #$3f,1(A0) abilita tastiera, eco, interruzioni enter e buffer

* full, cancella video e pulisce buffer di tastiera.

* ANDI #$F8FF,SR Azzera l'interrupt mask.

main NOP Processore è in attesa di qualche interruzione.

JMP

ISR DELL'INTERRUZIONE DI LIVELLO 1 ( pressione tasto enter )

ORG $8500 Interrupt vector.

MOVE.L A0,-(A7) Salva nel supervisor stack pointer i registri

MOVE.L A1,-(A7) usati dalla ISR.

MOVE.L D0,-(A7)

MOVEA.W #ter,A0 A0 e A1 puntano ai dispositivi TERMINAL e

MOVEA.W #usart,A1 USART rispettivamente.

ACCESSO IN LETTURA ALL'INDIRIZZO DISPARI DELLA SERIALE => REGISTRO STATUS

STATUS |1 |0 |0 |0 |0 |0 |0 |0 |

| | | | | | | |__b0 diviene alto quando DATA OUT

| | | | | | | viene copiato in TSHIFT REG., torna

| | | | | | | basso quando il processore copia

| | | | | | | un nuovo carattere in DATA OUT

| | | | | | |____b1 diviene alto quando RSHIFT

REG.** | | | | | | viene copiato in DATA IN, torna ** | | | | | | basso in seguito a lettura da DATAIN** | | | | | |______Underrun ** | | | | |________Errore di parità ** | | | |__________Errore di overrun ** | | |____________Errore di framing ** | |______________Rilevati bit di sincronismo ** |________________DSR attivo **********************************************************************************wait11 MOVE.B 1(A1),D0 Controlla se è attivato il segnale DSR dellaANDI.B #$80,D0 USART ed in caso affermativo trasmette,BEQ wait11 altrimenti attende.*wait12 MOVE.B 1(A1),D0 Se l'interfaccia seriale è pronta a trasmettereANDI.B #$01,D0 quindi continua altrimenti attende (controllo delbuffer in uscita).BEQ wait12* MOVE.B (A0),D0 Preleva uno alla volta i caratteri presenti nelMOVE.B D0,(A1) buffer di tastiera e li trasmette all'interfacciaCMPI.B #13,D0 seriale finchè non riconosce il tasto enter cheBNE wait12 ha causato l'interruzione.*end MOVE.B

#$3f,1(A0) Riabilita la tastiera, cancella il video* e pulisce il buffer di tastiera.*

MOVE.L (A7)+,D0 Ripristino dei registri

MOVE.L (A7)+,A1 precedentemente salvati.

MOVE.L (A7)+,A0

RTE Ritorno alla routine interrotta.

Dettagli
Publisher
A.A. 2012-2013
5 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher cecilialll di informazioni apprese con la frequenza delle lezioni di Calcolatori Elettronici II e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof Pastore Stefano.