Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lista 02 de Sistemas Microprocessados Baseada nas Aulas 03(Software), 04(Sub-rotinas) e 05 (Interrupções no 8051). Instruções, Diretivas, Sub-rotinas e uso da Pilha no 8051 O que significa Modo de Endereçamento das Instruções ? Quais são os utilizados pelas instruções do 8051 ? Explique cada um deles e cite 2 exemplos para cada. Modo de endereçamento: Define de que forma os dados são referenciados nas Instruções. Imediato: #número Direto: Endereço absoluto (RAM interna) ou Mnemônico Registrador: Dado está no Rn Indireto: Usa só R0, R1 e DPTR para apontar o local Indexado: Utilizado, apenas, pelas instruções MOVC e jump na ROM Bit: Número do bit, label bit ou bit label Quais são os tipos de instruções do 8051? Cite 3 exemplos para cada tipo. Movimentação de Dados: Mov a, #dado; Mov a, direto; Mov a, reg; Mov reg1, reg2 Movimentação com a memória de dados externa: Movx a, @Ri; Mov @dptr, a Movimentação com a memória de programa: Mov dptr, #200h; Movc a, @a+dptr Aritméticas: add a, #dado; add a, direto; addc a, Rn; sub a, #dado Lógicas: anl a, #0fh; orl a, 0fh; crl a; cpl a Manipulação de Bit: Clr c/bit; setb c/bit; cpl c/bit; anl c,bit; orl c, bit; mov c, bit Controle de programa (Saltos e Desvios); Desvios condicionais: jz rel; jnz rel Compara e Salta: CJNE A, #, rel; A, D, rel; R, #, rel; @R,#, rel Decrementa e Salta: DJNZ Rn, rel Subrotinas (Chamadas de Funções): ACALL; LCALL; RET; RETI O que é a Pilha é um sistema microprocessado e qual a sua finalidade? É um registrador utilizado com pilha de endereços de sub-rotina. O endereço-base da Pilha é definido por software no registrador SP (Stack Pointer), deverá estar entre os end. 30h e 7Fh da RAM ( por default em 07h ). Antes do desvio, o endereço da próxima instrução (PC) é guardado na Pilha, o qual será o endereço de retorno, após a execução da sub-rotina. A Pilha , neste caso, guarda o byte superior(PCH) e inferior(PCL) do PC. O que são Diretivas numa linguagem de programação e qual a sua finalidade? Cite quais são as utilizadas no Assembly do 8051 e sua finalidade individual? Pseudo instruções Permitem definir símbolos (Em C: #define PI 3.14) Simplificam o desenvolvimento e as futuras modificações dos programas. É possível dividir o programa em blocos, estabelecendo endereços específicos para cada um deles. Reservar áreas de memória para Variáveis globais, Dados e Tabelas. Não fazem parte do conjunto de instruções (instruction set). Não geram código binário Diretiva ORG (Origin) Através do ORG é possível definir em que endereço (da ROM) o Assembler ( Montador ) colocará : A instrução inicial do programa; Outros trechos do código ( ex.: subrotinas ) Um Dado( de uso geral ) ou uma Tabela. - Um programa poderá conter várias diretivas ORG Diretiva DB (Define Byte) Permite reservar áreas de memória ROM e identifica-las com um NOME. A partir daí, o NOME passa a ser reconhecido com um ENDEREÇO. Informa ao Assembler que o Byte a seguir é uma Dado e não uma Instrução. Sintaxe : <nome> DB <valor inicial> <nome> torna-se um sinônimo para o endereço do 1º byte reservado É possível atribuir valores iniciais e criar Tabelas: V1 DB 200 ; cria um Dado de 1 byte c/ valor 200 V2 DB 1,2,3 ; cria um Dado de 3 bytes (ou uma Tabela) P1 DB “MIC” ; cria uma string, ocupando 3 bytes Memória: 4DH, 49H e 43H (Tabela ASCII ) A escolha desse endereço: pelo programador (uso do ORG) ou pelo Assembler Por que razão as sub-rotinas são utilizadas nos programas? Redução do código duplicado no programa, possibilidade de reutilização do mesmo código em outros programas, decomposição de um programa extenso em bloco menores, melhora visualização do código e facilita a sua manutenabilidade, dentro de uma Sub-rotina, uma outra pode ser chamada (aninhamento de subrotinas). O Programa Principal é interrompido, temporáriamente, para a execução da Sub-Rotina Considerando os seguintes dados nos Registradores, construa o estado final da região da memória referente à Pilha e o conteúdo do SP, após a execução da sequencia abaixo de instruções: Acc = 03h, R1(Banco 1) = 11h, R4(Banco 2) = 0Ah, R3(Banco 0) = FFh e SP = 40h End Instrução PUSH Acc PUSH 14h PUSH 03h CALL SUB01 1016 POP 03h No esquema abaixo, temos um trecho das memórias ROM e RAM internas de um (Proc 8051. No trecho da ROM, temos o endereço, o mnemônico da instrução em Assembly e o respectivo código (em hexa) gravado. Considerando o conteúdo inicial do PC igual a 0810h e que todos os Registradores do Quadro, abaixo, são do Banco 1 da parte baixa da RAM : a)Preencha o Quadro de Registradores abaixo, à medida em que o PC for avançando, considerando que, em cada uma das linhas, deveremos ter o valor inicial dos Registradores , ANTES, da execução da Instrução atual apontada pelo PC. ( as três primeiras linhas já foram preenchidas ) b) Á medida em que o programa for sendo executado, preencha os conteúdos dos endereços da Memória (RAM), incluindo a Pilha, que venha a sofrer alterações. ROM End Mnemonico Codigo REGISTRADORES 0000 NOP 00 PC Acc PSW R0 R1 R2 R3 DPH DPL SP : : : 0810 00 00 00 00 00 00 00 00 00 0810 mov SP,#33h 75 0813 00 00 00 00 00 00 00 00 33 0811 81 0815 00 00 00 00 00 00 00 00 33 0812 33 0817 00 08 00 00 00 00 00 00 33 0813 SETB RS0 D2 0819 00 08 3B 00 00 00 00 00 33 0814 D3 081C 00 08 3B 00 00 00 08 2C 33 0815 mov a,#00h 74 081E 00 08 3B 00 00 00 08 2C 34 0816 00 081F 0F 34 0817 mov R0,#3Bh 78 0818 3B 0819 Mov DPTR,#082Ch 90 081A 08 081B 2C 081C push Acc C0 081D E0 081E movc a,@a+DPTR 93 081F acall 0830h 11 0820 30 0821 pop Acc D0 0822 E0 0823 inc R0 08 0824 inc a 04 0825 cjne a,#02h,081Ch B4 0826 02 0827 F4 0828 SJMP $ 80 0829 FE 082A 00 082B 00 082C 0F 082D 10 082E 00 082F 00 0830 mov B,#10d 75 0831 F0 0832 0A 0833 DIV AB 84 0834 SWAP A C4 0835 ADD A,B 25 0836 F0 0837 MOV @R0,A F60838 RET 22 0839 NOP 00 : : : 4095 NOP 00 RAM 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F : : : 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D : : : FF 8) Considerando o seguinte grupo de números e fazendo uso das Diretivas (ORG, DB, DEFINE e DATA ) e de sub-rotinas : 28h,56h,1Fh,55h,5Ch Elabore um programa que determine o menor valor dos números acima, efetue a conversão BCD do mesmo e apresente-o em 2 Displays ( Dezena e Unidade ). Obs : 1)Através do uso das Diretivas, o grupo de números acima já deverá estar na memória, a partir do end. 2100h, antes do programa começar a ser executado. 2) Considere que os Displays estão conectados a 2 Ports do 8051. 9) No esquema abaixo, temos um determinado processo de produção industrial, o qual deverá funcionar, da seguinte forma : Inicialmente, apenas, as eletro-válvulas A e B deveráo abrir, simultaneamente, para permitir a entradas dos insumos A e B na Caldeira. Esta etapa dura 10 segundos. Em seguida, estas eletro-válvulas fecham e o motor é acionado por 30 segundos. Em seguida, a eletro-válvula A volta a abrir, com o motor, ainda, girando por mais 5 segundos. Na sequencia, a eletro-válvula A fecha, 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. Considerando que estão sendo utilizados os 4 bits menos significativos do Port P2 de um 8051 para comandar as eletro-válvulas e acionar o motor, elabore o Programa, com o seu respectivo Fluxograma, que possibilite todo a sequencia de operações indicadas acima. Para tanto, utilize as diretivas e sub-rotinas para esta implementação e considere que : Se o bit da porta for “0” e estiver controlando uma eletro-válvula, neste caso, esta ficará fechada. Caso contrário, se o bit for “1”, a eletro-válvula fica aberta. Se o bit estiver controlando o Motor, o mesmo só irá funcionar se este bit for igual a “1”. Interrupção no 8085 10) O que é uma Interrupção e em que situações ela é usada no 8051 ? 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. 11)Explique o significado dos termos : Interrupção Vetorada, Mascaramento de Interrupção, Ordem de Prioridade e Modo de Acionamento. De que forma estes processos ocorrem no 8051 ? 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 Explique de que forma ficarão “programadas” as Interrupções Externas de um 8051, após a seguinte sequencia de instruções : mov IE,#85h mov TCON,#04h mov IP,#04h 13) Elabore um programa que : Permaneça aguardando e, apenas, atenda à Interrupção INT0. Quando ela ocorrer, deverá ser iniciada uma contagem, no Acumulador, crescente e ininterrupta (à prova de Interrupções ) de 0 a 20. Para cada número da contagem, deverá haver um “retardo” de 1 segundo, aproximadamente. Se durante o processo de contagem, ocorrer alguma solicitação de Interrupção, ela não deverá ser atendida, posteriormente. No final, o programa passa a aguardar e só irá atender à solicitação de Interrupção INT1. Quando ela vier a ocorrer, no Acumulador, deverá ser iniciada uma contagem decrescente e ininterrupta ( à prova de Interrupções ) de volta a 0. Para cada número da contagem, deverá haver um “retardo” de 1 segundo, aproximadamente. No final, retorna-se ao ítem “a”. 14)No esquema abaixo, temos uma porta com uma “trava eletrônica”. Para que a porta seja “destravada”, é necessária a digitação de uma senha. Elabore um programa que por estas três teclas, utilize o programa prg_10(Leitura_teclado).asm). 15) Esta questão trata-se de um aprimoramento do projeto da questão 9 , anterior. No caso, considere o acréscimo de um Sensor de Temperatura (ST) no Motor, o qual, em caso de superaquecimento do mesmo, este sensor, muda o seu estado de “0” para “1”. Modifique o programa anterior, utilizando Interrupção, de tal forma que, em caso de superaquecimento do Motor, tenhamos a seguinte sequencia de ações : A paralisação do atual processo de produção, com o imediato desligamento do Motor e fechamento das eletro-válvulas A e B. 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. Apenas, quando o sensor ST voltar para “0”, significando que o Motor não mais se encontra superaquecido, o processo de produção deverá ser re-iniciado. Obs. : O Sensor ST deverá ativar um das Interrupções Externa do 8051. implemente esta função. Considere que a senha seja AX e que, em seguida, a tecla # tenha que ser pressionada. Considere que as saídas sejam 2 LEDs. Um Vermelho que permanece aceso, enquanto a porta estiver fechada e um outro Verde que deverá acender quando a porta for destravada. (Para descobrir os códigos gerados _1395867663/ole-[42, 4D, 56, 0D, 09, 00, 00, 00] _1395906140/ole-[42, 4D, CE, D0, 0A, 00, 00, 00] _1381259546/ole-[42, 4D, D6, 22, 01, 00, 00, 00]
Compartilhar