Interrupções - asm Uma interrupção provoca um desvio temporário

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