1. 8051 - interrupção
TRANSCRIPT
Microcontroladores - Prof: Demantova
1. 8051 - Interrupção
1
Def.: Consiste de um evento assíncrono que faz com que ofluxo de um programa seja desviado para uma Rotina deTratamento de Interrupção (ISR).
Faz uso da estrutura de controle da pilha peloprocessador para armazenar automaticamente o endereço deretorno, assim como para recuperá-lo quando do final dotratamento.
O evento assíncrono é gerado por um hardwareexterno ou interno ao 8051. O endereço da ISR é chamadoVetor de Interrupção.
Microcontroladores - Prof: Demantova
Inte
rru
pção
Programa
Principal
Vetor de
Interrupção
PC
Rotina
Tratamento
Interrupção
2. Fluxo da Interrupção
2
Microcontroladores - Prof: Demantova
Programa principal
Programa principal
Requisição da interrupção
Seta bit de sinalização
Atendimento da Interrupção
Reseta bit de sinalização
2. Fluxo da Interrupção
3
Microcontroladores - Prof: Demantova
• PC pilha
• Vetor de Interrupção PC
• Tratamento da Interrupção
• RETI
• Pilha PC
• A preservação do conteúdo dos registradores fica por conta do programador
4
2. Fluxo da Interrupção
Microcontroladores - Prof: Demantova
Fonte Características VetorINT0 Externa, Pino P3.2 0003h
INT1 Externa, Pino P3.3 0013h
T/C0 Interna T/C0 000Bh
T/C1 Interna T/C1 001Bh
Serial Serial 0023h
5
3. Fontes de Interrupção - 8051
Microcontroladores - Prof: Demantova 6
3. Fontes de Interrupção - 8051
; INTERRUPCOES
;******************************
ORG 0000h
JMP INICIO
ORG 0003h
JMP ISREX0 ; Ext0
ORG 000BH
JMP ISRT0 ;Timer0
ORG 0013H
JMP ISREX1 ; Ext1
ORG 001BH
JMP ISRT1 ;Timer1
ORG 0023H
JMP ISRSER ; Serial
ISREX0: .........
.........
RETI
ISRRT0: .........
.........
RETI
ISREX1: .........
.........
RETI
ISRRT1: .........
.........
RET
ISRSER: .........
.........
RETI
INICIO: .........
Microcontroladores - Prof: Demantova
Registro de Habilitação de Interrupção - IE
EX1 ET0 EX0EA --- --- ES ET1IE
habilita
todos
habilita
int. serial
habilita
int. T/C1
habilita
INT1
habilita
int. T/C0
habilita
INT0
7
4. Controle de Habilitação de Interrupções - 8051
• Bit ← 1 – Habilita Bit ← 0 – Desabilita• Para habilitar uma interrupção EA e seu enable individual
devem estar ativados simultaneamente.
Microcontroladores - Prof: Demantova
• Sensibilidade a borda de descida:–Terminais amostrados a cada 12 ciclos de clock. –Interrupção ocorre ao ser detectada uma borda
de descida entre duas amostragens consecutivas.• Sensibilidade a nível lógico baixo:
–Terminais amostrados ao final de cada instrução executada.
–Interrupção ocorre ao ser detectado nível lógico baixo
8
5. Interrupções - Externas
Microcontroladores - Prof: Demantova
• Pinos /INT0 e /INT1
– Borda ou nível
– Bits IE1 e IE0 do TCON = bits de sinalização
Registro Timer Control - TCON
IT1 IE0 IT0IE1TCON
IEn (HW): 1 quando INTn ↓
0 quand a int. é atendida
ITn: 1 borda
0 nível
9
5. Interrupções - Externas
Microcontroladores - Prof: Demantova
Pooling: INT0 → T/C0 → INT1 → T/C1 → Serial
PX1 PT0 PX0--- --- --- PS PT1IP
1- coloca em alta prioridade
0 – prioridade normal
Registro de Controle de Nível Prioridade
de Interrupção - IP
Serial T/C1 INT1 T/C0 INT0
10
6. Prioridades de Interrupção - 8051
Microcontroladores - Prof: Demantova
• Apenas uma interrupção de maior nível de prioridade (IP) interrompe outra de menor prioridade enquanto esta estiver sendo tratada (ISR), seja sensível a nível ou borda.
• Interrupções de mesmo nível de prioridade só serão tratadas após a ISR atual terminar. Se for sensível a nível ainda deve estar ativo o pedido, caso sensível a borda não precisa estar.
• A definição de nível de prioridade e pooling definem o tratamento de interrupções pedidas simultaneamente.
• O uso de reti faz com que a lógica de tratamento de interrupções seja restabelecida, o uso de ret comum faz com que não mais sejam tratados pedidos de interrupção.
11
6. 1 CONSIDERAÇÕES
Microcontroladores - Prof: Demantova 12
7. Exemplo – Interrupção Externa (INT 0)
Rótulo Instrução/Diretiva ComentárioORG 0000H ; resetJMP Inicio ; salta endereço do vetor interrupção da INT 0ORG 0003h ; vetor interrupção da INT 0LMP ISR0 ; desvia para a Rotina de Serviço de Interrupção
; Inicialização dos registradores de controleInicio: MOV IE,#00000001B ; inicializa registrador IE com EA = 1 e EX0 = 1
MOV TCON,#1 ; programa INT 0 sens. a borda de descida – IT0 = 1SETB EA ; habilita interrupções
; Programa principalfaz_algo: instrução 1
instrução 2
instrução nJMP faz_algo
; início do programa principal; ...
; ...; programa faz_algo enquanto aguarda interrupção
; Rotina de serviço da interrupção (ISR – Interrupt Service Routine)ISR0: instrução 1
instrução 2
instrução nRETI
; início da ISR; ...
; ...; retorna da interrupção
Microcontroladores - Prof: Demantova 13
7. Exercício – Interrupção Externa
1) Faça um programa que comute dois LEDs (LED0 – P1.0 eLED1 – P1.1). Uma chave é ligada no pino INT0:[CPU-82s59A \ projeto-EX_int e int_a.asm]
a) Primeiro faça que a interrupção seja sensível a borda edepois sensível a nível. Tire as conclusões quanto adiferença no funcionamento.[idem alterando (;)]
b) Repita o programa colocando duas chaves, uma em INT0 eoutra em INT1, ambas a borda. Quatro leds devem serligados em P1. Quando INT0 for gerado o nibble deve serincrementado, enquanto INT1 deve decrementá-lo.[CPU-82s59B\ projeto-EX_int e int_b.asm]
Microcontroladores - Prof: Demantova 14
7. Exercício – Interrupção Externa
c) Repita o item (b) colocando uma única chave em INT0 eINT1, para gerá-los simultaneamente. Execute o programae tire as conclusões.[CPU-82s59C \ projeto-EX_int e int_c.asm] (Proteus e Keil)
d) Altere o programa anterior colocando INT1 em altaprioridade e INT0 em baixa prioridade. Execute o programae tire as conclusões.[CPU-82s59C \ projeto-EX_int e int_c.asm] (Keil) (-;;)