Interrupções - asm Uma interrupção provoca um desvio temporário (semelhante a uma chamada de subrotina) provocado por um evento interno ou externo. Ao final da rotina de atendimento da interrupção, com a instrução RETI, há o retorno do programa para a posição original (exceto interrupção de RESET). Tabela de interrupções Interrupção RESET ̅̅̅̅̅̅̅ INT0 T/C0 ̅̅̅̅̅̅̅ INT1 T/C1 Serial T/C2 Endereço 0000H 0003H 000BH 0013H 001BH 0023H 002BH Int/Ext Externa – pino 9 Externa – P3.2 Interna – TF0 Externa – P3.3 Interna – TF1 Interna TI ou RI Interna – TF2 Controle Não mascarável IE, IP, TCON IE, IP IE, IP, TCON IE, IP IE, IP IE, IP Palavras de Controle IE – Interrupt Enable EA - ET2 ES ET1 EX1 ET0 EX0 PX1 PT0 PX0 IT1 IE0 IT0 1 – Habilita 0 – Desabilita Exemplo: Para habilitar somente T/C0, IE = 82H IP – Interrupt Priority - - PT2 PS PT1 1 – Alta prioridade 0 – Baixa prioridade Exemplo: Para dar alta prioridade para T/C1, IP = 08H TCON – Timer Control TF1 TR1 TF0 IT = 0 – sensível a nível lógico 0 IE = 1 - sinaliza interrupção pendente TR0 - IE1 1 – sensível a borda de descida Exemplo: Caso utilize INT0 , realizar as instruções: SETB IT0 CLR IE0 Exemplo de estrutura LEDS . . . EQU P0 ORG 0000H LJMP INICIO ORG 0003H LJMP INT0 ORG 000BH LJMP TIMER0 ORG 0013H LJMP INT1 ORG 001BH LJMP TIMER1 ORG 0023H LJMP SERIAL ORG 002BH LJMP TIMER2 INICIO: LOOP: ORG 0030H MOV SP,#3FH MOV LEDS,#00H . MOV IE,#XXH . . . LJMP LOOP TIMER0: INT0: PUSH ACC PUSH PSW . . . POP PSW POP ACC RETI . . RETI ; SALVA REG A NA PILHA ; SALVA FLAGS NA PILHA ; RESTAURA FLAGS ; RESTAURA REG A