Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Look up keyword
Like this
26Activity
0 of .
Results for:
No results containing your search query
P. 1
Calcolatori elettronici: Teoria + prove C

Calcolatori elettronici: Teoria + prove C

Ratings:

4.0

(1)
|Views: 696|Likes:
Published by Ingegnere Pazzo
In questo riassunto sono presenti:

* un sunto della seconda parte del corso (quella, per intenderci, che veniva svolta dopo aver fatto il primo parziale sul DLX);
* l'ISA Intel e i vari comandi in un riassunto schematico;
* le prove B e le prove C che ho risolto nel corso dello studio di questa materia (WARNING: prendetele con beneficio di inventario, potrebbero esserci delle imperfezioni).

IN QUESTA PARTE: la teoria + le prove C!
In questo riassunto sono presenti:

* un sunto della seconda parte del corso (quella, per intenderci, che veniva svolta dopo aver fatto il primo parziale sul DLX);
* l'ISA Intel e i vari comandi in un riassunto schematico;
* le prove B e le prove C che ho risolto nel corso dello studio di questa materia (WARNING: prendetele con beneficio di inventario, potrebbero esserci delle imperfezioni).

IN QUESTA PARTE: la teoria + le prove C!

More info:

Published by: Ingegnere Pazzo on Sep 12, 2008
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

02/01/2013

pdf

text

original

1. Dichiarazione delle variabili (e delle costanti)
La dichiarazione delle variabili \u00e8 generalmente la prima cosa da fare quando si vuole scrivere la
parte software di un compito d\u2019esame.
Se si vuole specificare un valore specifico o una costante, quale pu\u00f2 essere l\u2019indirizzo a cui si
trova, per esempio, una certa risorsa di I/O o il PIC, sar\u00e0 necessario fare uso della parola EQU:
es. Display
EQU 80H
Questo fa comodo in quanto, all\u2019interno del codice, diventer\u00e0 facile ed espressivo effettuare
operazioni coi comandi IN e OUT:
es. OUT
Display

AX
(manda la word presente in AX verso BufferOUT, cio\u00e8 verso 80H)
Per quale tipo di dispositivi bisogna specificare l\u2019indirizzo in questo modo?

\u2022
Per i dispositivi di I/O coinvolti nelle varie operazioni (ad es. una centralina ABS1, un
pulsante, un componente 244, un componente 373);
\u2022
per il PIC (che dovr\u00e0 essere anche programmato a parte);
\u2022
per tutti quei dispositivi, insomma, che sono attaccati al bus dati e che hanno necessit\u00e0 di
essere attivati/disattivati (o comunque interfacciati).

NOTA: In genere si utilizza EQU per indicare l\u2019indirizzo o la locazione di un dispositivo di I/O, ma non il dato che tale dispositivo pu\u00f2 fornire o l\u2019informazione che esso stesso deve gestire: per quello bisogner\u00e0 definire una variabile (cio\u00e8 un tipo \u201cdato\u201d, v. di seguito).

EQU pu\u00f2 anche utilizzato anche per definire le parole di comando da dare al PIC (le OCW e le
ICW):
es. MASKING EQU FFH ; tutte le interruzioni sono mascherate

8259_OCW1 EQU C1H ; alla locazione C1H \u00e8 possibile \u201cscrivere\u201d OCW1
\u2026.
MOV

AL, FFH
; scriviamo in OCW1 passando per un registro
OUT
8259_OCW1, AL
Bisogner\u00e0 invece utilizzare una sintassi del genere
es. BUF_IN
DB 1024
LedFlag
DB 1
(il numero che segue DB \u00e8 una lunghezza in byte2)
per le variabili o i dati, ad es.:
\u2022
un flag di fine routine;
\u2022
un dato caratteristico del problema o, comunque, un dato comunicato da (o da comunicare
a) un dispositivo di I/O (ad es. la velocit\u00e0 angolare di una ruota1, il valore di un display3);
\u2022
un buffer o un vettore che dev\u2019essere riempito (ad es. in una comunicazione seriale4);
\u2022
un puntatore che pu\u00f2 cambiare valore nel corso dell\u2019esecuzione del programma;
\u2022
un indice (che di sua natura \u00e8 qualcosa di variabile).
Si noti che quando nel programma principale si dovranno richiamare le costanti (definite con
EQU) o le variabili (definite con DB, DW, etc\u2026):
1 Vedi compito del 7 aprile 2007.
2 Dovremo scegliere 1 se abbiamo un byte, 2 se abbiamo una word (in alternativa si poteva scrivere WORD DW 1, in quantoDW
ritaglia uno spazio di memoria in word), 1024 se abbiamo un buffer di 1 KB, etc\u2026 Se dobbiamo specificareN kilobytes conviene
utilizzare la notazioneN*1024 dopo DB.
3 Vedi compito del 7 dicembre 2006.
4 Vedi compito dell\u201911 gennaio 2007.
\u2022
dovremo richiudere fra parentesi quadre [ \u2026 ] le variabili,
ad es. Index DB 1
\u2026MOV[Index], SI
\u2026
\u2022
scrivere cos\u00ec come sono (senza parentesi) le costanti,
ad es. InterfacciaParallelo EQU 80H
\u2026IN AL, InterfacciaParallelo
\u2026

Par superfluo ricordare che, se dobbiamo allocare spazio per una variabile, dobbiamo essere sicuri che tale spazio sia sufficiente. Ad es. se vogliamo memorizzare da qualche parte l\u2019informazione riguardate i secondi da visualizzare sul display di un orologio, un byte sar\u00e0 sufficiente (i secondi vanno da 0 a 59 e con 8 bit riusciamo a fare tutto).

2. Il PIC (8259)

Il PIC, nome in codice 8259, \u00e8 un componente della famiglia Intel che si occupa di gestire il meccanismo delle interruzioni: esso \u00e8 in grado di gestire fino a 8 richieste di interruzione, corrispondenti ai piedini (IR0\u2026 IR7). Ad essi andranno a finire i segnali di quei dispositivi (pulsanti, clock, etc..) che devono essere gestiti ad interrupt.

Alcune caratteristiche:
\u2022 pu\u00f2 essere utilizzato singolarmente o in cascata (soluzione

avanzata che non tratteremo): se preso da solo gestisce fino a 8 interruzioni mentre nella configurazione pi\u00f9 complicata pu\u00f2 gestirne fino a 64;

\u2022
si tratta di un dispositivo programmabile: possiamo cio\u00e8 variarne opportunamente il
comportamento;
\u2022
si interfaccia sia col bus dati (8 bit) che con quello degli indirizzi (1 bit);
\u2022
\u00e8 un dispositivobif ron te (rivolto sia verso il processore che verso i dispositivi periferici);
\u2022
il nocciolo del dispositivo ruota attorno ad alcuni registri ad 8 bit:
o
IMR (Interrupt Mask Register): permette di mascherare le richieste di interruzione
provenienti da uno o pi\u00f9 dispositivi (0 = non mascherato, 1 = mascherato);
o
IRR (Interrupt Request
Register) tiene traccia

dei dispositivi che hanno fatto una richiesta e che non sono riusciti ancora ad averne riscontro;

o
ISR (Interrupt Service
Register): tiene traccia di quali sono le procedure di servizio in corso (se la richiesta i-
esima viene servita viene resettato il bit corrispondente in IRR e settato quello in
ISR).
SEQUENZA DI INTERRUZIONE:
1.una richiesta arriva all\u20198259;
2. viene posto ad 1 il corrispondente bit del registro IRR per segnalare che c\u2019\u00e8 stata una

richiesta;
3. si valuta se la richiesta dev\u2019essere eseguita o meno controllando l\u2019IMR;
4. viene avanzata la richiesta di interruzione al processore (attraverso INT);

5. se IF vale 1 il processore conferma la ricezione della richiesta e invia un primo
segnale di INTA;
6. l\u20198259 fa la cernita di quali sono i dispositivi in attesa di essere serviti e seleziona

quello con priorit\u00e0 pi\u00f9 alta;
7. forza ad 1 il corrisponde bit in ISR;
8. forza a 0 il corrispondente bit in IIR;
9. il processore invia un secondo impulso su INTA;

10. l\u20198259 scrive sul data bus il codice del dispositivo che ha fatto richiesta di
interruzione;
11. il processore riceve il messaggio e attiva la procedura di servizio dell\u2019interruzione.

L\u20198259 \u00e8 in grado di riconoscere, se adeguatamente programmato, quali siano le richieste pi\u00f9 urgenti (cio\u00e8 pi\u00f9 prioritarie): didefault, le richieste che giungono su IR0 sono le pi\u00f9 prioritarie e quelle su IR7 le meno prioritarie (maggiore \u00e8i e minore \u00e8 la priorit\u00e0). Nella modalit\u00e0 di funzionamento dettaFully nested mode, un interrupt pi\u00f9 prioritario pu\u00f2 sempre interrompere l\u2019esecuzione della procedura di servizio di un interrupt meno prioritario, mentre una richiesta su una linea IRi a minore priorit\u00e0 non viene servita fino al termine delle procedure di servizio associate alle precedenti (e pi\u00f9 prioritarie) richieste.

Il riconoscimento delle richieste agli IRi (cio\u00e8 ai piedini) pu\u00f2 avvenire a livello oppure sul fronte di
salita:
\u2022

se rileviamo afro nte l\u2019interrupt viene generato a seguito di una transizione di un ingresso da 0 a 1. Viene quindi generato un interrupt in corrispondenza di ogni frontepositivo di un segnale d\u2019ingresso IRi;

\u2022

se rileviamo al iv ello l\u2019interrupt viene riconosciuto se viene generato un livello logico alto di un ingresso Iri. A differenza della gestione a fronte, se il valore di IRi non si porta a valore logico basso prima dell\u2019invio del comando EOI verr\u00e0 generato un altro interrupt.

Si noti che, affinch\u00e9 l\u2019interrupt sia riconosciuto come tale, occorre che IRi permanga al valore logico 1 almeno fino al primo fronte negativo del segnale INTA*: al primo abbassamento di quest\u2019ultimo, infatti, il PIC congela lo stato delle richieste e non ne accetta pi\u00f9; sul secondo abbassamento, invece, viene emesso l\u2019interrupt type associato alla richiesta pi\u00f9 prioritaria attiva.

3. Programmazione del PIC
La programmazione del PIC passa attraverso la definizione di alcuni comandi di inizializzazione
inviati dal processore. In particolare, vengono spedite:
\u2022

le ICWs (Initialization Command Words): sono inviate all\u2019inizializzazione. L\u2019ordine delle ICW \u00e8 fisso e c\u2019\u00e8 una ben precisa sequenza con la quale devono essere inviate (l\u2019ordine \u00e8 prestabilito e immutabile).

o

ICW15 ha alcuni bit notevoli: D3 (LTIM) specifica se il PIC dev\u2019essere sensibile a fronte [= 0] o a livello [=1]; D1 (SNGL) specifica se il dispositivo \u00e8 in cascata con dispositivi analoghi [=0] o meno [=1]; D0 (IC4) serve per far capire all\u20198259 se ci sar\u00e0 una ICW4.

5 L\u20198259 ha un unico bit d\u2019indirizzo A0; la sequenza ICW1 \u00e8 riconoscibile rispetto a tutte le altre perch\u00e9 ha D4 = 1.

Activity (26)

You've already reviewed this. Edit your review.
1 thousand reads
1 hundred reads
the4roses liked this
Marco Bagnolini liked this
Marco Bagnolini liked this
sonotuttiusati liked this
cava_ita liked this
fofinuzza liked this
giacomo19 liked this
Adi liked this

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->