por Pask » 12 Jan 2007 11:32
Esta é a grande vantagem das interrupções. Uma interrupção (seja ela qual for) ocorre sem que você precise se preocupar com nada. Para que uma interrupção ocorra, deve-se seguir o seguinte roteiro:
1 - A chave geral "GIE" de todas as interrupções deve estar habilitada;
2 - A chave individual da interrupção desejada deve também estar habilitada;
3 - A chave das interrupções dos periféricos deve também estar habilitada;
Daí, é só aguardar dentro do laço MAIN do seu programa. Quando o evento responsável pela ocorrência da interrupção acontecer, o programa é automaticamente desviado para o vetor de interrupção e a dita cuja é tratada.
Por exemplo: a interrupção de TMR0 irá ocorrer todas as vezes que este timer estourar, ou seja, como este é um timer de 8 bits, ela vai acontecer sempre que o timer 0 passar de 255 para 0 na sua contagem automatica não importando se o seu incremento será feito pelo clock interno ou externo.
No caso da interrupção por mudança de estado em RB0 estar habilitada, ela vai ocorrer sempre que o nível lógico neste pino mudar de estado (alto para baixo ou baixo para alto).
Ficou mais claro agora? Espero que sim.
Pask.