|
 |
Procedure Seriali |
RxD_2 avanzata
[187 di 403] |
- Gestione della
Ricezione Dati con la Tecnica del Polling |
|
4.3 Procedura
RxD_2:
Variante con Time-Out della versione sofisticata |
 | La procedura RxD_2 è
una variante della precedente
RxD_1, adatta a soddisfare la Ricezione
dei dati via seriale su una qualunque delle 4 porte seriali
possibili, affidando gli effettivi indirizzi
alle 2
variabili locali [port_D]
e [port_8]
predisposte dalla versione sofisticata
della procedura INIserial, ad essa
accoppiata. |
 | Con essa si tenta di risolvere il fastidioso evento per il
quale, se il
flusso di
dati in arrivo non è
continuo, non sarà possibile tornare al
programma chiamante ed si dovrà rimanere in attesa all'infinito. |
 | Il suo codice assembly
è mostrato qui di seguito: |
 | Si può notare che la procedura
si ferma ancora in attesa che
il
bit0 del
Registro
di Stato Linea [port_D]
passi a 1 (buffer UART
pieni, dato pronto) ma per un
periodo di tempo limitato, consumato
decrementando
registri; trascorso questo tempo (Time-Out,
di solito qualche millisecondo) l'esecuzione della procedura viene comunque
terminata. |
 | La procedura affida l'esito del suo compito al contenuto
del registro AH, posto a
00H se è terminata per
corretta ricezione o a
FFH se terminata per
Time-Out;
in questo modo il programma chiamante è in grado di decidere se utilizzare o
meno il contenuto del registro AL.
|
 | Questa versione è adatta per una ricezione gestita in polling, con
qualunque protocollo hardware; nonostante funzioni anche
in assenza di un
flusso continuo di
dati in arrivo, rimane
sufficientemente affidabile con dati in arrivo con
velocità relativamente basse: per certi versi
l'aumento delle istruzioni da eseguire, per rendere possibile la verifica del
tempo di Time-Out,
può diminuire la certezza che tutti i bytes in arrivo siano con
correttezza. |
 | Ne fa uso il progetto
RxD2Com1, dedicato alla
COM1, e l'analogo
RxD2Com2, dedicato alla
COM2; puoi analizzare ogni dettaglio
partendo dall'elenco di
questa pagina. |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|