Baixe o app para aproveitar ainda mais
Prévia do material em texto
Módulo 4 Prof. Celso 53 MCS51 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 = todas externa 0 serial timer/counter 0 timer/counter 1 externa 1 EA - - ES ET1 EX1 ET0 EX0 Módulo 4 Prof. Celso 54 MCS51 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 = externa 0 serial timer/counter 0 timer/counter 1 externa 1 - - - PS PT1 PX1 PT0 PX0 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 = 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 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 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 Módulo 4 Prof. Celso 55 MCS51 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 ET1 EX1 ET0 EX0 IP = - - ES TCON = - - - PS PT1 PX1 PT0 PX0 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 = TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 IP = EA - - ES ET1 EX1 ET0 EX0 TCON = - - - PS PT1 PX1 PT0 PX0 MOV IE, MOV IP, MOV TCON, TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Módulo 4 Prof. Celso 56 MCS51 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. ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ Módulo 4 Prof. Celso 57 MCS51 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. ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________; __________________________________________ ________ _____________ ; __________________________________________ ________ _____________ ; __________________________________________ Módulo 4 Prof. Celso 58 MCS51 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. Módulo 4 Prof. Celso 59 MCS51 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.
Compartilhar