| Interrupt
|
||||||||||||||
L'interrupt NMI non è mascherabile via software (è sempre abilitato) e può interrompere in qualsiasi momento sia il programma principale che qualsiasi altro gestore di interrupt. Gli altri 4 interrupt sono mascherabili e non possono interrompersi a vicenda, se avviene più di una richiesta di interrupt le richieste rimangono pendenti e vengono servite appena possibile in accordo con l'ordine di priorità. L'NMI è sensibile al fronte di discesa (falling edge), se avviene un altro fronte di discesa mentre è in esecuzione il gestore dell'NMI l'evento viene perso. Gli interrupt mascherabili, oltre che essere abilitati sulle singole periferiche (ADC, porte di I/O, timer) richiedono un'abilitazione globale gerarchicamente superiore tramite l' Interrupt Option Register: IOR
GEN è il bit di abilitazione/disabilitazione globale degli interrupt mascherabili, se è a 1 gli interrupt sono abilitati, se è a 0 sono disabilitati (anche se sono abilitati sulle singole periferiche). LES stabilisce quale deve essere l'evento da considerare come interrupt per la porta A (#1). Se è 0 i pin della porta A abilitati a generare interrupt sono sensibili ai fronti di discesa (falling edge). Se è 1 invece sono "level sensitive", l'interrupt viene cioè generato dalla presenza di un livello 0. ESB stabilisce quale deve essere l'evento da considerare come interrupt per le porte B e C (#2). Se è 0 i pin abilitati a generare interrupt sono sensibili ai fronti di discesa (falling edge). Se è 1 invece sono sensibili ai fronti di salita (rising edge). Per poter gestire gli interrupt è necessario definire i vettori di interrupt negli ultimi 16 bytes della EPROM/ROM (come specificato nella pagina delle mappe di memoria). Una possibile definizione completa dei vettori è la seguente: ;------------------------------------------------------------
Se un interrupt non è usato al posto di JP xyz si può mettere la coppia di istruzioni NOP e RETI, per esempio se si vuole usare solo l'interrupt del timer i vettori precedenti possono essere anche scritti nel seguente modo:
.ORG 0FF2H
Pagina realizzata da Claudio Fin - Ultimo aggiornamento 5-11-1999 |