MICROPROCESSADORES E MICROCONTROLADORES PROVA 1 1. A expressão a seguir pode ser usada para avaliar o desempenho de um microprocessador. Comente cada um dos termos dessa expressão. Valor: 2,5 Tempo de processamento = tempo ciclo número de ciclos instrução instruções programa Termo 1 (tempo/ciclo): está diretamente ligado à frequência de clock do microprocessador. Quanto maior a frequência de clock, menor o período de clock e o tempo gasto na execução de uma instrução. Consequentemente, menor o tempo de processamento de um microprocessador. Termo 2 (número de ciclos/instrução): as instruções de um microprocessador precisam ser buscadas na memória de programa, antes de serem executadas, e cada microprocessador possui um conjunto de instruções que precisam de, no mínimo, um ciclo para busca e outro para execução. Quanto menor esse número de ciclos, maior o desempenho. Na arquitetura RISC, devido à possibilidade de buscar a próxima instrução durante o tempo de execução de uma instrução, esse fator é menor que na arquitetura CISC. Termo 3 (instruções/programa): teoricamente, quanto menor o número de instruções de um programa, menor o tempo de processamento (se o tempo de execução delas fossem iguais). Esse fator é menor na arquitetura CISC (comparado com programa equivalente na arquitetura RISC) porque cada instrução CISC, normalmente, executa várias tarefas, resultando em um programa com um número menor de instruções. 2. A figura a seguir mostra o diagrama de blocos simplificado de um microcontrolador. Que tipo de arquitetura ele representa? Justifique e dê exemplos de características desse tipo de arquitetura. Valor: 2,5 Memória de Programa Unidade de Entrada e Saída Unidade de Controle Memória de Dados Registradores Na arquitetura mostrada na figura todas as unidades estão conectadas através de um barramento único, o que caracteriza uma arquitetura CISC. Algumas das características dessa arquitetura: muitas instruções de acesso à memória; número reduzido de registradores e número elevado de instruções.
3. O quadro a seguir mostra um programa feito em assembly do 8085, onde a subrotina DISPLAY é usada para mostrar o conteúdo de A. Valor: 2,5 Endereço 2000H 2003H 2005H 2006H 2008H 200BH 200CH 200EH 2011H 2012H 2013H 2016H Mnemônico LXI SP, 2040H MVI A,00H PUSH PSW CPI 80H JC 200EH CMA ADI 01H CALL DISPLAY POP PSW INR A JMP 2005H HLT Analise o programa dado e responda às questões (a) a (d), a seguir: (a) Qual é o endereço inicial da pilha? Endereço inicial da pilha: 2040H, conforme instrução LXI SP,2040H (b) Antes de desviar para a subrotina DISPLAY, o microprocessador guarda um valor na pilha. Qual o valor guardado e em quais endereços da pilha ele é guardado? As tabelas a seguir mostram a evolução da Pilha com a execução do programa até o endereço 200EH. Verifica-se que a instrução PUSH PSW armazena na Pilha os conteúdos de A e Flags, respectivamente, nos endereços 203FH e 203EH; em seguida, no endereço 200EH, antes de desviar para o endereço da subrotina DISPLAY, o microprocessador guarda na Pilha o endereço da próxima instrução, ou seja, o endereço da instrução POP PSW (2011H). Esse endereço é guardado nas posições 203DH (byte mais significativo) e 203CH (byte menos significativo). Pilha após execução da instrução PUSH PSW, no endereço 2005H End. Dados Comentário na Pilha 203CH 203DH 203EH Flags O conteúdo do registrador de flags é colocado nesse endereço após PUSH PSW 203FH A O conteúdo do acumulador é colocado nesse endereço após PUSH PSW 2040H xx Endereço inicial da pilha. Não é armazenado nada nesse endereço Pilha no início da execução da instrução CALL DISPLAY, no endereço 200EH End. Dados Comentário na Pilha 203CH 11H Byte menos significativo do endereço da instrução após CALL DISPLAY 203DH 20H Byte mais significativo do endereço da instrução após CALL DISPLAY 203EH Flags O conteúdo do registrador de flags é colocado nesse endereço após PUSH PSW 203FH A O conteúdo do acumulador é colocado nesse endereço após PUSH PSW 2040H xx Endereço inicial da pilha. Não é armazenado nada nesse endereço
(c) Qual a faixa de valores de A que passa pelas instruções CMA e ADI 01H? O programa, a princípio, faz uma contagem crescente, a partir de 00H (até FFH), através do acumulador. A instrução CPI 80H faz a comparação entre o conteúdo de A (acumulador) e o valor 80H; para os valores menores que 80H a flag CY assume o valor 1; assim, os valores menores que 80H são enviados diretamente para o endereço 200EH, através da instrução JC 200EH, para serem visualizados no DISPLAY. Os valores maiores ou iguais a 80H, no entanto, resultam em CY = 0; assim, na instrução JC 200EH, esses valores fazem o processamento ir para a próxima linha, endereço 200BH. Portanto, a faixa de valores que passa pelas instruções CMA e ADI 01H são os valores de A maiores ou iguais a 80H (80H até FFH) (d) Qual a faixa de valores mostrada no DISPLAY? De acordo com a análise do item anterior, os valores de A menores que 80H (00H até 7FH) são enviados diretamente para o DISPLAY. No entanto, os valores de A maiores ou iguais a 80H (80H até FFH) passam por uma transformação: complementa o conteúdo de A e adiciona 01H. Ou seja, esses valores passam por uma transformação de complemento de 2. O resultado é que esses valores de 80H até FFH são transformados em valores de 80H até 01H. Portanto, a faixa de valores mostrada no display é de 00H a 80H. Etapa 1: 00H a 7FH. Etapa 2: 80H a 01H. 4. A tabela a seguir mostra uma sequência de instruções do microprocessador 8085. Valor: 2,5 Endereço 2000H 2002H 2004H 2006H 2007H 2009H Instruções MVI B,55H MVI A,A6H ADI 75H ANA B ORI 30H RLC Supondo que essas instruções sejam executadas na sequência mostrada, responda às questões (a) a (d) a seguir. (a) Qual o valor das flags Z, S, CY, P e AC após a execução da instrução ADI 75H? 1 1 1 1 A A6H 1 0 1 0 0 1 1 0 Byte8 75H 0 1 1 1 0 1 0 1 A=A+75H 1BH CY=1 0 0 0 1 1 0 1 1 A partir do resultado mostrado na tabela acima, tem-se: Z = 0 (resultado de A diferente de zero); S = 0 (bit 7=0); CY = 1 (houve transporte do bit 7 para o bit 8); P = 1 (quantidade par de dígitos 1 no acumulador) e AC = 0 (não houve transporte do bit 3 para o bit 4).
(b) Qual o valor de A após a execução da instrução do endereço 2006H? A instrução do endereço 2006H é ANA B, ou seja, o acumulador A recebe o resultado da operação lógica A AND B. A 1BH 0 0 0 1 1 0 1 1 B 55H 0 1 0 1 0 1 0 1 A=A AND B 11H 0 0 0 1 0 0 0 1 Conforme operação mostrada, o resultado é A = 11H. (c) Qual o valor de A após a execução da instrução do endereço 2007H? A instrução do endereço 2007H é ORI 30H, ou seja, o acumulador A recebe o resultado da operação lógica A OR 30H. A 11H 0 0 0 1 0 0 0 1 Byte8 30H 0 0 1 1 0 0 0 0 A=A OR 30H 31H 0 0 1 1 0 0 0 1 Conforme operação mostrada, o resultado é A = 31H. (d) Qual o valor de A após a execução da instrução RLC? A 31H 0 0 1 1 0 0 0 1 Após RLC 62H 0 1 1 0 0 0 1 0 Conforme mostrado na tabela, após a operação RLC, o conteúdo de A passa de 31H para 62H. Questão Extra Opcional. Valor: 1,0 Em aplicações de microcontroladores, normalmente são utilizados sensores/transdutores, com o objetivo de transferir para o microcontrolador informações externas, tais como velocidade, tensão, corrente, pressão, temperatura e outros. Alguns sensores/transdutores utilizam como princípio básico o efeito Hall, outros, o efeito piezoelétrico ou outros efeitos físicos. Escolha um transdutor/sensor e descreva o princípio de funcionamento do mesmo.
Questão Extra 2 Opcional (Lógica). Valor: 0,5 Considere dois cordões de comprimentos distintos e não homogêneos e com uma propriedade em comum: ambos os cordões levam 1 hora para queimar de ponta a ponta, independentemente da ponta em que o fogo é colocado. Pergunta-se: Como usar esses dois cordões para marcar precisamente 45 minutos? Para tornar mais clara a resposta, vamos supor que o cordão 1 tenha extremidades A e B e o cordão 2, C e D. Inicialmente vem a pergunta: como marcar 30 minutos usando essa propriedade? Resposta: colocando fogo simultaneamente nas extremidades A e B, do cordão 1, ou nas extremidades C e D, do cordão 2. E 45 minutos? Passo 1: coloca-se fogo, simultaneamente nas extremidades A e B, do cordão 1 e na extremidade C do cordão 2. Passo 2: Quando o cordão 1 for totalmente queimado, já se passaram 30 minutos. Então faltam ainda 30 minutos para completar a queima do cordão 2. Assim, nesse momento, coloca-se fogo na extremidade D do cordão 2. Ou seja, o restante do cordão 2 queimará em 15 minutos. Total: 45 minutos. Tabela 1: Registrador de Flags do Microprocessador 8085 S Z x AC X P x CY Instrução LXI SP,dado16 MVI reg,dado8 MOV reg1,reg2 CMA ADI dado8 INR reg JNC addr JC addr CPI dado8 CALL subrotina PUSH Reg16 POP Reg16 ANA reg ORI dado8 RLC Tabela 2: Algumas instruções do Microprocessador 8085 Comentário O apontador de pilha SP é carregado com um dado de 16 bits. O registrador reg é carregado com um dado de 8 bits O registrador reg1 recebe o conteúdo do registrador reg2 Complementa o conteúdo do acumulador A A + dado8. Adiciona um dado de 8 bits ao acumulador Incrementa em uma unidade o conteúdo do registrador reg Desvia para o endereço addr, se CY=0 Desvia para o endereço addr, se CY=1 Faz a subtração A dado8, mas não altera o conteúdo de A. Altera as flags CY e Z Desvia para o endereço da subrotina. Retorna quando encontra RET Coloca na pilha o conteúdo do registrador duplo Reg16 (Exemplos: PUSH PSW guarda A e Flags; PUSH B guarda B e C O registrador de 16 bits Reg16 recebe valores oriundos da pilha Faz a operação lógica AND (bit a bit) entre o acumulador e o conteúdo do registrador reg Faz a operação lógica OR (bit a bit) entre o acumulador e o dado de 8 bits Rotaciona à esquerda o conteúdo do acumulador Tabela 3: Flags após instrução CPI CPI byte CY Z A > byte 0 0 A = byte 0 1 A < byte 1 0