O Microcontrolador e Microprocessador
Por: BrendonOM • 22/9/2015 • Trabalho acadêmico • 1.575 Palavras (7 Páginas) • 412 Visualizações
[pic 1] | LISTA DE EXERCÍCIOS 02 Disciplina: Microprocessadores e Microcontroladores Curso: Eng. Elétrica / Eng. de Controle e Automação Professor: Davi Sabbag Roveri |
- As questões abaixo devem ser respondidas de maneira direta, objetiva e sucinta.
- Formar equipes de no máximo 6 alunos para responder este questionário. Os nomes dos alunos deverão estar identificados no início da folha de respostas.
- Esta lista de exercícios vale como a ATPS do segundo bimestre.
- Este questionário deverá ser entregue impresso.
- Prazo de entrega:
- até o dia 15/06/2015, antes do início da prova (Engenharia Elétrica).
- até o dia 16/06/2015, antes do início da prova (Engenharia de Controle e Automação).
PARTE I
- Sistemas computacionais, como os microcontroladores, utilizam um tipo de estrutura de dados que é fundamental para a correta execução do programa-principal conforme sub-rotinas são chamadas/executadas/terminadas. Explique a estrutura e funcionamento da “Pilha” de um microcontrolador.
Quando acontece a primeira interrupção, o endereço armazenado em PC vai para o primeiro nível da pilha, se por acaso acontece uma segunda interrupção então novamente o endereço que esta dentro do PC ocupa o primeiro nível da pilha e o endereço que antes ocupava o primeiro nível desce para o segundo, quando a interrupção 2 acaba, o endereço que esta no primeiro nível, é posto novamente no PC, que retorna para a posição em que havia parado na primeira interrupção, daí o endereço 1 volta para o primeiro nível da pilhar e daí por diante
[pic 2]
- Na família MCS-51, existe um registrador especial denominado SP. Descreva qual é sua função e indique seu valor inicial após a ocorrência de um RESET.
O valor de SP após um reset é 07H, de modo que a pilha começa, por default, no byte de memória interna 08H, onde inicia também o banco de registradores 1. Portanto, se o programa precisar trabalhar com mais de um banco de registradores, deve escolher outro local para a pilha.
- Explicar resumidamente a diferença entre as instruções SJMP, AJMP, LJMP.
O endereço da instrução LJMP é um endereço de 16 bits da memória de programa. Através dessa instrução é possível realizar desvios para qualquer endereço dos 64Kb de memória de programa. Efetua um desvio incondicional da execução para o endereço (end16) da memória de programa.
O endereço da instrução SJMP é um valor de 8 bits correspondente ao deslocamento relativo desejado em relação ao atual endereço de execução (registro de função especial PC). Através dessa instrução é possível realizar desvios relativos de –128 a +127 posições na memória de programa, pois o deslocamento é dado em complemento de dois.Efetua um desvio incondicional relativo da execução do programa. O endereço de 16 bits do desvio é obtido pela CPU somando-se o valor relativo (rel) ao endereço contido no registro de função especial PC.
O endereço da instrução AJMP é um endereço de 1 bits da memória de programa. Através dessa instrução é possível realizar desvios apenas para a mesma página de 2Kb da memória de programa onde encontrase a referida instrução.Efetua um desvio incondicional da execução na mesma página de 2Kb da memória de programa. O endereço de 16 bits do desvio é obtido pela CPU completando os 1 bits (end1) com os 5 bits mais significativos do endereço contido no registro de função especial PC.
- Explicar resumidamente a diferença entre as instruções CALL, ACALL, LCALL.
O endereço da instrução ACALL é um endereço de 1 bits da memória de programa. Através dessa instrução é possível realizar chamadas de subrotinas apenas para a mesma página de 2Kb da memória de programa onde encontra-se a referida instrução.Salva o conteúdo do registro de função especial PC na pilha (o registro SP é incrementado 2 vezes, pois trata-se de um registro de 16 bits). Em seguida efetua um desvio para o endereço da subrotina (end11) na mesma página de 2KB da memória de programa. O valor salvo na pilha constitui o endereço de retorno a ser restaurado pela instrução RET ao final da subrotina.
O endereço da instrução LCALL é um endereço de 16 bits da memória de programa. Através dessa instrução é possível realizar chamadas de subrotinas em qualquer endereço dos 64Kb de memória de programa. Salva o conteúdo do registro de função especial PC na pilha (o registro SP é incrementado 2 vezes, pois trata-se de um registro de 16 bits). Em seguida efetua um desvio para o endereço da subrotina (end16). O valor salvo na pilha constitui o endereço de retorno a ser restaurado pela instrução RET ao final da subrotina.
- Explique o que é uma interrupção “não vetorada” e “vetorada”.
Quando a CPU tem um endereço fixo de desvio de interrupção, esta é chamada de interrupção não vetorada.
Quando a CPU, ao ser interrompida, permite que o dispositivo que a interrompeu, envie o endereço de desvio, então esta é chamada de interrupção vetorada.
- Que tipo de disparo pode-se programar com relação às interrupções geradas externamente? Como esta característica é programada?
- Considere um microcontrolador que trabalha apenas com interrupções não vetoradas. Por que não se pode desenvolver um programa grande de atendimento à interrupção, a partir do próprio endereço desta interrupção?
- Qual a diferença entre as instruções RET e RETI?
As instruções RET e RETI são instruções que realizam o retorno de chamadas de subrotinas e interrupções, respectivamente, possuindo as seguintes sintaxes:
As instruções de retorno recuperam o endereço original contido no registro de função especial PC no momento da chamada da subrotina ou interrupção.
...