Prévia do material em texto
* * Prof. Remy Eskinazi Sistemas Microprocessados Interrupções no 8051 Prof. Henrique Figueirôa IFPE – Recife * * Prof. Remy Eskinazi Bibliografia Interrupções no 8051 – prof. Remy Eskinazi, MSc UPE – Politécnica ( material em ppt ) Microcontrolador 8051 – prof. José Wilson Lima Nerys Universidade Federal de Góias – Escola de Engenharia Elétrica e de Computação ( material em pdf ) Aplicações Práticas do Microcontrolador 8051 eng.Vidal Pereira da Silva Jr. – Editora Érica – 12a edição * * Prof. Remy Eskinazi Dispositivos de Entrada e Saída Entrada : teclado, mouse, scanners, leitores óticos e magnéticos(disco rígido), cameras de vídeo, microfone, sensores, placas de rede, etc. Saída : impressoras, monitores de vídeo, plotters, atuadores, placas de rede, placa de som, etc. A comunicação se dá através de interfaces que compatibilizam diferenças elétricas, de velocidade, do formato da informação, etc. * * Prof. Remy Eskinazi Exemplo de Comunicação Recepção dos dados do Teclado CPU Interface Dado Paralelo Solicitação de acesso Dado Serial Endereço Dado Serial Dado Paralelo Endereço * * Prof. Remy Eskinazi O que é uma Interrupção? Interrupção, temporária, do processo atual da CPU para o atendimento a um outro processo, interno ou externo, num dado instante. No 8051 : a) Atendimento aos periféricos (I/O). b) Overflow nos Temporizadores/ Contadores internos. c) Eventos da transmissão serial. * * Prof. Remy Eskinazi O que é uma Interrupção? MOV A, #0FFh INC DPTR MOV R1, 0 MOV R2, 1 MOV IE, #0 SETB 0 Evento externo Programa principal : Sub-rotina de atendimento à Interrupção : * * Prof. Remy Eskinazi Outro exemplo … mov a, #2 mov b, #16 mul ab mov R0, a mov R1, b mov a, #12 mov b, #20 mul ab add a, R0 mov R0, a mov a, R1 addc a, b mov R1, a end Program Execution interrupt ISR: orl P1MDIN, #40h orl P1MDOUT,#40h setb P1.6 here: sjmp here cpl P1.6 reti return * * Prof. Remy Eskinazi Características das Interrupções Fontes de Interrupções – Agentes que produzem as Interrupções; Vetorização – Cada interrupção tem um vetor (endereço) onde começa a sub-rotina de atendimento; Mascaramento – Cada interrupção pode ser habilitada (reconhecida) ou não, em um dado momento; Priorização – As interrupções podem ter um grau de prioridade de forma a serem “escalonáveis” Modo de acionamento – Maneira como as interrupções são acionadas * * Prof. Remy Eskinazi Fontes de Interrupções ( 8051 ) 1- Por Hardware Externo : Interrupção externa 0 (INTO\) – pino 12 (P3.2) Interrupção externa 1 (INT1\) – pino 13 (P3.3) Interrupção via canal Serial(Pinos 10 e 11 ou P3.0 e P3.1) 2- Por Hardware Interno : Interrupção através do Timer/Counter 0 – TIMER0 Interrupção através do Timer/Counter 1 – TIMER1 Agentes que provocam as Interrupções : * * Prof. Remy Eskinazi Seqüência de Interrupção e Vetorização Se um pedido de interrupção ocorrer E o flag da interrupção estiver habilitada E o flag de habilitação global estiver habiltado E na seqüência correta das prioridades, então: O PC atual é colocado na pilha; A execução do programa continua no vetor da interrupção (PC (vetor) ); Quando a instrução RETI é encontrada o valor no topo da pilha é carregado no PC e a execução retorna para o ponto anterior a interrupção * * Prof. Remy Eskinazi Mapa de Vetores das Interrupções no 8051 Região para a subrotina de INT0\ (com 8 bytes) * * Prof. Remy Eskinazi Registradores que comandam as Interrupções no 8051 (*) Mascaramento : Habilita ou não as Interrupções (*)Todos são Registradores de Funções Especiais da RAM. Priorização : Define grau de prioridade entre as Interrupções Modo de Acionamento : Define a forma de identificação do acionamento. * * Prof. Remy Eskinazi Flag de habilitação global Habilita as interrupções para as 5 fontes do 8051 standard Serial Timer 1 External 1 Timer 0 External 0 1 = Habilita 0 = Desabilita IE – Interrupt Enable ( A8h ) Habilitação das Interrupções Mascaramento * * Prof. Remy Eskinazi * * Prof. Remy Eskinazi * * Prof. Remy Eskinazi Prioriza as interrupções para as 5 fontes do 8051 standard Serial Timer 1 External 1 Timer 0 External 0 1 = Alta prioridade 0 = Baixa prioridade IP – Interrupt priority ( B8h ) Interrupções do 8051 Priorização * * Prof. Remy Eskinazi Registradores de Controle das Interrupções Em caso de simultaneidade de solicitação de Interrupção e um mesmo nível de prioridade, prevalecerá a ordem abaixo. * * Prof. Remy Eskinazi TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Controle das interrupções externas Controle dos Timers/Counters Modo acionamento de int Ext0 : “0” – Nível 0 ou “1” – Transição 0 1 Flag de Ext0: “setado” por hardware no ocorrência. Zera após a execução do RETI. Liga / desliga timer 0 Flag de interrupção int timer 0 Liga / desliga timer 1 Flag de interrupção int timer 1 TCON - Timer Control ( 88h ) Interrupções do 8051 Modos de Acionamento Modo acionamento de int Ext1 : “0” – Nível 0 ou “1” – Transição 0 1 Flag de Ext1: “setado” por hardware no ocorrência. Zera após a execução do RETI. * * Prof. Remy Eskinazi * * Prof. Remy Eskinazi * * Prof. Remy Eskinazi * * Prof. Remy Eskinazi Arquitetura interna do Simulador EDSIM51 * * Prof. Remy Eskinazi Circuito para Leitura do Teclado do EDSIM51 O botão AND Enabled deverá estar fechado ( Habilita), possibilitando a geração da Interrupção ( INT1), sempre que uma tecla for pressionada. * * Prof. Remy Eskinazi Circuito para Leitura do Teclado do EDSIM51 * * Prof. Remy Eskinazi Fluxograma da Sub-rotina Leitura de Teclado Chama Sub-rotina Ler_Tecla Acc PORT 0 Aguarda tecla ser liberada INÍCIO S N S N Acc PESO Retorna com código da tecla no Acc N N S S Sub-rotina Ler_Tecla INÍCIO Acc UM SHIFT PARA ESQUERDA PORT 0 Acc * * Prof. Remy Eskinazi ;*********** Programa Teclado *********** ; Este programa faz a Leitura de um teclado matricial de 12 teclas ligadas no Port0 ;obs. : No EDSIM, o teclado tem que estar no Modo Standard e o Update Freq. = 100. peso equ R0 org 0000h ; inicio do programa mov IE,#84h ; habilita só a Interrupção Externa 1 ( INT1\) mov TCON,#00h ; a INT1 será acionada por nível "0". mov p0,#0F0h sjmp $ ; Loop infinito. Aguarda a digitação de alguma tecla. org 0013h ; sub-rotina p/ leitura do teclado (atendimeto a INT1) inicio: mov ie,#00h ; desabilita todas as interrupções. mov p0,#0FEh ; início,envia "0" para linha "0" do teclado (P0.0 = 0) mov a,#00h cont: mov peso,a ; guarda o peso atual lcall ler_tecla ; verifica se houve tecla acionada cjne a,#0FFh,fim1 ; se houve, finaliza mov a, p0 ; restaura no Acc estado atual port0 rl a ; desloca bit 0 a esquerda mov p0,a ; devolve bit deslocado para port0 mov a,peso ; restaura o peso no Acc add a,#03h ; define novo peso sjmp cont fim1: mov R0,a ; preserva o código da tecla acinada. loop: mov p0,#0F0h ; loop para aguardar a liberação da tecla. mov a, p0 cjne a, #0F0h,loop mov a,R0 ; restaura o código da tecla acionada. mov IE,#84h ; rehabilita a interrupção INT1\ reti ; retorno com o código da tecla no Acc. (continua.. ) * * Prof. Remy Eskinazi ;*********** Subrotina tecla ********* ler_tecla: jnb p0.4, cont1 ;testa a coluna 0. jnb p0.5, cont2 ;idem 1 jnb p0.6, cont3 ;idem 2 mov a, #0FFh ;nenhuma tecla na linha atual sjmp fim2 cont1: mov a,peso ;tecla digitada na posição ( coluna 0 x linha atual ) add a,#00h sjmp fim2 cont2: mov a,peso ;idem ( coluna 1 x linha atual ) add a,#01h sjmp fim2 cont3: mova,peso ;idem ( coluna 2 x linha atual ) add a,#02h sjmp fim2 fim2: ret end ; fim de arquivo para compilacao ( continuação ) * * Prof. Remy Eskinazi Expansão das entradas de Interrupções Caso ocorra alguma interrupção, INT0 é acionada e o latch (74LS374) armazena os bits das entradas. Em seguida, basta fazer a leitura do Port 1. * * Prof. Remy Eskinazi Exercícios para aula prática 1- Elaborar um programa, no qual, à medida em que as teclas forem sendo digitadas, os números correspondentes ( já transformados para decimal ) preencha uma tabela de 16 bytes, a partir do endereço 30h. 2- Elaborar um programa que receba 2 números do teclado e execute : a) a soma desses números, caso a tecla “#” seja digitada,em sequencia. b) a multiplicação desses números, caso a tecla “” seja digitada,em sequencia. O resultado da operação, deverá ser apresentado nos Displays. Sendo a dezena apresentada no DISP 3 e a unidade no DISP2. * * Prof. Remy Eskinazi Controle de Processo Industrial ( ver enunciado no próximo slide ) 8051 Port * * Prof. Remy Eskinazi Controle de Processo Industrial Descrição Considere que, no esquema anterior, tenhamos um determinado processo de produção, o qual funciona da seguinte forma : a) Inicialmente, as 2 eletroválvulas A e B deveráo abrir, simultaneamente, para permitir a entradas dos insumos A e B na Caldeira. Esta etapa dura 10 segundos. b) Em seguida, as eletro-válvulas fecham e o motor é acionado por 30 segundos. c) Em seguida, com o motor, ainda, girando por mais 5 segundos, apenas, o insumo A deverá ser inserido. d) Na sequencia, as eletro-válvula A e B fecham, o motor é desligado e, apenas, a eletro-válvula C deverá ser aberta, durante 20 segundos, para que o produto final que se encontra na Caldeira seja escoado. Em seguida, um novo ciclo de produção deverá ser iniciado. O Sensor de Temperatura (ST) do Motor, em caso de superaquecimento do mesmo, muda o seu bit único de saída de “0” para “1”. a) Defina de que forma este Sensor será conectado ao 8051, para que seja verificada a ocorrência de superaquecimento do Motor. b) Em caso de superaquecimento, deveremos ter : 1- A paralisação do atual processo de produção, com o imediato desligamento do Motor e fechamento das eletro-válvulas A e B. 2- O escoamento total da produto atual que se encontra na Caldeira, com a abertura da eletro-válvula C por um período de 20 segundos. 3- Assim que o sensor ST voltar para “0”, significando que o Motor não mais se encontra superaquecido, o processo de produção deverá ser, imediatamente, re-iniciado. Elabore o projeto completo : Fluxograma, Hardware (conexões elétricas ) e Software. Utilizar switchs(Sensor) e LEDs(eletro – válvulas) no EDSIM.