Procedure Seriali |
RxD_Int - Dato pronto 1/2 [212 di 404] |
![]() |
7.2 Procedura RxD_Int, complementare a RxD_WR per Dato ricevuto pronto [1 di 2] |
|
![]() | La procedura RxD_Int ha il compito di gestire i dati ricevuti dalla linea, assumendoli (se ci sono) dal Buffer Circolare di Ricezione e passandoli in uscita al dal programma principale del progetto di gestione sotto interrupt, del quale è indispensabile parte integrante. |
![]() | Spetterà poi a quest'ultimo il compito di decidere cosa farne: probabilmente li metterà a video e/o li memorizzerà da qualche parte, magari in un file. |
![]() | Poichè queste operazioni non sono necessarie se il Buffer è trovato vuoto, la procedura provvede per prima cosa a verificare questa evenienza, avvisando di ciò il programma principale chiamante ponendo AH=01H: |
|
![]() |
![]() |
NB: se il testo nell'Area
ti
sembra strano installa il font Giobe.TTF: clicca qui!! |
|
![]() | Se invece il Buffer Circolare di Ricezione non è vuoto, la procedura RxD_Int assume in AL il byte corrente (puntato da [RxDBufRD]), lasciandolo anche AH=00, per avvisare che il dato assunto è attendibile. |
![]() | Naturalmente il puntatore in lettura [TxDBufRD] viene incrementato e se viene a coincidere con la fine fisica del Buffer esso viene reinizializzato a 0000H per garantire la circolarità. |
![]() | Se per qualche ragione la procedura RxD_Int non è stato in grado di "scaricare" (leggere ) i bytes dal Buffer i 2 puntatori possono coincidere indicando che il Buffer è pieno: in questo caso il carattere appena ricevuto dalla linea viene perduto (non essendoci per esso più spazio). |
![]() | In effetti questo può succedere se i dati arrivano con rilevante velocità; come sottolineato nel paragrafo precedente, il rischio si evita facilmente disponendo di un Buffer Circolare di Ricezione relativamente grande. |
![]() | Nei nostri progetti applicativi, RxD5Com1 (per la COM1) e RxD5Com2 (per la COM2) è stata usata una misura di 1024 bytes: |
|
|
![]() | Se il sottoservizio RxD_WR di ServInt0C fa a meno del Buffer Circolare di Ricezione, come nei progetti RxD6Com1 (per la COM1) e RxD6Com2 (per la COM2), questa procedura accessoria non è necessaria. |
|
![]() |
Porta Seriale |
![]() |
RxD_Int - Dato pronto 1/2 |
![]() |
![]() |
![]() |
||
212 di 404 |
|
|
Home
![]() |
|
|||||||
|
Motore Ricerca |
|