Nei PIC16F, quindi, qualunque sorgente di interrupt porta il program counter ad una unica routine. Ma come discriminare un interrupt da un altro? Come si fa a capire quale sia stata la causa scatenante l'interrupt? Si va ad interrogare i bit di interrupt flag relativi agli interrupt che sono stati abilitati nel codice sorgente: quando si trova un IF (interrupt flag) a valore logico alto, allora BINGO! Lo si resetta e si eseguono le operazioni che è necessario svolgere.
Quindi, per esempio, nel main() si abilitano alcuni interrupt:
- Codice: Seleziona tutto
void main (void)
{
..............
..............
..............
T0IE = 1;
TMR1IE;
INTIE = 1;
..............
..............
..............
}
Poi, la routine di interrupt gestisce i vari casi:
- Codice: Seleziona tutto
void interrupt InterruptServiceRoutines (void)
{
if (T0IF)
{
T0IF = 0;
...
...
...
}
if (TMR1IF)
{
TMR1IF = 0;
...
...
...
}
if (TMR2IF)
{
TMR2IF = 0;
...
...
...
}
}
Spero di aver aiutato a fugare qualche dubbio.
Ciao.
Paolo.

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)







