|
mi servirebbero degli appunti sulla gestione dei dispositivi di input/outpu nell'8086....chi mi aiuta a cercare??
|
15/03/2004 09:37 |
|
|
| | | OFFLINE | Post: 4.874 Post: 2.644 | Registrato il: 21/04/2001
| Sesso: Maschile | Moderator | Super Member | |
|
|
15/03/2004 11:17 |
|
|
qualcosina ho trovato che mi è stato d'aiuto...ma roob non ho trovato niente che parlasse della tecnica del "POlling"... |
15/03/2004 12:01 |
|
| | | OFFLINE | Post: 4.875 Post: 2.645 | Registrato il: 21/04/2001
| Sesso: Maschile | Moderator | Super Member | |
|
Scritto da: charmstar 15/03/2004 12.01
qualcosina ho trovato che mi è stato d'aiuto...ma roob non ho trovato niente che parlasse della tecnica del "POlling"...
La tecnica del polling consiste semplicemente in un ripetitivo controllo di alcune porte per vedere se esiste qualche dato di input.
Al posto del polling si puo' usare un piu' efficiente interrupt hardware, ovverossia quando viene inserito un nuovo dato in una porta allora viene emanato un impulso hardware al microprocessore (detto interrupt) che sospende l'elaborazione in corso per andare ad elaborare il nuovo dato apparso nella porta d'input.
Non appena finisce di elaborare il dato, il microprocessore ritorna alla routine che stava eseguendo prima di essere interrotto.
Questo in linea di massima è il metodo usato dalle periferiche per comunicare con il microprocessore.
Con il polling , il microprocessore si assume l'onere di andare a controllare periodicamente tutte le porte per verificare l'esistenza di nuovi dati, mentre con l'interrupt il microprocessore viene esentato diciamo da questo lavoro e viene interrotto solo quando un nuovo dato viene effettivamente scritto sulle porte.
|
15/03/2004 12:25 |
|
|
grasssssssssssssssssssssssssssssssie! |
15/03/2004 13:06 |
|
| | | OFFLINE | Post: 1.934 Post: 554 | Registrato il: 04/01/2002
| Età: 46 | Sesso: Maschile | VocenelWeb | Cool Member | |
|
Studia ! Studia!
Queste sono le basi dell'informatica !!! |
15/03/2004 14:04 |
|
|
Scritto da: Giancarlo75 15/03/2004 14.04
Studia ! Studia!
Queste sono le basi dell'informatica !!!
|
15/03/2004 15:11 |
|
| | | OFFLINE | Post: 4.877 Post: 2.647 | Registrato il: 21/04/2001
| Sesso: Maschile | Moderator | Super Member | |
|
Scritto da: charmstar 15/03/2004 13.06
grasssssssssssssssssssssssssssssssie!
pregozzz ! |
15/03/2004 15:38 |
|
| | | OFFLINE | | Post: 3.368 Post: 2.431 | Registrato il: 22/04/2001
| Città: PALERMO | Età: 54 | Sesso: Maschile | Moderator | Super Member | |
|
Eh, si. Bello rileggere questi concetti. Mi riportano indietro al periodo scolastico.
Mi piaceva tanto l'informatica. Mi sentivo un genio |
15/03/2004 21:32 |
|
| | | OFFLINE | Post: 40.501 Post: 13.270 | Registrato il: 15/09/2001
| Sesso: Maschile | VocenelWeb | Forum Addicted | |
|
In pratica il polling è
unsigned char Polla_Porta(void)
{
unsigned char dato_ingresso;
while (dato_ingresso=inportb(0x378);
return(dato_ingresso);
}
E qst è il polling distruttivo ke ti pianta la makkina finké nn metti 1 dato sulla porta parallela in qst caso,qll costruttivo lo metti tra 1 funzione e l'altra e nn ti pianta niente ma rallenta soltanto
if(dato_ingresso=inportb(0x378)
/* */ Servi_Funzione();
...
...
Ovvimente nn ho testato le funzioni e le ho fatte a mente,ma credo siano corrette
X fare lo stesso in Assembler anziké in C le cose sono le stesse
[Modificato da g 15/03/2004 22.18] |
15/03/2004 22:11 |
|
| | | OFFLINE | | Post: 3.377 Post: 2.439 | Registrato il: 22/04/2001
| Città: PALERMO | Età: 54 | Sesso: Maschile | Moderator | Super Member | |
|
Scritto da: g 15/03/2004 22.11
unsigned char Polla_Porta(void)
{
unsigned char dato_ingresso;
while (dato_ingresso=inportb(0x378);
return(dato_ingresso);
}
if(dato_ingresso=inportb(0x378)
/* */ Servi_Funzione();
...
...
[Modificato da g 15/03/2004 22.18]
La condizione di eguaglianza si valuta con ==
Con = invece si assegnano valori.
Perchè ascolti sempre il valore esadecimale 0x378 ?
---------------------------
Mandami SMS gratis
---------------------------
...Voci nel Web...[Modificato da Zen 16/03/2004 23.19] |
16/03/2004 23:17 |
|
| | | OFFLINE | Post: 40.591 Post: 13.306 | Registrato il: 15/09/2001
| Sesso: Maschile | VocenelWeb | Forum Addicted | |
|
Scritto da: Zen 16/03/2004 23.17
Scritto da: g 15/03/2004 22.11
In pratica il polling è
unsigned char Polla_Porta(void)
{
unsigned char dato_ingresso;
while (dato_ingresso=inportb(0x378);
return(dato_ingresso);
}
E qst è il polling distruttivo ke ti pianta la makkina finké nn metti 1 dato sulla porta parallela in qst caso,qll costruttivo lo metti tra 1 funzione e l'altra e nn ti pianta niente ma rallenta soltanto
if(dato_ingresso=inportb(0x378)
/* */ Servi_Funzione();
...
...
Ovvimente nn ho testato le funzioni e le ho fatte a mente,ma credo siano corrette
X fare lo stesso in Assembler anziké in C le cose sono le stesse
La condizione di eguaglianza si valuta con ==
Con = invece si assegnano valori.
Perchè ascolti sempre il valore esadecimale 0x378 ?
>
0x378 è la porta parallela LPT1:,l'interfaccia bytewide + facilmente dispo
Se vedi ho VOLUTAMENTE messo = e nn ==
Se io faccio
if(dato_ingresso==inportb(0x378)
ottengo l'equivalenza di 1 variabile dato_ingresso con l'in della porta come test,cioè esegue l'IF se corrispondono
Se invece faccio come dico io
if(dato_ingresso=inportb(0x378)
ottengo come ingresso della IF il valore della porta ke ho già passato alla variabile
Se qst porta ha tutti 0x00 ottengo ke la IF nn viene eseguita,se alla porta leggo 1 solo 1 il risultato è ke la variabile viene aggiornata col valore e ke la IF viene eseguita dato ke nn è + nonzero
NN so se mi sono spiegato
Ovviamente qst vale x le porte stampante bidirezionali e dopo aver settato il bit 5 della parola di controllo
[Modificato da g 17/03/2004 0.25] |
16/03/2004 23:53 |
|
| | | OFFLINE | | Post: 3.383 Post: 2.445 | Registrato il: 22/04/2001
| Città: PALERMO | Età: 54 | Sesso: Maschile | Moderator | Super Member | |
|
Scritto da: g 16/03/2004 23.53
0x378 è la porta parallela LPT1:,l'interfaccia bytewide + facilmente dispo
Se vedi ho VOLUTAMENTE messo = e nn ==
Se io faccio
if(dato_ingresso==inportb(0x378)
ottengo l'equivalenza di 1 variabile dato_ingresso con l'in della porta come test,cioè esegue l'IF se corrispondono
Se invece faccio come dico io
if(dato_ingresso=inportb(0x378)
ottengo come ingresso della IF il valore della porta ke ho già passato alla variabile
Se qst porta ha tutti 0x00 ottengo ke la IF nn viene eseguita,se alla porta leggo 1 solo 1 il risultato è ke la variabile viene aggiornata col valore e ke la IF viene eseguita dato ke nn è + nonzero
NN so se mi sono spiegato
Ovviamente qst vale x le porte stampante bidirezionali e dopo aver settato il bit 5 della parola di controllo
[Modificato da g 17/03/2004 0.25]
Non ti sei spiegato, ma credo di averti capito |
17/03/2004 19:04 |
|
|
|