Você está na página 1de 7

MCS51

Módulo 4 Prof. Celso

INTERRUPÇÕES

O 8051 possui 5 tipos de interrupções:


Tipo Pino Endereço
- 2 externas Externa 0 INT0 P3.2 03h
Externa 1 INT1 P3.3 13h
- 2 timers Timer 0 T0 P3.4 0Bh
Timer 1 T1 P3.5 1Bh
- 1 serial RXD RI P3.0 23h
TXD TI P3.1 23h

INTERRUPÇÕES

As interrupções têm
prioridades sobre a
execução de um programa.
Se houver um pedido de
interrupção à execução do
programa é interrompida
para atendimento da
interrupção. Assim que a
interrupção for atendida, a
execução do programa
continua de onde parou.
Uma das vantagens
das interrupções é não ter
que ficar verificando o
estado do pino de entrada.
Uma aplicação para interrupção é o botão de emergência de uma máquina
qualquer. Assim que o botão for acionado, a máquina deve ser colocada em estado de
segurança independente do estado do processo.

REGISTROS DE CONTROLE DAS INTERRUPÇÕES

Para controle das interrupções existem 3 registros: IE, IP e TCON.

IE (Interrupt Enable) Î para habilitar as interrupções 1 – habilita


0 – desabilita

IE =
EA - - ES ET1 EX1 ET0 EX0
todas externa 0
serial timer/counter 0
timer/counter 1 externa 1

53
MCS51
Módulo 4 Prof. Celso

IP (Interrupt Priority) Î define prioridades 1 – alta prioridade


0 – baixa prioridade

A prioridade das interrupções é EX0, ET0, EX1, ET1 e ES. Isto quer dizer se
por acaso elas acontecerem ao mesmo tempo, a primeira interrupção a ser atendida
será a externa 0, depois o timer 0 e assim por diante até a interrupção serial.
Através do registro IP, as prioridades podem ser alteradas.

default
IP =
- - - PS PT1 PX1 PT0 PX0
externa 0
serial timer/counter 0
timer/counter 1 externa 1

TCON (Timer CONtrol) Î configuração da interrupção e do timer

Metade deste registro é usado para configurar o timer/couters e a outra metade


é usada para configurar as interrupções externas:

TIMERS/COUTERS INTERRUPÇÕES

TCON =
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
overflow borda/nível
timer 1 externa 0
run/stop flag da interrupção
timer 1 externa 0
overflow borda/nível
timer 0 externa 1
run/stop flag da interrupção
timer 0 externa 1

TFx Î flag de overflow TFx = 1 Î houve overflow do contador


TFx = 0 Î não houve overflow

TRx Î liga/ desliga contador/temporizador TRx = 1 Î liga contador/temporizador


TRx = 0 Î desliga contador/tempor.

ITx Î modo de operação da interrupção ITx = 1 Î atende na borda de descida


ITx = 0 Î atende no nível baixo

IEx Î flag da interrupção IEx = 1 Î interrupção detectada


IEx =0 Î interrupção não foi detectada

O flag IEx é setado pelo hardware interno e também é apagado por hardware
caso o modo de operação esteja configurado para borda de descida. Caso seja

54
MCS51
Módulo 4 Prof. Celso

utilizado o modo de operação nível, o flag IEx deve ser apagado por software (CLR
IEx).

Exercício 1) Programa os registros IE, IP e TCON para:


- interrupção externa 1 (INT1) Î máxima prioridade, sensível a nível
- timer/counter 1 Î segunda prioridade
- externa 0 (INT0) Î terceira prioridade, sensível a borda de descida
- serial e timer/counter 0 Î desabilitadas
Valor Hexa
IE EA - - ES ET1 EX1 ET0 EX0 =

- - - PS PT1 PX1 PT0 PX0


IP =

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0


TCON =

MOV IE,
MOV IP,
MOV TCON,

Exercício 2) Programa os registros IE, IP e TCON para:


- serial Î máxima prioridade
- timer/counter 0 Î segunda prioridade
- externa 1 (INT1) Î terceira prioridade, sensível a nível
- demais interrupções desabilitadas

Valor Hexa
IE EA - - ES ET1 EX1 ET0 EX0 =

IP - - - PS PT1 PX1 PT0 PX0 =

TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 =

MOV IE,
MOV IP,
MOV TCON,

55
MCS51
Módulo 4 Prof. Celso

Exercício 3) Utilizando o diagrama abaixo, faça um programa que mantenha 1 dos


leds aceso e cada vez que a chave ch for pressionada troque o led aceso.

Utilizar Interrupção.

-verificar o endereço da
da interrupção.
- no endereço da interrupção
dê um salto para a rotina
que irá tratar a interrupção
- no início do programa saltar
o endereço da interrupção
- fazer configurações iniciais e
configurar interrupção (IE e
TCON)
- fazer a troca do led aceso na
rotina de interrupção.

________ _____________ ; __________________________________________


________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________

56
MCS51
Módulo 4 Prof. Celso

Exercício 4) Faça um programa em assembler para controlar uma linha de


produção. O programa deve separar de um lote de 100 peças, as peças 4, 50 e 70
para inspeção. Considere que um sensor infra-vermelho seja utilizado para contar
as peças e que o mesmo está conectado no bit 2 da porta P3 e que o bit 4 da porta
P1 seja utilizado para acionar uma solenóide que separe as peças para inspeção.
Fazer o programa utilizando interrupção.

________ _____________ ; __________________________________________


________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________
________ _____________ ; __________________________________________

57
MCS51
Módulo 4 Prof. Celso

Exercício 5) Um estacionamento possui 100 vagas e possui uma porta de entrada e


uma porta de saída. Fazer um programa para automatizar o estacionamento
considerando o esquema abaixo (utilize interrupções na porta de entrada e saída):

considere:
Sensor A = 1 Î carro querendo entrar Sensor E = 1 Î carro querendo sair
Sensor B = 1 Î carro entrando Sensor F = 1Î carro saindo
Fim de curso C = 1 Î porta aberta FC G = 1 Î porta aberta (saída)
Fim de curso D = 1 Î porta fechada FC H = 1 Î porta fechada (saída)

Motores M1A/M2A M1B/M2B Motor


0 0 motor travado
0 1 gira sentido anti-horário
1 0 gira sentido horário
1 1 motor livre

Funcionamento: se houver um carro querendo entrar (sensor A=1), o sistema deve


abrir a porta de entrada se:
- houver vagas disponíveis,
- ou caso não exista vaga, houver um carro querendo sair.
Para abrir a porta o motor deve ser acionado no sentido anti-horário e deve
permanecer ligado até atingir o fim de curso C, quando então deve ser desligado.
Deve-se esperar o carro entrar verificando o sensor B que deverá ir de 0 para 1 e
novamente para 0, onde então o motor é ligado em sentido horário até fechar a
porta (FC D=1). A porta de saída tem funcionamento idêntico.

58
MCS51
Módulo 4 Prof. Celso

Exercício 6) Uma máquina de cortar chapas de alumínio possui 2 sensores (A e B)


para indicar quando a chapa está em
posição de corte. Quando os sensores
de posição são ativados, a máquina
deve parar o motor de alimentação
das chapas e acionar o motor DC da
lâmina para o corte da chapa. Um
sensor C é utilizado para indicar que
a chapa foi cortada, devendo então o
motor ser revertido para subir a
lâmina de corte até acionar o sensor
D, após isso é acionado novamente o
motor de alimentação das chapas.
Caso somente um dos sensores (A ou B) seja ativado, isto indica que a
chapa é irregular ou não está bem posicionada, devendo ser enviada para fora do
sistema sem realizar o corte e deve também soar um alarme.
O sistema deve possuir:
- 1 botão para iniciar o processo (start)
- 1 botão para término de serviço (stop). Quando pressionado para o processo após
um ciclo do processo.
- 1 botão de emergência. Quando pressionado para imediatamente o processo
colocando a máquina em segurança. O sistema neste caso deve ser reinicializado.

59

Você também pode gostar