14
Microcontroladores - Prof: Demantova 1. 8051 - Interrupção 1 Def.: Consiste de um evento assíncrono que faz com que o fluxo de um programa seja desviado para uma Rotina de Tratamento de Interrupção (ISR). Faz uso da estrutura de controle da pilha pelo processador para armazenar automaticamente o endereço de retorno, assim como para recuperá-lo quando do final do tratamento. O evento assíncrono é gerado por um hardware externo ou interno ao 8051. O endereço da ISR é chamado Vetor de Interrupção.

1. 8051 - Interrupção

  • Upload
    others

  • View
    11

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 1. 8051 - Interrupção

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.

Page 2: 1. 8051 - 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

Page 3: 1. 8051 - Interrupção

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

Page 4: 1. 8051 - Interrupção

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

Page 5: 1. 8051 - 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

Page 6: 1. 8051 - Interrupção

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: .........

Page 7: 1. 8051 - Interrupção

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.

Page 8: 1. 8051 - Interrupção

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

Page 9: 1. 8051 - Interrupção

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

Page 10: 1. 8051 - Interrupção

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

Page 11: 1. 8051 - Interrupção

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

Page 12: 1. 8051 - Interrupção

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

Page 13: 1. 8051 - 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]

Page 14: 1. 8051 - Interrupção

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) (-;;)