Buscar

MICROPROCESSADORES E MICROCONTROLADORES

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 114 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 114 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 114 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Os sistemas microprocessados e microcontrolados estão presentes em computadores convencionais, smartphones ou nos mais inusitados dispositivos eletrônicos, tais como carros e eletrodomésticos. Esses sistemas facilitam a vida cotidiana e podem ser utilizados para a automatização de diversas tarefas.
Você foi contratado pela empresa para iniciar a implementação desses recursos. Assim, explique o que seria necessário em nível de microprocessadores e microcontroladores para a criação desses recursos.
Padrão de resposta esperado
Para solucionar esse problema, a empresa necessitará trabalhar tanto com microprocessadores como microcontroladores.
Em primeiro lugar, para a empresa poder implementar um robô que seja capaz de armazenar informações, realizar tarefas e sobretudo aprender com o usuário, ela precisará construir um robô baseado em um sistema microprocessado, isso porque esse robô, para ter todas essas funções, necessitará de inteligência artificial, o que demanda grande capacidade de processamento de informações.
Por outro lado, para implementar todas as funções da casa inteligente, a empresa precisará implantar diversos sistemas microcontrolados que garantam, por exemplo, que o ar-condicionado seja ligado quando o usuário configurar ou que as cortinas se fechem quando o sol estiver quente.
Indo além dos microcontroladores e microprocessadores, para efetivar esse projeto também será necessária a utilização de diversos sensores, motores e fontes de energia. Por exemplo, para que o ar-condicionado ligue automaticamente, é preciso que um sensor identifique a variação na temperatura do ambiente funcionando como um gatilho para sua ativação. Já no caso das portas e das cortinas, os sensores também serão imprescindíveis para que esses sistemas funcionem corretamente, uma vez que os sensores, no caso das cortinas, serão responsáveis por detectar a luminosidade ou a temperatura e, no caso das portas, a aproximação de pessoas ou objetos.
Para que esse tipo de sistema funcione após a identificação de determinadas mudanças, é preciso que motores realizem a ação, como abrir e fechar as portas e cortinas.
1. 
Os microcontroladores estão cada vez mais presentes na vida cotidiana. É correto afirmar que um microcontrolador pode ser considerado como um “minicomputador”?
A. 
Sim, pode-se dizer que um microcontrolador é um pequeno computador completo por apresentar unidade central de processamento. 
Os microcontroladores podem ser considerados minicomputadores, pois têm os principais componentes de um computador convencional, tal como unidade central de processamento, memórias e periféricos de entrada e saída, sendo totalmente autossuficientes se comparados aos microprocessadores que dependem da disponibilidade externa desses recursos. 
B. 
Não, pois um microcontrolador tem apenas alguns elementos de um computador completo, tais como memória RAM e periféricos. 
Os microcontroladores podem ser considerados minicomputadores, pois têm os principais componentes de um computador convencional, tal como unidade central de processamento, memórias e periféricos de entrada e saída, sendo totalmente autossuficientes se comparados aos microprocessadores que dependem da disponibilidade externa desses recursos. 
C. 
Não, pois um microcontrolador, apesar de ter as principais características de um computador, não pode ser considerado um minicomputador, já que as configurações são muito limitadas. 
Os microcontroladores podem ser considerados minicomputadores, pois têm os principais componentes de um computador convencional, tal como unidade central de processamento, memórias e periféricos de entrada e saída, sendo totalmente autossuficientes se comparados aos microprocessadores que dependem da disponibilidade externa desses recursos. 
D. 
Sim, pois um microcontrolador tem os principais componentes de um computador, apesar de não ter recursos de entrada e saída.
Os microcontroladores podem ser considerados minicomputadores, pois têm os principais componentes de um computador convencional, tal como unidade central de processamento, memórias e periféricos de entrada e saída, sendo totalmente autossuficientes se comparados aos microprocessadores que dependem da disponibilidade externa desses recursos. 
E. RESPOSTA CORRETA
Sim, pois, um microcontrolador tem os principais componentes de um computador, incluindo unidade central de processamento, memórias e periféricos de entrada e saída.
2. 
Um microcontrolador pode fazer parte de diversos dispositivos. Qual das alternativas a seguir apresenta o contexto de aplicação de um microcontrolador?
A. RESPOSTA CORRETA
A utilização de um microcontrolador é útil em dispositivos simples, tais como eletrodomésticos ou brinquedos que necessitam de controle, mas não demandam alto nível de processamento. 
O uso de um microcontrolador é útil em dispositivos simples, tais como eletrodomésticos ou brinquedos que necessitam de controle, mas não demandam alto nível de processamento. Dessa forma, qualquer sistema que demande grandes quantidades de processamento de informação e agilidade deve utilizar microprocessadores, e não microcontroladores. Os microcontroladores fazem parte de sistemas embarcados responsáveis pelo controle de aplicações simples e pontuais. 
B. 
A utilização de um microcontrolador é útil em dispositivos de alta complexidade, tais como smartphones e tablets, pois são capazes de processar grande número de informações necessárias para o bom desempenho destes. 
O uso de um microcontrolador é útil em dispositivos simples, tais como eletrodomésticos ou brinquedos que necessitam de controle, mas não demandam alto nível de processamento. Dessa forma, qualquer sistema que demande grandes quantidades de processamento de informação e agilidade deve utilizar microprocessadores, e não microcontroladores. Os microcontroladores fazem parte de sistemas embarcados responsáveis pelo controle de aplicações simples e pontuais. 
C. 
A utilização de um microcontrolador é útil em dispositivos que demandam de grandes quantidades de processamento, tais como notebooks e desktops, pois permitem processar de maneira ágil uma série de informações. 
O uso de um microcontrolador é útil em dispositivos simples, tais como eletrodomésticos ou brinquedos que necessitam de controle, mas não demandam alto nível de processamento. Dessa forma, qualquer sistema que demande grandes quantidades de processamento de informação e agilidade deve utilizar microprocessadores, e não microcontroladores. Os microcontroladores fazem parte de sistemas embarcados responsáveis pelo controle de aplicações simples e pontuais. 
D. 
A utilização de um microcontrolador é útil em dispositivos de alta complexidade, tais como brinquedos, eletrodomésticos e controladores de automóveis, que necessitam de controle e processamento de grandes quantidades de dados. 
O uso de um microcontrolador é útil em dispositivos simples, tais como eletrodomésticos ou brinquedos que necessitam de controle, mas não demandam alto nível de processamento. Dessa forma, qualquer sistema que demande grandes quantidades de processamento de informação e agilidade deve utilizar microprocessadores, e não microcontroladores. Os microcontroladores fazem parte de sistemas embarcados responsáveis pelo controle de aplicações simples e pontuais. 
E. 
A utilização de microcontroladores é útil em sistemas embarcados combinados com processadores de alto desempenho, sendo capazes de processar uma quantidade grande de informações de maneira rápida. 
O uso de um microcontrolador é útil em dispositivos simples, tais como eletrodomésticos ou brinquedos que necessitam de controle, mas não demandam alto nível de processamento. Dessa forma, qualquer sistema que demande grandes quantidades de processamento de informação e agilidade deve utilizar microprocessadores, e não microcontroladores. Os microcontroladores fazem parte de sistemas embarcados responsáveis pelo controle de aplicações simples e pontuais.
3. 
Qual das alternativas a seguir descreve corretamenteas principais diferenças entre microprocessadores e microcontroladores?
A. RESPOSTA CORRETA
Um microprocessador tem uma unidade lógica e aritmética, registradores e uma unidade de controle, enquanto um microcontrolador engloba todos os componentes de um microprocessador, além de memória volátil e não volátil e periféricos de entrada e saída. 
Um microprocessador tem uma unidade lógica e aritmética, registradores e uma unidade de controle, enquanto um microcontrolador engloba todos os componentes de um microprocessador, além de memória volátil e não volátil e periféricos de entrada e saída. Nesse sentido, um processador não dispõe de memória definitiva, apenas de memória volátil caracterizada pelos registradores.
B. 
Um microprocessador tem uma unidade lógica e aritmética, memória definitiva e uma unidade de controle, enquanto um microcontrolador tem unidade de controle, registradores e memória volátil. 
Um microprocessador tem uma unidade lógica e aritmética, registradores e uma unidade de controle, enquanto um microcontrolador engloba todos os componentes de um microprocessador, além de memória volátil e não volátil e periféricos de entrada e saída. Nesse sentido, um processador não dispõe de memória definitiva, apenas de memória volátil caracterizada pelos registradores.
C. 
Um microprocessador tem unidade lógica e aritmética, unidade de controle e memória volátil, enquanto um microcontrolador tem unidade central de processamento, registradores e memória volátil, mas não tem portas de entrada e saída. 
Um microprocessador tem uma unidade lógica e aritmética, registradores e uma unidade de controle, enquanto um microcontrolador engloba todos os componentes de um microprocessador, além de memória volátil e não volátil e periféricos de entrada e saída. Nesse sentido, um processador não dispõe de memória definitiva, apenas de memória volátil caracterizada pelos registradores. 
D. 
Um microprocessador tem unidade central de processamento e memórias, enquanto um microcontrolador engloba esses mesmos componentes além de registradores próprios e memória definitiva e mecanismos de entrada e saída. 
Um microprocessador tem uma unidade lógica e aritmética, registradores e uma unidade de controle, enquanto um microcontrolador engloba todos os componentes de um microprocessador, além de memória volátil e não volátil e periféricos de entrada e saída. Nesse sentido, um processador não dispõe de memória definitiva, apenas de memória volátil caracterizada pelos registradores. 
E. 
Um microprocessador tem unidade lógica e aritmética, registradores e uma unidade de controle, além de memória volátil e não volátil e periféricos de entrada e saída, enquanto um microcontrolador tem unidade lógica e aritmética, registradores e uma unidade de controle.
Um microprocessador tem uma unidade lógica e aritmética, registradores e uma unidade de controle, enquanto um microcontrolador engloba todos os componentes de um microprocessador, além de memória volátil e não volátil e periféricos de entrada e saída. Nesse sentido, um processador não dispõe de memória definitiva, apenas de memória volátil caracterizada pelos registradores.
4. 
ATmega8515L-8AU SMD é um tipo de microcontrolador baseado na arquitetura AVR que tem altíssima performance, apresentando clock de 0-8 MHz, memória Flash 8 kB, memória SRAM de 512 bytes e memória EEPROM de 512 bytes. A partir disso, é correto afirmar que:
A. 
pode-se gravar instruções de programação que ocupem um espaço de memória de até 8 kB.
Considerando-se que as instruções de programação são armazenadas geralmente na memória Flash, este microcontrolador pode armazenar até 8 kB de informações nessa memória e 512 bytes na memória EEPROM. Dessa forma, significa que o espaço para armazenamento, em memória não volátil nesse microcontrolador, é de 8,5 kB. A memória SRAM é uma memória volátil que o microcontrolador utiliza durante o processamento das informações. Já o clock de 8 MHz corresponde à frequência do microprocessador, e não à sua capacidade de armazenamento. 
B. 
pode-se gravar instruções de programação que ocupem um espaço de até 9216 bytes.
Considerando-se que as instruções de programação são armazenadas geralmente na memória Flash, este microcontrolador pode armazenar até 8 kB de informações nessa memória e 512 bytes na memória EEPROM. Dessa forma, significa que o espaço para armazenamento, em memória não volátil nesse microcontrolador, é de 8,5 kB. A memória SRAM é uma memória volátil que o microcontrolador utiliza durante o processamento das informações. Já o clock de 8 MHz corresponde à frequência do microprocessador, e não à sua capacidade de armazenamento. 
C. RESPOSTA CORRETA
pode-se gravar instruções de programação que ocupem um espaço de até 8,5 kB.
Considerando-se que as instruções de programação são armazenadas geralmente na memória Flash, este microcontrolador pode armazenar até 8 kB de informações nessa memória e 512 bytes na memória EEPROM. Dessa forma, significa que o espaço para armazenamento, em memória não volátil nesse microcontrolador, é de 8,5 kB. A memória SRAM é uma memória volátil que o microcontrolador utiliza durante o processamento das informações. Já o clock de 8 MHz corresponde à frequência do microprocessador, e não à sua capacidade de armazenamento. 
D. 
pode-se gravar instruções de programação que ocupem um espaço de até 17 kB.
Considerando-se que as instruções de programação são armazenadas geralmente na memória Flash, este microcontrolador pode armazenar até 8 kB de informações nessa memória e 512 bytes na memória EEPROM. Dessa forma, significa que o espaço para armazenamento, em memória não volátil nesse microcontrolador, é de 8,5 kB. A memória SRAM é uma memória volátil que o microcontrolador utiliza durante o processamento das informações. Já o clock de 8 MHz corresponde à frequência do microprocessador, e não à sua capacidade de armazenamento. 
E. 
pode-se gravar instruções de programação que ocupem um espaço de até 8 MHz.
Considerando-se que as instruções de programação são armazenadas geralmente na memória Flash, este microcontrolador pode armazenar até 8 kB de informações nessa memória e 512 bytes na memória EEPROM. Dessa forma, significa que o espaço para armazenamento, em memória não volátil nesse microcontrolador, é de 8,5 kB. A memória SRAM é uma memória volátil que o microcontrolador utiliza durante o processamento das informações. Já o clock de 8 MHz corresponde à frequência do microprocessador, e não à sua capacidade de armazenamento.
5. 
O diagrama a seguir demonstra o modelo conceitual referente ao funcionamento de um controlador AVR da série ATmega. A partir desse diagrama, é possível afirmar que:
A. 
o arquivo de registro de acesso rápido contém oito registradores.
A partir da análise do diagrama que ilustra o funcionamento de um microcontrolador AVR da série ATmega, é verdadeira a sentença que afirma que a unidade lógica e aritmética (ULA) tem acesso direto aos registradores, já que os registradores armazenam as informações necessárias para o processamento das informações, tendo íntima relação com a ULA. Além disso, o diagrama mostra que o microcontrolador tem registradores de uso geral de 8-32 bits. A memória EEPROM é um tipo de memória não volátil, podendo ser usada para o armazenamento de instruções de programas, embora normalmente os programas sejam inscritos na memória Flash. É importante ressaltar também que não há comunicação direta entre a memória Flash e a memória EEPROM.
B. 
a memória Flash não se comunica com a unidade lógica e aritmética. 
A partir da análise do diagrama que ilustra o funcionamento de um microcontrolador AVR da série ATmega, é verdadeira a sentença que afirma que a unidade lógica e aritmética (ULA) tem acesso direto aos registradores, já que os registradores armazenam as informações necessárias para o processamento das informações, tendo íntima relação com a ULA. Além disso, o diagrama mostra que o microcontrolador tem registradores de uso geral de 8-32 bits. A memória EEPROM é um tipode memória não volátil, podendo ser usada para o armazenamento de instruções de programas, embora normalmente os programas sejam inscritos na memória Flash. É importante ressaltar também que não há comunicação direta entre a memória Flash e a memória EEPROM.
C. 
a memória EEPROM se comunica diretamente com a memória Flash. 
A partir da análise do diagrama que ilustra o funcionamento de um microcontrolador AVR da série ATmega, é verdadeira a sentença que afirma que a unidade lógica e aritmética (ULA) tem acesso direto aos registradores, já que os registradores armazenam as informações necessárias para o processamento das informações, tendo íntima relação com a ULA. Além disso, o diagrama mostra que o microcontrolador tem registradores de uso geral de 8-32 bits. A memória EEPROM é um tipo de memória não volátil, podendo ser usada para o armazenamento de instruções de programas, embora normalmente os programas sejam inscritos na memória Flash. É importante ressaltar também que não há comunicação direta entre a memória Flash e a memória EEPROM.
D. RESPOSTA CORRETA
a unidade lógica e aritmética tem acesso direto aos registradores.
A partir da análise do diagrama que ilustra o funcionamento de um microcontrolador AVR da série ATmega, é verdadeira a sentença que afirma que a unidade lógica e aritmética (ULA) tem acesso direto aos registradores, já que os registradores armazenam as informações necessárias para o processamento das informações, tendo íntima relação com a ULA. Além disso, o diagrama mostra que o microcontrolador tem registradores de uso geral de 8-32 bits. A memória EEPROM é um tipo de memória não volátil, podendo ser usada para o armazenamento de instruções de programas, embora normalmente os programas sejam inscritos na memória Flash. É importante ressaltar também que não há comunicação direta entre a memória Flash e a memória EEPROM.
E. 
a memória EEPROM não pode ser usada para armazenamento de programas.
A partir da análise do diagrama que ilustra o funcionamento de um microcontrolador AVR da série ATmega, é verdadeira a sentença que afirma que a unidade lógica e aritmética (ULA) tem acesso direto aos registradores, já que os registradores armazenam as informações necessárias para o processamento das informações, tendo íntima relação com a ULA. Além disso, o diagrama mostra que o microcontrolador tem registradores de uso geral de 8-32 bits. A memória EEPROM é um tipo de memória não volátil, podendo ser usada para o armazenamento de instruções de programas, embora normalmente os programas sejam inscritos na memória Flash. É importante ressaltar também que não há comunicação direta entre a memória Flash e a memória EEPROM.
Com os avanços tecnológicos as empresas buscam aproveitar as novas tecnologias para manterem-se atualizadas, melhorando seus rendimentos e suas posições no mercado.
Veja como você pode fazer parte desses processos.
Justifique qual dos dois dispositivos, microprocessador ou microcontrolador, é ideal para essa aplicação.
Padrão de resposta esperado
Os microprocessadores são dispositivos destinados somente à computação dos dados, não são capazes de receber dados de forma direta nem de armazenar grande quantidade de informações. Como sua finalidade é somente o processamento, este componente possui níveis maiores de velocidade de operação e de poder de processamento, sendo aplicado em computadores por sua extrema necessidade de processamento de dados. Assim os microprocessadores são ideais para esta utilização.
1. 
Com relação à evolução dos microcontroladores, qual pode ser considerada a causa do aumento de sua velocidade de operação?
A. 
A redução das memórias internas no chip dos processadores provoca um menor tempo de acesso.
Quanto maior a quantidade de transistores em um CI processador, maior a quantidade de operações digitais simultâneas, reduzindo assim o tempo de operação de instruções.
B. 
A redução de transistores em um mesmo chip, o que possibilita uma maior velocidade das operações digitais por ciclo de clock.
Quanto maior a quantidade de transistores em um CI processador, maior a quantidade de operações digitais simultâneas, reduzindo assim o tempo de operação de instruções.
C. 
O aumento de funções no mesmo chip, tendo os mais novos funções de periféricos de entrada e saída e memória de massa.
Quanto maior a quantidade de transistores em um CI processador, maior a quantidade de operações digitais simultâneas, reduzindo assim o tempo de operação de instruções.
D. 
A inserção de mais memória de massa no chip dos processadores provoca menor tempo de acesso.
Quanto maior a quantidade de transistores em um CI processador, maior a quantidade de operações digitais simultâneas, reduzindo assim o tempo de operação de instruções.
E. RESPOSTA CORRETA
O aumento de transistores em um mesmo chip, o que possibilita maior quantidade de operações digitais por ciclo de clock.
Quanto maior a quantidade de transistores em um CI processador, maior a quantidade de operações digitais simultâneas, reduzindo assim o tempo de operação de instruções.
2. 
Para que haja funcionamento dos microprocessadores são necessárias três unidades básicas:
A. RESPOSTA CORRETA
unidade de controle, registradores e unidade lógica aritmética.
As três unidades básicas de uma CPU são: unidade de controle, registradores e unidade lógica aritmética.
B. 
memória RAM, registradores e unidade lógica aritmética.
As três unidades básicas de uma CPU são: unidade de controle, registradores e unidade lógica aritmética.
C. 
unidade de controle, memória RAM e unidade lógica aritmética.
As três unidades básicas de uma CPU são: unidade de controle, registradores e unidade lógica aritmética.
D. 
memória ROM, memória RAM e unidade lógica aritmética.
As três unidades básicas de uma CPU são: unidade de controle, registradores e unidade lógica aritmética.
E. 
unidade de controle, registradores e unidade central de processamento.
As três unidades básicas de uma CPU são: unidade de controle, registradores e unidade lógica aritmética.
3. 
Os registradores são memórias auxiliares de processamento de acesso rápido que se localizam dentro do próprio chip do microprocessador. Entre as alternativas a seguir, marque a que contenha somente funções especiais de registradores.
A. 
Registrador de temporização, registrador de instrução e registrador de entrada e saída. 
Os registradores de temporização, de instrução e o acumulador são exemplos de registradores especiais de um microprocessador.
B. 
Registrador de saída, registrador de entrada e acumuladores. 
Os registradores de temporização, de instrução e o acumulador são exemplos de registradores especiais de um microprocessador.
C. 
Registrador de temporização, registrador de entrada e saída e acumuladores. 
Os registradores de temporização, de instrução e o acumulador são exemplos de registradores especiais de um microprocessador.
D. RESPOSTA CORRETA
Registrador de temporização, registrador de instrução e acumuladores. 
Os registradores de temporização, de instrução e o acumulador são exemplos de registradores especiais de um microprocessador.
E. 
Registrador de entrada e saída, registrador de instrução e acumuladores. 
Os registradores de temporização, de instrução e o acumulador são exemplos de registradores especiais de um microprocessador.
4. 
Para a programação dos microprocessadores, a linguagem de máquina consiste em microinstruções que representam as instruções internas da ULA, com isso pode-se dizer que:
A. 
os passos de execução de um microprograma são seguidos de acordo com a sequência deste, sendo estas instruções disponibilizadas para a ULA de forma direta por meio das memórias RAM conectadas ao dispositivo.
O microprograma é armazenado na memória do tipo ROM externa ao microprocessador, e a instrução a ser executada é disponibilizada pela unidade de controle para a ULA.
B. 
os passos de execução de um microprograma são seguidos de acordo com a sequência deste, sendo estas instruções disponibilizadas para a ULA de forma direta pormeio da unidade de controle do próprio dispositivo.
O microprograma é armazenado na memória do tipo ROM externa ao microprocessador, e a instrução a ser executada é disponibilizada pela unidade de controle para a ULA.
C. RESPOSTA CORRETA
os passos de execução de um microprograma são seguidos de acordo com a sequência deste, sendo estas instruções disponibilizadas para a ULA de forma direta por meio das memórias ROM conectadas ao dispositivo.
O microprograma é armazenado na memória do tipo ROM externa ao microprocessador, e a instrução a ser executada é disponibilizada pela unidade de controle para a ULA.
D. 
Os passos de execução de um microprograma são seguidos de acordo com a sequência deste, sendo estas instruções gravadas na ULA do microprocessador.
O microprograma é armazenado na memória do tipo ROM externa ao microprocessador, e a instrução a ser executada é disponibilizada pela unidade de controle para a ULA.
E. 
Os passos de execução de um microprograma são seguidos de acordo com a sequência deste, sendo estas instruções gravadas na unidade de controle do microprocessador.
O microprograma é armazenado na memória do tipo ROM externa ao microprocessador, e a instrução a ser executada é disponibilizada pela unidade de controle para a ULA.
5. 
Com relação ao funcionamento da unidade lógica aritmética (ULA), marque a opção que melhor a representa.
A. RESPOSTA CORRETA
A ULA somente executa as instruções lógicas e aritméticas de execução definidas pela unidade de controle.
A função da ULA em um processador é aplicar instruções determinadas pela unidade de controle.
B. 
A ULA realiza as instruções lógicas e aritméticas de execução e define as condições de execução e de sequenciamento desta execução.
A função da ULA em um processador é aplicar instruções determinadas pela unidade de controle.
C. 
A ULA realiza as instruções lógicas e aritméticas e define o clock para sincronismo de execução do microprocessador.
A função da ULA em um processador é aplicar instruções determinadas pela unidade de controle.
D. 
A ULA realiza e armazena as instruções lógicas e aritméticas de execução definidas pela unidade de controle.
A função da ULA em um processador é aplicar instruções determinadas pela unidade de controle.
E. 
A ULA armazena as respostas de processamento do processador.
A função da ULA em um processador é aplicar instruções determinadas pela unidade de controle.
Em um sistema de automação para estacionamentos, deseja-se apresentar o número de vagas livres em um espaço que apresenta 16 vagas. Para isso, utilizam-se sensores óticos que, quando a vaga está ocupada, demonstram nível lógico baixo e, quando a vaga está livre, nível lógico 1. Os dados desses sensores são passados de forma serial para o microprocessador Intel 8086 e armazenados em um registrador de 16 bits, nomeado NÚMERO.
Escreva um código em assembly que trate esse registrador de 16 bits e apresente o número de vagas livres em um registrador nomeado RESULT.
Padrão de resposta esperado
MOV R0, 16d: inicia o controle de deslocamento em 16.
CLR RESULT: limpa o resultado.
MOV R2, NÚMERO: move o número que se deseja contar para o registrador R2.
BPL 2: testa se o bit mais significativo é alto; se não for, pula 2 bytes.
INC RESULT: incrementa +1 ao resultado.
ASL R2: rotaciona R2 para a esquerda.
SOB R0, 8: decrementa R0; se o resultado não for 0, retorna 8 bytes de instruções.
HLT: finaliza o programa.
1. 
Sabendo-se que VAR1 e VAR2 são variáveis de 32 bits contidas nos endereços de memória [1024:1026] e [1028:1030], respectivamente, qual o valor contido nos endereços de memória [1032:1030], em decimal, no fim do trecho apresentado abaixo?
MOV 1026, FFh
MOV 1024, A2h
MOV 1030, 0Ah
MOV 1028, F1h
MOV R0,1026
ADD R0,1030
MOV 1034, R0
MOV R0, 00h
ADC R0
ADD R0, 1024
ADD R0, 1028
MOV 1032, R0
HLT 
A. RESPOSTA CORRETA
68243.
Tenha a atenção de realizar as devidas instruções aritméticas com registradores de 16 bits, utilizando complemento de 2. Se a soma estourar o valor de 16 bits, utilize o valor de carry.
B. 
245.
Tenha a atenção de realizar as devidas instruções aritméticas com registradores de 16 bits, utilizando complemento de 2. Se a soma estourar o valor de 16 bits, utilize o valor de carry.
C. 
16452.
Tenha a atenção de realizar as devidas instruções aritméticas com registradores de 16 bits, utilizando complemento de 2. Se a soma estourar o valor de 16 bits, utilize o valor de carry.
D. 
68350.
Tenha a atenção de realizar as devidas instruções aritméticas com registradores de 16 bits, utilizando complemento de 2. Se a soma estourar o valor de 16 bits, utilize o valor de carry.
E. 
68255.
Tenha a atenção de realizar as devidas instruções aritméticas com registradores de 16 bits, utilizando complemento de 2. Se a soma estourar o valor de 16 bits, utilize o valor de carry.
2. 
Sobre prefetch, analise as seguintes afirmações e assinale a correta:
A. 
Acontece quando o microprocessador faz tratamento prévio de dados.
As unidades EU e BIU são totalmente independentes entre si. Dessa forma, enquanto a EU executa instruções já passadas, é possível que a BIU execute ciclos de busca de instruções e coloque em uma fila diretamente ligada à EU. Essa fila possui 6 posições possíveis.
B. 
É a prática de buscar informações pré-definidas.
As unidades EU e BIU são totalmente independentes entre si. Dessa forma, enquanto a EU executa instruções já passadas, é possível que a BIU execute ciclos de busca de instruções e coloque em uma fila diretamente ligada à EU. Essa fila possui 6 posições possíveis.
C. 
É realizada pela EU, de forma que, quando a CPU se encontra ocupada, a EU empilha instruções que serão posteriormente executadas.
As unidades EU e BIU são totalmente independentes entre si. Dessa forma, enquanto a EU executa instruções já passadas, é possível que a BIU execute ciclos de busca de instruções e coloque em uma fila diretamente ligada à EU. Essa fila possui 6 posições possíveis.
D. RESPOSTA CORRETA
Por serem (a EU e a BIU) independentes entre si, é possível que a BIU realize o barramento externo para efetuar buscas prévias de instruções. Essa prática é denominada prefetch.
As unidades EU e BIU são totalmente independentes entre si. Dessa forma, enquanto a EU executa instruções já passadas, é possível que a BIU execute ciclos de busca de instruções e coloque em uma fila diretamente ligada à EU. Essa fila possui 6 posições possíveis.
E. 
A fila utilizada para prefetch é conhecida como memória cache.
As unidades EU e BIU são totalmente independentes entre si. Dessa forma, enquanto a EU executa instruções já passadas, é possível que a BIU execute ciclos de busca de instruções e coloque em uma fila diretamente ligada à EU. Essa fila possui 6 posições possíveis.
3. 
Sobre a dinâmica de trabalho do barramento multiplexado, assinale a alternativa correta: .
A. 
O mesmo barramento pode ser utilizado para enviar e receber dados para os periféricos externos, mas não para trabalhar com endereços.
O barramento multiplexado utiliza os mesmos pinos para sinais de dados e endereços, e possui dois modos de operação bem definidos: modo mínimo e modo máximo. Dependendo do modo de operação, o barramento será utilizado de uma forma.
Modo mínimo: no modo mínimo, o processador gera todos os sinais de controle para o barramento multiplexado (HLDA, WR, M/IO, DT/R, DEN, ALE e INTA), além de possuir uma entrada de controle denominada HOLD. Todos esses sinais de controle serão detalhados adiante.
Modo máximo:no modo máximo, o processador não gera os sinais de controle, sendo que estes devem ser gerados por outro processador que trabalha em conjunto, ou seja, esse modo é utilizado para sistemas que contam com coprocessadores.
B. 
O mesmo barramento pode ser utilizado para enviar e receber endereços para os periféricos externos, mas não para trabalhar com dados.
O barramento multiplexado utiliza os mesmos pinos para sinais de dados e endereços, e possui dois modos de operação bem definidos: modo mínimo e modo máximo.Dependendo do modo de operação, o barramento será utilizado de uma forma.
Modo mínimo: no modo mínimo, o processador gera todos os sinais de controle para o barramento multiplexado (HLDA, WR, M/IO, DT/R, DEN, ALE e INTA), além de possuir uma entrada de controle denominada HOLD. Todos esses sinais de controle serão detalhados adiante.
Modo máximo:no modo máximo, o processador não gera os sinais de controle, sendo que estes devem ser gerados por outro processador que trabalha em conjunto, ou seja, esse modo é utilizado para sistemas que contam com coprocessadores.
C. 
O mesmo barramento pode ser utilizado para enviar e receber dados e endereços para os periféricos externos, devendo, os sinais de controle, ser realizados de forma independente ao barramento.
O barramento multiplexado utiliza os mesmos pinos para sinais de dados e endereços, e possui dois modos de operação bem definidos: modo mínimo e modo máximo. Dependendo do modo de operação, o barramento será utilizado de uma forma.
Modo mínimo: no modo mínimo, o processador gera todos os sinais de controle para o barramento multiplexado (HLDA, WR, M/IO, DT/R, DEN, ALE e INTA), além de possuir uma entrada de controle denominada HOLD. Todos esses sinais de controle serão detalhados adiante.
Modo máximo:no modo máximo, o processador não gera os sinais de controle, sendo que estes devem ser gerados por outro processador que trabalha em conjunto, ou seja, esse modo é utilizado para sistemas que contam com coprocessadores.
D. RESPOSTA CORRETA
O barramento multiplexado é utilizado para dados e endereços, além de possuir pinos de controle para funções de coprocessamento. 
O barramento multiplexado utiliza os mesmos pinos para sinais de dados e endereços, e possui dois modos de operação bem definidos: modo mínimo e modo máximo. Dependendo do modo de operação, o barramento será utilizado de uma forma.
Modo mínimo: no modo mínimo, o processador gera todos os sinais de controle para o barramento multiplexado (HLDA, WR, M/IO, DT/R, DEN, ALE e INTA), além de possuir uma entrada de controle denominada HOLD. Todos esses sinais de controle serão detalhados adiante.
Modo máximo:no modo máximo, o processador não gera os sinais de controle, sendo que estes devem ser gerados por outro processador que trabalha em conjunto, ou seja, esse modo é utilizado para sistemas que contam com coprocessadores.
E. 
O barramento multiplexado serve para alimentação elétrica do microprocessador.
O barramento multiplexado utiliza os mesmos pinos para sinais de dados e endereços, e possui dois modos de operação bem definidos: modo mínimo e modo máximo. Dependendo do modo de operação, o barramento será utilizado de uma forma.
Modo mínimo: no modo mínimo, o processador gera todos os sinais de controle para o barramento multiplexado (HLDA, WR, M/IO, DT/R, DEN, ALE e INTA), além de possuir uma entrada de controle denominada HOLD. Todos esses sinais de controle serão detalhados adiante.
Modo máximo:no modo máximo, o processador não gera os sinais de controle, sendo que estes devem ser gerados por outro processador que trabalha em conjunto, ou seja, esse modo é utilizado para sistemas que contam com coprocessadores.
4. 
Sobre a Unidade de Execução (EU), analise as seguintes alternativas e assinale a correta:
A. 
É na EU que está presente a ULA (Unidade Lógica e Aritmética), responsável por todo o gerenciamento dos periféricos.
A ULA (Unidade Lógica e Aritmética) faz parte da EU. Ela é responsável por executar as instruções lógicas e aritméticas, além de fazer acesso às flags de estado. Por exemplo, quando uma operação aritmética apresenta resultado igual a zero, automaticamente a flag ZF é habilitada.
B. 
A EU apresenta registradores de segmentos que são utilizados como auxiliares em operações aritméticas.
A ULA (Unidade Lógica e Aritmética) faz parte da EU. Ela é responsável por executar as instruções lógicas e aritméticas, além de fazer acesso às flags de estado. Por exemplo, quando uma operação aritmética apresenta resultado igual a zero, automaticamente a flag ZF é habilitada.
C. RESPOSTA CORRETA
A ULA (Unidade Lógica e Aritmética) é responsável por executar algumas instruções, além de fazer acesso a flags de estado. 
A ULA (Unidade Lógica e Aritmética) faz parte da EU. Ela é responsável por executar as instruções lógicas e aritméticas, além de fazer acesso às flags de estado. Por exemplo, quando uma operação aritmética apresenta resultado igual a zero, automaticamente a flag ZF é habilitada.
D. 
O barramento principal da EU possui 20 bits e serve para trocar dados com dispositivos externos.
A ULA (Unidade Lógica e Aritmética) faz parte da EU. Ela é responsável por executar as instruções lógicas e aritméticas, além de fazer acesso às flags de estado. Por exemplo, quando uma operação aritmética apresenta resultado igual a zero, automaticamente a flag ZF é habilitada.
E. 
A EU é totalmente dependente da BIU e sempre fica ociosa, aguardando que esta forneça a próxima instrução.
A ULA (Unidade Lógica e Aritmética) faz parte da EU. Ela é responsável por executar as instruções lógicas e aritméticas, além de fazer acesso às flags de estado. Por exemplo, quando uma operação aritmética apresenta resultado igual a zero, automaticamente a flag ZF é habilitada.
5. 
Sobre a Unidade de Interface de Barramento (BIU), analise as seguintes alternativas e assinale a correta: 
A. RESPOSTA CORRETA
A BIU é responsável por gerar o endereço de 20 bits, a fim de fazer acesso à memória necessária para a execução de uma instrução.
A BIU é responsável por realizar a interface entre o barramento externo e a EU. Dessa forma, ela faz a transformação das informações disponíveis em 16 bits para 20 bits, de acordo com o tipo de instrução que será executada. Além disso, ela faz buscas de instruções e as reserva em uma fila de 6 níveis, ao passo que a EU está ocupada decodificando a instrução atual.
B. 
Os registradores de segmento são utilizados para armazenar dados de instruções que serão posteriormente executadas.
A BIU é responsável por realizar a interface entre o barramento externo e a EU. Dessa forma, ela faz a transformação das informações disponíveis em 16 bits para 20 bits, de acordo com o tipo de instrução que será executada. Além disso, ela faz buscas de instruções e as reserva em uma fila de 6 níveis, ao passo que a EU está ocupada decodificando a instrução atual.
C. 
O ponteiro de instrução aponta para a função previamente executada. Dessa forma, é possível realizar resgate de valores perdidos.
A BIU é responsável por realizar a interface entre o barramento externo e a EU. Dessa forma, ela faz a transformação das informações disponíveis em 16 bits para 20 bits, de acordo com o tipo de instrução que será executada. Além disso, ela faz buscas de instruções e as reserva em uma fila de 6 níveis, ao passo que a EU está ocupada decodificando a instrução atual.
D. 
Os registradores de uso geral fazem parte da BIU e servem como auxiliares na geração dos endereços de barramento.
A BIU é responsável por realizar a interface entre o barramento externo e a EU. Dessa forma, ela faz a transformação das informações disponíveis em 16 bits para 20 bits, de acordo com o tipo de instrução que será executada. Além disso, ela faz buscas de instruções e as reserva em uma fila de 6 níveis, ao passo que a EU está ocupada decodificando a instrução atual.
E. 
A BIU tem o objetivo de gerenciar a execução das instruções, fazendo sempre o controle de estados por meio de flags.
A BIU é responsável por realizar a interface entre o barramento externo e a EU. Dessa forma, ela faz a transformação das informações disponíveis em 16 bits para 20 bits, de acordo com o tipo de instrução que será executada. Além disso, ela faz buscas de instruções e as reserva em uma fila de 6 níveis, ao passo que a EU está ocupada decodificando a instrução atual.
A programação de microcontroladores é sempre uma tarefa importante no desenvolvimento de sistemas embarcados. E a escolha da linguagem de programação é fundamental para o bomdesenvolvimento dos seus projetos. Programas implementados em linguagem de baixo nível podem, muitas vezes, ser mais trabalhosos, porém, são executados mais rápidos, enquanto programas em linguagem de alto nível são mais fáceis de gerenciar e realizar manutenções. Veja o seguinte caso:
Sendo assim, construa uma lista com as vantagens e as desvantagens das linguagens de baixo e alto nível que serão apresentadas e discutidas na reunião.
Padrão de resposta esperado
Linguagem de baixo nível
Vantagens
Ocupa menos espaço na memória.
Maior velocidade de execução.
Possibilidade de otimização do processamento.
Controle total do hardware programado.
Maior controle do hardware programado.
Desvantagens
Extremamente complexa.
Demanda muito tempo no desenvolvimento de novos projetos.
Dificulta a manutenção de projetos antigos.
Exige projetistas experientes e bem treinados.
Depuração complexa.
Linguagem de alto nível
Vantagens
Linguagem mais amigável.
Elevado desempenho dos compiladores atuais.
Rápido desenvolvimento de aplicações mais complexas e eficientes.
Fácil manutenção do código.
Linguagem amplamente difundida, com uma vasta documentação e diversos exemplos práticos podem ser encontrados na Internet.
Desvantagens
Pode ocupar mais espaço na memória.
Processamento pode ser mais lento.
A otimização do código depende da qualidade do compilador da linguagem de alto nível.
1. 
Atualmente, existem diversas linguagens de programação voltadas para desenvolver soluções em sistemas microcontrolados. Essas linguagens podem ser classificadas como baixo nível e alto nível.
Sendo assim, de acordo com seus conhecimentos e com o conteúdo desta Unidade de Aprendizagem, marque a alternativa correta que contém apenas linguagens de alto nível:
A. RESPOSTA CORRETA
C, C++, Basic e Java.
As linguagens de baixo nível são aquelas que contêm pouco ou nenhum nível de abstração do conjunto de instruções de uma arquitetura de computador. Dentre as linguagens listadas na questão, somente a linguagem de máquina e o Assembly são classificadas como linguagens de baixo nível.
 As linguagens de alto nível são aquelas que contêm forte nível de abstração do conjunto de instruções de uma arquitetura de computador. Dentre as linguagens listadas na questão, as linguagens C, C++, Basic, Pascal, Java e Python são classificadas como linguagens de alto nível.
B. 
Assembly, Pascal, Java e Python.
As linguagens de baixo nível são aquelas que contêm pouco ou nenhum nível de abstração do conjunto de instruções de uma arquitetura de computador. Dentre as linguagens listadas na questão, somente a linguagem de máquina e o Assembly são classificadas como linguagens de baixo nível.
 As linguagens de alto nível são aquelas que contêm forte nível de abstração do conjunto de instruções de uma arquitetura de computador. Dentre as linguagens listadas na questão, as linguagens C, C++, Basic, Pascal, Java e Python são classificadas como linguagens de alto nível.
C. 
Python, linguagem de máquina e C++.
As linguagens de baixo nível são aquelas que contêm pouco ou nenhum nível de abstração do conjunto de instruções de uma arquitetura de computador. Dentre as linguagens listadas na questão, somente a linguagem de máquina e o Assembly são classificadas como linguagens de baixo nível.
 As linguagens de alto nível são aquelas que contêm forte nível de abstração do conjunto de instruções de uma arquitetura de computador. Dentre as linguagens listadas na questão, as linguagens C, C++, Basic, Pascal, Java e Python são classificadas como linguagens de alto nível.
D. 
Pascal, Basic, Python e Assembly.
As linguagens de baixo nível são aquelas que contêm pouco ou nenhum nível de abstração do conjunto de instruções de uma arquitetura de computador. Dentre as linguagens listadas na questão, somente a linguagem de máquina e o Assembly são classificadas como linguagens de baixo nível.
 As linguagens de alto nível são aquelas que contêm forte nível de abstração do conjunto de instruções de uma arquitetura de computador. Dentre as linguagens listadas na questão, as linguagens C, C++, Basic, Pascal, Java e Python são classificadas como linguagens de alto nível.
E. 
Linguagem de máquina, Assembly, C e Pascal.
As linguagens de baixo nível são aquelas que contêm pouco ou nenhum nível de abstração do conjunto de instruções de uma arquitetura de computador. Dentre as linguagens listadas na questão, somente a linguagem de máquina e o Assembly são classificadas como linguagens de baixo nível.
 As linguagens de alto nível são aquelas que contêm forte nível de abstração do conjunto de instruções de uma arquitetura de computador. Dentre as linguagens listadas na questão, as linguagens C, C++, Basic, Pascal, Java e Python são classificadas como linguagens de alto nível.
2. 
Um código de alto nível facilita a leitura do código e torna o desenvolvimento mais rápido. No entanto, são necessárias etapas adicionais para que o microcontrolador compreenda o programa desenvolvido em comparação com os códigos, utilizando a linguagem de baixo nível.
Nesse contexto, marque a alternativa com as etapas necessárias ordenadas para a conversão de códigos em linguagem de alto nível para linguagem de máquina:
A. 
Montagem e linkagem.
Na linguagem de alto nível, o código programado é primeiramente compilado para uma linguagem de baixo nível. Então, ele é montado para um código objeto pelo Assembler. E, por fim, ele é linkado em um código executável em linguagem de máquina, enquanto que na linguagem de baixo nível são necessárias apenas a montagem e a linkagem.
B. RESPOSTA CORRETA
Compilação, montagem e linkagem.
Na linguagem de alto nível, o código programado é primeiramente compilado para uma linguagem de baixo nível. Então, ele é montado para um código objeto pelo Assembler. E, por fim, ele é linkado em um código executável em linguagem de máquina, enquanto que na linguagem de baixo nível são necessárias apenas a montagem e a linkagem.
C. 
Compilação e linkagem.
Na linguagem de alto nível, o código programado é primeiramente compilado para uma linguagem de baixo nível. Então, ele é montado para um código objeto pelo Assembler. E, por fim, ele é linkado em um código executável em linguagem de máquina, enquanto que na linguagem de baixo nível são necessárias apenas a montagem e a linkagem.
D. 
Linkagem, montagem e compilação.
Na linguagem de alto nível, o código programado é primeiramente compilado para uma linguagem de baixo nível. Então, ele é montado para um código objeto pelo Assembler. E, por fim, ele é linkado em um código executável em linguagem de máquina, enquanto que na linguagem de baixo nível são necessárias apenas a montagem e a linkagem.
E. 
Compilação e montagem.
Na linguagem de alto nível, o código programado é primeiramente compilado para uma linguagem de baixo nível. Então, ele é montado para um código objeto pelo Assembler. E, por fim, ele é linkado em um código executável em linguagem de máquina, enquanto que na linguagem de baixo nível são necessárias apenas a montagem e a linkagem.
3. 
A linguagem de programação de baixo nível mais conhecida é o Assembly. Ela é muito utilizada em diversos microprocessadores e microcontroladores e pode apresentar algumas diferenças, de acordo com a arquitetura do dispositivo programado. Sendo assim, ela não é uma linguagem portátil.
De acordo com os seus conhecimentos e o conteúdo abordado nesta Unidade de Aprendizagem, marque a alternativa correta sobre a linguagem Assembly:
A. 
O Assembly é uma linguagem utilizada para programar dispositivos computacionais com instruções de código de máquina (0s e 1s).
As instruções da linguagem Assembly são mnemônicos, que são palavras (rótulos simbólicos) curtas de fácil memorização e autoexplicativas na língua inglesa. Desse modo, ela é mais legível do que a linguagem de máquina e menos familiar do que a linguagem de alto nível.
O compilador é um programa que traduz uma linguagem de alto nível para uma de baixo nível, e não é necessário para código em linguagem Assembly. A etapa de compilaçãoé necessária para programas em linguagem de alto nível.
 A linguagem Assembly não é diretamente reconhecida por um computador, sendo necessárias as etapas de montagem e linkagem para converter um código em Assembly para linguagem de máquina.
B. 
A conversão de um programa em linguagem Assembly precisa das etapas de compilação, montagem e linkagem para transformar o código programado em linguagem de máquina.
As instruções da linguagem Assembly são mnemônicos, que são palavras (rótulos simbólicos) curtas de fácil memorização e autoexplicativas na língua inglesa. Desse modo, ela é mais legível do que a linguagem de máquina e menos familiar do que a linguagem de alto nível.
O compilador é um programa que traduz uma linguagem de alto nível para uma de baixo nível, e não é necessário para código em linguagem Assembly. A etapa de compilação é necessária para programas em linguagem de alto nível.
 A linguagem Assembly não é diretamente reconhecida por um computador, sendo necessárias as etapas de montagem e linkagem para converter um código em Assembly para linguagem de máquina.
C. RESPOSTA CORRETA
O Assembly é uma linguagem que contém instruções com uma notação mais legível que a linguagem de máquina e menos familiar que a linguagem de alto nível.
As instruções da linguagem Assembly são mnemônicos, que são palavras (rótulos simbólicos) curtas de fácil memorização e autoexplicativas na língua inglesa. Desse modo, ela é mais legível do que a linguagem de máquina e menos familiar do que a linguagem de alto nível.
O compilador é um programa que traduz uma linguagem de alto nível para uma de baixo nível, e não é necessário para código em linguagem Assembly. A etapa de compilação é necessária para programas em linguagem de alto nível.
 A linguagem Assembly não é diretamente reconhecida por um computador, sendo necessárias as etapas de montagem e linkagem para converter um código em Assembly para linguagem de máquina.
D. 
O Assembly utiliza um programa utilitário para transformar o código programado em uma linguagem de baixo nível para um código de linguagem de alto nível, chamado compilador.
As instruções da linguagem Assembly são mnemônicos, que são palavras (rótulos simbólicos) curtas de fácil memorização e autoexplicativas na língua inglesa. Desse modo, ela é mais legível do que a linguagem de máquina e menos familiar do que a linguagem de alto nível.
O compilador é um programa que traduz uma linguagem de alto nível para uma de baixo nível, e não é necessário para código em linguagem Assembly. A etapa de compilação é necessária para programas em linguagem de alto nível.
 A linguagem Assembly não é diretamente reconhecida por um computador, sendo necessárias as etapas de montagem e linkagem para converter um código em Assembly para linguagem de máquina.
E. 
A linguagem de programação Assembly é diretamente compreendida por um sistema computacional.
As instruções da linguagem Assembly são mnemônicos, que são palavras (rótulos simbólicos) curtas de fácil memorização e autoexplicativas na língua inglesa. Desse modo, ela é mais legível do que a linguagem de máquina e menos familiar do que a linguagem de alto nível.
O compilador é um programa que traduz uma linguagem de alto nível para uma de baixo nível, e não é necessário para código em linguagem Assembly. A etapa de compilação é necessária para programas em linguagem de alto nível.
 A linguagem Assembly não é diretamente reconhecida por um computador, sendo necessárias as etapas de montagem e linkagem para converter um código em Assembly para linguagem de máquina.
4. 
Considere o conjunto de instruções em Assembly para um microcontrolador fictício:
Suponha que você trabalha como desenvolvedor e desenvolveu o seguinte trecho de código em Assembly:
1: MOVLW 3
2: MOV A, W
3: MOVLW 5
4: MOV B, W
5: SUB B, A
6: ADD A, B
Marque a alternativa que contenha os valores finais dos registradores A, B e W ao executar esse trecho de código.
A. 
A = 1, B = 2 e W = 3.
Na linha 1, o comando MOVLW 3 salva o valor numérico 3 no registrador W.
Na linha 2, o comando MOV A, W copia o conteúdo do registrador W, no momento é 3, para o registrador A.
Na linha 3, o comando MOVLW 5 salva o valor numérico 5 no registrador W. Esse é o valor final do registrador W.
Na linha 4, o comando MOV B, W copia o conteúdo do registrador W, no momento é 5, para o registrador B.
Na linha 5, o comando SUB B, A realiza a operação B = B (valor 5) - A (valor 3), portanto, o conteúdo de B ficará igual a 2. Este é o valor final do registrador B.
Na linha 6, o comando ADD A, B realiza a operação A = A (valor 3) + B (valor 2), portanto, o conteúdo de A ficará igual a 5. Este é o valor final do registrador A.
B. 
A = 3, B = 5 e W = 5.
Na linha 1, o comando MOVLW 3 salva o valor numérico 3 no registrador W.
Na linha 2, o comando MOV A, W copia o conteúdo do registrador W, no momento é 3, para o registrador A.
Na linha 3, o comando MOVLW 5 salva o valor numérico 5 no registrador W. Esse é o valor final do registrador W.
Na linha 4, o comando MOV B, W copia o conteúdo do registrador W, no momento é 5, para o registrador B.
Na linha 5, o comando SUB B, A realiza a operação B = B (valor 5) - A (valor 3), portanto, o conteúdo de B ficará igual a 2. Este é o valor final do registrador B.
Na linha 6, o comando ADD A, B realiza a operação A = A (valor 3) + B (valor 2), portanto, o conteúdo de A ficará igual a 5. Este é o valor final do registrador A.
C. 
A = 8, B = 5 e W = 3.
Na linha 1, o comando MOVLW 3 salva o valor numérico 3 no registrador W.
Na linha 2, o comando MOV A, W copia o conteúdo do registrador W, no momento é 3, para o registrador A.
Na linha 3, o comando MOVLW 5 salva o valor numérico 5 no registrador W. Esse é o valor final do registrador W.
Na linha 4, o comando MOV B, W copia o conteúdo do registrador W, no momento é 5, para o registrador B.
Na linha 5, o comando SUB B, A realiza a operação B = B (valor 5) - A (valor 3), portanto, o conteúdo de B ficará igual a 2. Este é o valor final do registrador B.
Na linha 6, o comando ADD A, B realiza a operação A = A (valor 3) + B (valor 2), portanto, o conteúdo de A ficará igual a 5. Este é o valor final do registrador A.
D. RESPOSTA CORRETA
A = 5, B = 2 e W = 5.
Na linha 1, o comando MOVLW 3 salva o valor numérico 3 no registrador W.
Na linha 2, o comando MOV A, W copia o conteúdo do registrador W, no momento é 3, para o registrador A.
Na linha 3, o comando MOVLW 5 salva o valor numérico 5 no registrador W. Esse é o valor final do registrador W.
Na linha 4, o comando MOV B, W copia o conteúdo do registrador W, no momento é 5, para o registrador B.
Na linha 5, o comando SUB B, A realiza a operação B = B (valor 5) - A (valor 3), portanto, o conteúdo de B ficará igual a 2. Este é o valor final do registrador B.
Na linha 6, o comando ADD A, B realiza a operação A = A (valor 3) + B (valor 2), portanto, o conteúdo de A ficará igual a 5. Este é o valor final do registrador A.
E. 
A = 6, B = 6 e W = 6.
Na linha 1, o comando MOVLW 3 salva o valor numérico 3 no registrador W.
Na linha 2, o comando MOV A, W copia o conteúdo do registrador W, no momento é 3, para o registrador A.
Na linha 3, o comando MOVLW 5 salva o valor numérico 5 no registrador W. Esse é o valor final do registrador W.
Na linha 4, o comando MOV B, W copia o conteúdo do registrador W, no momento é 5, para o registrador B.
Na linha 5, o comando SUB B, A realiza a operação B = B (valor 5) - A (valor 3), portanto, o conteúdo de B ficará igual a 2. Este é o valor final do registrador B.
Na linha 6, o comando ADD A, B realiza a operação A = A (valor 3) + B (valor 2), portanto, o conteúdo de A ficará igual a 5. Este é o valor final do registrador A.
5. 
A linguagem C é uma linguagem de programação de alto nível utilizada para a programação de computadores e microcontroladores. Essa popularidade vem da robustez e eficiência que a linguagem apresenta. Sendo assim, considere o código mostrado na figura a seguir:
Sendo assim, marque a alternativa com a saída impressa na tela ao executaresse código:
A. RESPOSTA CORRETA
Bem-vindo ao mundo do C.
Programar vai ser muito bom!
Os códigos em C seguem um fluxo de execução de cima para baixo, sendo assim, o comando printf("Bem-vindo ao mundo do C.\n\n"), na linha 4, é executado primeiro e imprime a mensagem (Bem-vindo ao mundo do C.) na tela. O código de formatação \n indica a quebra de linha e posiciona o cursor no início dessa nova linha. Como há dois \n no comando, então, duas novas linha serão saltadas. E, portanto, o comando printf("Programar vai ser muito bom!") irá imprimir a mensagem na terceira linha da tela, deixando uma linha de espaço entre as mensagens. Sendo assim, a saída impressa na tela será:
Bem-vindo ao mundo do C.
Programar vai ser muito bom!
B. 
Bem-vindo ao mundo do C.
Programar vai ser muito bom!
Os códigos em C seguem um fluxo de execução de cima para baixo, sendo assim, o comando printf("Bem-vindo ao mundo do C.\n\n"), na linha 4, é executado primeiro e imprime a mensagem (Bem-vindo ao mundo do C.) na tela. O código de formatação \n indica a quebra de linha e posiciona o cursor no início dessa nova linha. Como há dois \n no comando, então, duas novas linha serão saltadas. E, portanto, o comando printf("Programar vai ser muito bom!") irá imprimir a mensagem na terceira linha da tela, deixando uma linha de espaço entre as mensagens. Sendo assim, a saída impressa na tela será:
Bem-vindo ao mundo do C.
Programar vai ser muito bom!
C. 
Bem-vindo ao mundo do C. Programar vai ser muito bom!
Os códigos em C seguem um fluxo de execução de cima para baixo, sendo assim, o comando printf("Bem-vindo ao mundo do C.\n\n"), na linha 4, é executado primeiro e imprime a mensagem (Bem-vindo ao mundo do C.) na tela. O código de formatação \n indica a quebra de linha e posiciona o cursor no início dessa nova linha. Como há dois \n no comando, então, duas novas linha serão saltadas. E, portanto, o comando printf("Programar vai ser muito bom!") irá imprimir a mensagem na terceira linha da tela, deixando uma linha de espaço entre as mensagens. Sendo assim, a saída impressa na tela será:
Bem-vindo ao mundo do C.
Programar vai ser muito bom!
D. 
Programar vai ser muito bom!
Bem-vindo ao mundo do C.
Os códigos em C seguem um fluxo de execução de cima para baixo, sendo assim, o comando printf("Bem-vindo ao mundo do C.\n\n"), na linha 4, é executado primeiro e imprime a mensagem (Bem-vindo ao mundo do C.) na tela. O código de formatação \n indica a quebra de linha e posiciona o cursor no início dessa nova linha. Como há dois \n no comando, então, duas novas linha serão saltadas. E, portanto, o comando printf("Programar vai ser muito bom!") irá imprimir a mensagem na terceira linha da tela, deixando uma linha de espaço entre as mensagens. Sendo assim, a saída impressa na tela será:
Bem-vindo ao mundo do C.
Programar vai ser muito bom!
E. 
Programar vai ser muito bom! Bem-vindo ao mundo do C.
Os códigos em C seguem um fluxo de execução de cima para baixo, sendo assim, o comando printf("Bem-vindo ao mundo do C.\n\n"), na linha 4, é executado primeiro e imprime a mensagem (Bem-vindo ao mundo do C.) na tela. O código de formatação \n indica a quebra de linha e posiciona o cursor no início dessa nova linha. Como há dois \n no comando, então, duas novas linha serão saltadas. E, portanto, o comando printf("Programar vai ser muito bom!") irá imprimir a mensagem na terceira linha da tela, deixando uma linha de espaço entre as mensagens. Sendo assim, a saída impressa na tela será:
Bem-vindo ao mundo do C.
Programar vai ser muito bom!
No estudo de sistemas embarcados costuma-se considerar os componentes elétricos e eletrônicos externos em seu comportamento ideal. Um dos problemas mais comuns nesse tipo de abordagem é com a mudança de estado de chaves e contatos manuais,que durante a transição de um contato aberto para fechado, oscilam durante um pequeno intervalo de tempo, criando falsos disparos no sistema.
Veja as seguintes informações:
Proponha o uso de um módulo com interrupção que seja capaz de contornar o problema, explicando a sua solução e como chegou a ela.
Sua resposta
Um campo de bit variável global pode ser útil. Cada estado tem um conjunto de bits definidos dentro do campo de bits, cada um dos quais deve fornecer um status. Por exemplo, uma máquina de estado pode definir (e limpar) bits chamados SM1_BAD_FOO, SM1_BAD_BAR, SM1_BAD_BAZ. Na máquina de estado 1, se "BAD FOO" acontece, ele define o bit, caso contrário, ele limpa o bit. O mesmo para outros eventos "BAD" e outros estados. Em seguida, no loop principal, você verifica se o campo de bits global é diferente de zero. Se for, algo de ruim aconteceu e precisa lidar com isso. Você também pode fazer com que cada estado possa apenas SET o bit (não está claro) e somente o loop principal pode limpar, assim se houver influências externas no "BAD" indo embora, o loop principal pode ter mais visibilidade que cada máquina de estado. FYI, este tipo de solução é bastante comum em sistemas embarcados
1. 
A programação em Assembly é uma linguagem de baixo nível e é considerada umas das mais eficientes pois é mais próxima do código máquina. Agora, considerando a programação de interrupções em Assembly de um PIC16F877A.
Qual comando utilizo para habilitar as interrupções globais?
A. 
Utilizo: BSF INTCON, TMR0IE;
O comando apropriado para habilitar a máscara global de interrupções é: BSF INTCON,GIE. O comando BSF INTCON, TMR0IE é utilizado para habilitar a interrupção do timer 0. Os demais comandos são inválidos, que são: BSF IPC0,T1IP2; BSF INT0,PEIE, e; BSF GIE,0X0B.
B. 
Utilizo: BSF GIE,0X0B;
O comando apropriado para habilitar a máscara global de interrupções é: BSF INTCON,GIE. O comando BSF INTCON, TMR0IE é utilizado para habilitar a interrupção do timer 0. Os demais comandos são inválidos, que são: BSF IPC0,T1IP2; BSF INT0,PEIE, e; BSF GIE,0X0B.
C. 
Utilizo: BSF INT0,PEIE;
O comando apropriado para habilitar a máscara global de interrupções é: BSF INTCON,GIE. O comando BSF INTCON, TMR0IE é utilizado para habilitar a interrupção do timer 0. Os demais comandos são inválidos, que são: BSF IPC0,T1IP2; BSF INT0,PEIE, e; BSF GIE,0X0B.
D. 
Utilizo: BSF IPC0,T1IP2
O comando apropriado para habilitar a máscara global de interrupções é: BSF INTCON,GIE. O comando BSF INTCON, TMR0IE é utilizado para habilitar a interrupção do timer 0. Os demais comandos são inválidos, que são: BSF IPC0,T1IP2; BSF INT0,PEIE, e; BSF GIE,0X0B.
E. RESPOSTA CORRETA
Utilizo: BSF INTCON,GIE;
O comando apropriado para habilitar a máscara global de interrupções é: BSF INTCON,GIE. O comando BSF INTCON, TMR0IE é utilizado para habilitar a interrupção do timer 0. Os demais comandos são inválidos, que são: BSF IPC0,T1IP2; BSF INT0,PEIE, e; BSF GIE,0X0B.
2. 
Quando programamos um microcontrolador PIC16F877A em linguagem Assembly, quantos endereços de memória são necessários emascarar para habilitar as interrupções?
A. 
Dois endereços
O PIC16F877A possui um único vetor de interrupção, desta forma todas as interrupções são direcionadas para um mesmo endereço de memória por meio dos bits sinalizadores. Por tanto, mais um endereço de memoria não é necessário.
B. 
Com três endereços é o suficiente
O PIC16F877A possui um único vetor de interrupção, desta forma todas as interrupções são direcionadas para um mesmo endereço de memória por meio dos bits sinalizadores. Por tanto, mais um endereço de memoria não é necessário.
C. 
16 endereços, pois possui 16 níveis de interrupções;
O PIC16F877A possui um único vetor de interrupção, desta forma todas as interrupções são direcionadas para um mesmo endereço de memória por meio dos bits sinalizadores. Por tanto, mais um endereço de memoria não é necessário.
D. 
São utilizados 3 endereços, pois possui três níveis de interrupções;
O PIC16F877A possui um único vetor de interrupção, desta forma todas as interrupções são direcionadas para um mesmo endereço de memória por meio dos bits sinalizadores. Por tanto, mais um endereço de memoria não é necessário.
E. RESPOSTACORRETA
Um único endereço
O PIC16F877A possui um único vetor de interrupção, desta forma todas as interrupções são direcionadas para um mesmo endereço de memória por meio dos bits sinalizadores. Por tanto, mais um endereço de memoria não é necessário.
3. 
Seja um microcontrolador PIC18F4550, que trabalha com um diagrama lógico com dois níveis de prioridade de interrupções, interrupções de alto nível e de baixo nível, tal como apresentado na figura abaixo:
Quais configurações de dos registros habilitados, podem realizar que seja acionado uma interrupção de baixo nível?
A. 
Os registros TMR0IP, TMR0IE e GIE devem ser igual a 1, os demais registros devem ser 0;
O Diagrama lógico com dois níveis de prioridade auxilia para a interpretação de qual tipo de interrupção será ativa. Observando a figura, para que a interrupção de baixa prioridade seja ativa as portas lógicas 6, 9 e 12 devem ter uma saída em alto (saída igual a 1), e isto é possível mediante a ativação dos registros TMR0IF, TMR0IE e GIE, os demais registros devem ser necessariamente 0. Quanto os registros TMR0IP, TMR0IE e GIE são igual a 1, os demais registros 0, não são ativas as interrupções. O mesmo acontece quando somente o registro TMR0IP ou GIE unicamente eles são ativos.
B. 
Somente o registro TMR0IP ativo é o suficiente para que a interrupção de baixo nível seja ativa;
O Diagrama lógico com dois níveis de prioridade auxilia para a interpretação de qual tipo de interrupção será ativa. Observando a figura, para que a interrupção de baixa prioridade seja ativa as portas lógicas 6, 9 e 12 devem ter uma saída em alto (saída igual a 1), e isto é possível mediante a ativação dos registros TMR0IF, TMR0IE e GIE, os demais registros devem ser necessariamente 0. Quanto os registros TMR0IP, TMR0IE e GIE são igual a 1, os demais registros 0, não são ativas as interrupções. O mesmo acontece quando somente o registro TMR0IP ou GIE unicamente eles são ativos.
C. 
Somente o registro GIE ativo é o suficiente para que a interrupção de alto nível seja desativada;
O Diagrama lógico com dois níveis de prioridade auxilia para a interpretação de qual tipo de interrupção será ativa. Observando a figura, para que a interrupção de baixa prioridade seja ativa as portas lógicas 6, 9 e 12 devem ter uma saída em alto (saída igual a 1), e isto é possível mediante a ativação dos registros TMR0IF, TMR0IE e GIE, os demais registros devem ser necessariamente 0. Quanto os registros TMR0IP, TMR0IE e GIE são igual a 1, os demais registros 0, não são ativas as interrupções. O mesmo acontece quando somente o registro TMR0IP ou GIE unicamente eles são ativos.
D. 
Com os registros “Outros” e o registro GEI ativos, já é ativada a interrupção de baixo nível;
O Diagrama lógico com dois níveis de prioridade auxilia para a interpretação de qual tipo de interrupção será ativa. Observando a figura, para que a interrupção de baixa prioridade seja ativa as portas lógicas 6, 9 e 12 devem ter uma saída em alto (saída igual a 1), e isto é possível mediante a ativação dos registros TMR0IF, TMR0IE e GIE, os demais registros devem ser necessariamente 0. Quanto os registros TMR0IP, TMR0IE e GIE são igual a 1, os demais registros 0, não são ativas as interrupções. O mesmo acontece quando somente o registro TMR0IP ou GIE unicamente eles são ativos.
E. RESPOSTA CORRETA
Os registros TMR0IF, TMR0IE, GIE devem seri igual a 1, os demais registros devem ser 0;
O Diagrama lógico com dois níveis de prioridade auxilia para a interpretação de qual tipo de interrupção será ativa. Observando a figura, para que a interrupção de baixa prioridade seja ativa as portas lógicas 6, 9 e 12 devem ter uma saída em alto (saída igual a 1), e isto é possível mediante a ativação dos registros TMR0IF, TMR0IE e GIE, os demais registros devem ser necessariamente 0. Quanto os registros TMR0IP, TMR0IE e GIE são igual a 1, os demais registros 0, não são ativas as interrupções. O mesmo acontece quando somente o registro TMR0IP ou GIE unicamente eles são ativos.
4. 
Considere a programação de um microcontrolador para realizar a contagem de tempo para um relógio digital. Para esta atividade, foi utilizado um PIC18F4550, e a programação foi realizado em Assembly. Qual é registro do microcontrolador que é ativo quando o contador do timer finalizou a contagem?
A. 
T08BIT;
O registro TMR0IF é ativado quando a contagem foi finalizada. Já o registro T08BIT somente configura a contagem para 8 bits. O registro T0CS é utilizado para definir a contagem com a velocidade do clock interno. O registro TMR0ON é utilizado para ligar o timer e começar a contagem. Finalmente, o registro TMR0IP é configurado o timer 0 como alta prioridade.
B. 
T0CS;
O registro TMR0IF é ativado quando a contagem foi finalizada. Já o registro T08BIT somente configura a contagem para 8 bits. O registro T0CS é utilizado para definir a contagem com a velocidade do clock interno. O registro TMR0ON é utilizado para ligar o timer e começar a contagem. Finalmente, o registro TMR0IP é configurado o timer 0 como alta prioridade.
C. 
TMR0ON;
O registro TMR0IF é ativado quando a contagem foi finalizada. Já o registro T08BIT somente configura a contagem para 8 bits. O registro T0CS é utilizado para definir a contagem com a velocidade do clock interno. O registro TMR0ON é utilizado para ligar o timer e começar a contagem. Finalmente, o registro TMR0IP é configurado o timer 0 como alta prioridade.
D. 
TMR0IP;
O registro TMR0IF é ativado quando a contagem foi finalizada. Já o registro T08BIT somente configura a contagem para 8 bits. O registro T0CS é utilizado para definir a contagem com a velocidade do clock interno. O registro TMR0ON é utilizado para ligar o timer e começar a contagem. Finalmente, o registro TMR0IP é configurado o timer 0 como alta prioridade.
E. RESPOSTA CORRETA
TMR0IF;
O registro TMR0IF é ativado quando a contagem foi finalizada. Já o registro T08BIT somente configura a contagem para 8 bits. O registro T0CS é utilizado para definir a contagem com a velocidade do clock interno. O registro TMR0ON é utilizado para ligar o timer e começar a contagem. Finalmente, o registro TMR0IP é configurado o timer 0 como alta prioridade.
5. 
Um depurador é uma ferramenta utilizada para testar programas e encontrar defeitos assim como testar as interrupções e outras funções de nosso código. Os microcontroladores PIC possuem várias alternativas de depuradores ou debuggers que realizam esta tarefa. Respeito dos depuradores, podemos dizer que:
1. A depuração pode ser realizada mediante a utilização de um osciloscópio, um led ou o auxílio de um software de depuração;
2. As interrupções necessariamente devem ser avaliadas mediante a utilização de um software e de um hardware depurador para esta finalidade;
3. O software MPLAB é uma ferramenta de programação e depuração para microcontroladores da Microchip;
4. Em ciertas ocasiões a funções PWM dos microcontroladores não podem ser depuradas, devido ao risco potencial de danificar a carga; Das opções acima, indique as alternativas incorretas:
A. 
Somente a opção 4;
A única opção incorreta é a opção 2, de modo que as interrupções sim podem ser avaliadas mediante a utilização de um software depurador ou um hardware específico para esta finalidade. Já as funções de PWM dos microcontroladores podem ser depuradas, mas dependendo da situação, é possível que a carga seja danificada. A depuração de um programa de microcontrolador também pode ser executada mediante o uso de um osciloscópio, um led ou o auxílio de um software de depuração, portanto, as interrupções também podem ser avaliadas utilizado um depurador. Finalmente, um software de programação e depuração é o MPLAB ferramenta destinada aos microcontroladores da Microchip.
B. 
As opções 2 e 3;
A única opção incorreta é a opção 2, de modo que as interrupções sim podem ser avaliadas mediante a utilização de um software depurador ou um hardware específico para esta finalidade. Já as funções de PWM dos microcontroladores podem ser depuradas, mas dependendoda situação, é possível que a carga seja danificada. A depuração de um programa de microcontrolador também pode ser executada mediante o uso de um osciloscópio, um led ou o auxílio de um software de depuração, portanto, as interrupções também podem ser avaliadas utilizado um depurador. Finalmente, um software de programação e depuração é o MPLAB ferramenta destinada aos microcontroladores da Microchip.
C. 
A opção 1 e 3;
A única opção incorreta é a opção 2, de modo que as interrupções sim podem ser avaliadas mediante a utilização de um software depurador ou um hardware específico para esta finalidade. Já as funções de PWM dos microcontroladores podem ser depuradas, mas dependendo da situação, é possível que a carga seja danificada. A depuração de um programa de microcontrolador também pode ser executada mediante o uso de um osciloscópio, um led ou o auxílio de um software de depuração, portanto, as interrupções também podem ser avaliadas utilizado um depurador. Finalmente, um software de programação e depuração é o MPLAB ferramenta destinada aos microcontroladores da Microchip.
D. 
As opções 3 e 4;
A única opção incorreta é a opção 2, de modo que as interrupções sim podem ser avaliadas mediante a utilização de um software depurador ou um hardware específico para esta finalidade. Já as funções de PWM dos microcontroladores podem ser depuradas, mas dependendo da situação, é possível que a carga seja danificada. A depuração de um programa de microcontrolador também pode ser executada mediante o uso de um osciloscópio, um led ou o auxílio de um software de depuração, portanto, as interrupções também podem ser avaliadas utilizado um depurador. Finalmente, um software de programação e depuração é o MPLAB ferramenta destinada aos microcontroladores da Microchip.
E. RESPOSTA CORRETA
Somente a opção 2;
A única opção incorreta é a opção 2, de modo que as interrupções sim podem ser avaliadas mediante a utilização de um software depurador ou um hardware específico para esta finalidade. Já as funções de PWM dos microcontroladores podem ser depuradas, mas dependendo da situação, é possível que a carga seja danificada. A depuração de um programa de microcontrolador também pode ser executada mediante o uso de um osciloscópio, um led ou o auxílio de um software de depuração, portanto, as interrupções também podem ser avaliadas utilizado um depurador. Finalmente, um software de programação e depuração é o MPLAB ferramenta destinada aos microcontroladores da Microchip.
Normalmente, os programadores de microcontroladores escolhem a linguagem de alto nível C para desenvolver seus firmwares. A escolha da linguagem C é natural principalmente pelo alto nível de abstração que ela contém. Além disso, a vasta documentação encontrada na Internet também contribui para essa escolha.
Suponha que você trabalha como programador de firmware em uma empresa que desenvolve sistemas microcontrolados. Você deverá implementar um programa para trocar o estado do LED ao pressionar o botão. O circuito com as conexões dos componentes no PIC18F4550 é mostrado na figura a seguir:
Sendo assim, construa o programa para solucionar esse Desafio.
Padrão de resposta esperado
O primeiro passo é incluir a biblioteca com as configurações do processador (#include <pic18F4550.h>).
O segundo passo na primeira linha dentro da função main(), você deverá criar uma variável para armazenar o estado do LED e inicializá-la com o valor 0 (zero), desligado:
char estado = 0;
O terceiro passo é desabilitar os pinos analógicos e configurar o pino RA4 como saída digital e o pino RA3 como entrada digital por meio do registrador de função especial TRISA:
ADCON1 = ADCON1 | 0x0f; //Desabilita os pinos analógicos
TRISAbits.TRISA4 = 0; //Configura RA4 como saída digital
TRISAbits.TRISA3 = 1; //Configura RA3 como entrada digital
O quarto passo é criar o laço de repetição infinito para executar a tarefa principal:
while(1)
O quinto passo é, dentro do laço while (1), fazer o teste lógico para verificar se o botão foi pressionado e inverter o valor lógico da variável do estado utilizando o operador de negação ( ! ). Lembrando que o botão está com um resistor de pull-down:
if (PORTAbits.RA3 == 0){
 estado = !estado;
}
E, por fim, atualizar o estado do LED:
LATAbits.LATA4 = estado;
De modo, uma solução possível é:
#include <pic18F4550.h> //Biblioteca de configurações do MCU
// Função: void main(void)
void main (void) {
 char estado = 0; //Variável de controle do estado do LED
 ADCON1 = ADCON1 | 0x0f; //Desabilita pinos analógicos
 TRISAbits.TRISA4 = 0; //Configura RA4 como saída digital
 TRISAbits.TRISA3 = 1; //Configura RA3 como entrada digital
 //Laço de repetição infinito que executa aplicação principal
 while(1) {
 //Verificar se BOTAO_01 está pressionado
 if (PORTAbits.RA3 == 0){
 estado = !estado;
 }
 LATAbits.LATA4 = estado; //Atualiza LED
 }//Fim do while
}//Fim do main 
1. 
O C é uma das linguagens mais importantes e é utilizado como ferramenta de programação em diversos sistemas computacionais, inclusive em microcontroladores. Portanto, baseado no conteúdo da obra e no seu conhecimento, analise as afirmações a seguir sobre a linguagem de programação C.
I. A linguagem C é uma linguagem interpretada e imperativa.
II. O C é um exemplo de linguagem que diferencia instruções e comandos maiúsculos de minúsculos.
III. O caractere % é utilizado para identificar um comentário que utiliza somente uma linha em um programa escrito na linguagem C.
 IV. A linguagem de programação C não permite a criação de funções do usuário.
Assinale a opção referente às afirmações corretas.
A. 
Está correta somente a afirmativa I.
A afirmativa I está errada, pois a linguagem de programação C utiliza um compilador como programa auxiliar para verificar o seu código. Portanto, ela é compilada e imperativa.
A afirmativa II está correta, pois a linguagem de programação C é "case sensitive", ou seja, diferencia variáveis, comandos, palavras reservadas, etc., escritas com letras maiúsculas e minúsculas. Por exemplo, cont, Cont e CONT são reconhecidos como símbolos deferentes.
A afirmativa III está errada, pois a linguagem de programação C utiliza duas barras ( // ) para identificar um comentário que utiliza somente uma linha. O caractere % é usado para calcular o resto da divisão inteira entre dois números.
A afirmativa IV está errada, pois a linguagem de programação C, além de disponibilizar várias funções em suas bibliotecas padrão, permite que o usuário crie suas próprias funções.
Portanto, somente a afirmativa II está correta.
B. 
Estão corretas somente as afirmativas I e III.
A afirmativa I está errada, pois a linguagem de programação C utiliza um compilador como programa auxiliar para verificar o seu código. Portanto, ela é compilada e imperativa.
A afirmativa II está correta, pois a linguagem de programação C é "case sensitive", ou seja, diferencia variáveis, comandos, palavras reservadas, etc., escritas com letras maiúsculas e minúsculas. Por exemplo, cont, Cont e CONT são reconhecidos como símbolos deferentes.
A afirmativa III está errada, pois a linguagem de programação C utiliza duas barras ( // ) para identificar um comentário que utiliza somente uma linha. O caractere % é usado para calcular o resto da divisão inteira entre dois números.
A afirmativa IV está errada, pois a linguagem de programação C, além de disponibilizar várias funções em suas bibliotecas padrão, permite que o usuário crie suas próprias funções.
Portanto, somente a afirmativa II está correta.
C. RESPOSTA CORRETA
Está correta somente a afirmativa II.
A afirmativa I está errada, pois a linguagem de programação C utiliza um compilador como programa auxiliar para verificar o seu código. Portanto, ela é compilada e imperativa.
A afirmativa II está correta, pois a linguagem de programação C é "case sensitive", ou seja, diferencia variáveis, comandos, palavras reservadas, etc., escritas com letras maiúsculas e minúsculas. Por exemplo, cont, Cont e CONT são reconhecidos como

Outros materiais