|
Il PIC non dispone di un interrupt vettorizzato, dove cioè ad ogni periferica che scatena l'interrupt corrisponde un indirizzo in cui mettere il codice relativo a quel particolare interrupt.
Per gestire interrupt diversi bisogna scrivere il codice all'indirizzo di interrupt ugule per tutti (0x0004) testando i vari flag che specificano quale interrupt è avvenuto ed eventualmente quale pin ha cambiato stato.
Nel caso del F84 ci sono solo 4 possibili interrupt (RB0, Timer0, modifica di POrtB[7:4], scrittura EEPROM completata) e ciascuno setta un flag specifico (Vedi registro INTCON: INTF per RB0, T0IF per il timer, RBIF per PORTB[7:4] e EEIF nel registro EECON1 per la EEProm).
Per ovvi motivi non è possibile interrompere un interrupt con uno a priorità più alta (dato che è uno solo!) e durante l'esecuzione di tutto il codice associato all'interrupt viene disabilitata la possibilità di riceverne un altro; all'uscita dal codice di interrupt con l'istruzione apposita (RETFIE) l'interrupt viene riabilitato.
Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. |