Você está na página 1de 51

Microcontroladores e

Microprocessadores

Microprocessadores
Diretor Executivo
DAVID LIRA STEPHEN BARROS

Gerente Editorial
CRISTIANE SILVEIRA CESAR DE OLIVEIRA
Projeto Gráfico
TIAGO DA ROCHA
Autoria
DANYELLE GARCIA GUEDES
ALAN DE OLIVEIRA SANTANA
AUTORIA
Danyelle Garcia Guedes
Sou mestranda, pela Universidade Federal de Campina Grande, em
Ciência e Engenharia de Materiais, especialista, pela Faculdade Campos
Elíseos, em Docência do Ensino Superior e Bacharel pela Universidade
Federal de Campina Grande em Ciência e Engenharia de Materiais. Atuo
como membro e pesquisadora no Laboratório de Desenvolvimento de
Biomateriais do Nordeste (Certbio), na pesquisa e desenvolvimento de
dispositivos biossensores e biomateriais e no Laboratório de Tecnologia
de Materiais da UFCG, no desenvolvimento de materiais cerâmicos
e nanofibras. Atualmente, sou membro do Laboratório de Materiais
Cerâmicos e Avançados. Sou apaixonada pelo que faço e adoro transmitir
minha experiência de vida àqueles que estão iniciando em suas profissões.
Por isso fui convidada, pela Editora Telesapiens, a integrar seu elenco de
autores independentes. Estou muito feliz em poder ajudar você, nesta
fase de muito estudo e trabalho. Conte comigo!

Alan de Oliveira Santana


Sou mestre em Sistemas da Computação, pela Universidade Federal
do Rio Grande do Norte (2017). Sou graduado em Ciência da Computação,
pela Universidade do Estado do Rio Grande do Norte (Natal, 2016). Tenho
experiência na área de Ciência da Computação, atuando, principalmente,
nos seguintes temas: tutores virtuais, chatbots e jogos educativos.

Sou apaixonado pelo que faço e adoro transmitir minha experiência


de vida àqueles que estão iniciando em suas profissões. Por isso, fui
convidado, pela Editora Telesapiens, a integrar seu elenco de autores
independentes. Estou muito feliz em poder ajudar você, nesta fase de
muito estudo e trabalho. Conte comigo!
ICONOGRÁFICOS
Olá. Esses ícones irão aparecer em sua trilha de aprendizagem toda vez
que:

OBJETIVO: DEFINIÇÃO:
para o início do houver necessidade
desenvolvimento de de se apresentar um
uma nova compe- novo conceito;
tência;

NOTA: IMPORTANTE:
quando forem as observações
necessários obser- escritas tiveram que
vações ou comple- ser priorizadas para
mentações para o você;
seu conhecimento;
EXPLICANDO VOCÊ SABIA?
MELHOR: curiosidades e
algo precisa ser indagações lúdicas
melhor explicado ou sobre o tema em
detalhado; estudo, se forem
necessárias;
SAIBA MAIS: REFLITA:
textos, referências se houver a neces-
bibliográficas e links sidade de chamar a
para aprofundamen- atenção sobre algo
to do seu conheci- a ser refletido ou dis-
mento; cutido sobre;
ACESSE: RESUMINDO:
se for preciso aces- quando for preciso
sar um ou mais sites se fazer um resumo
para fazer download, acumulativo das últi-
assistir vídeos, ler mas abordagens;
textos, ouvir podcast;
ATIVIDADES: TESTANDO:
quando alguma quando o desen-
atividade de au- volvimento de uma
toaprendizagem for competência for
aplicada; concluído e questões
forem explicadas;
SUMÁRIO
As Instruções Básicas dos Microprocessadores............................. 10
Instruções..............................................................................................................................................10

Movimentação ou Transferência de Dados............................................... 13

Aritmética............................................................................................................................ 15

Lógica ou Manipulação de Bits.......................................................................... 18

Controle do Processador......................................................................................... 19

Fluxograma e Programação em Assembly....................................... 21


Fluxogramas........................................................................................................................................ 21

Símbolos do Fluxograma..................................................................... 21

Fundamentos da Programação em Microprocessadores..................................24

Linguagem de Máquina...........................................................................................26

Linguagem de Alto Nível.........................................................................................27

Linguagem Assembly................................................................................................27

Tipo de Assembler....................................................................................29

Formato de Instrução da Linguagem Assembly............... 30

Registradores e Acesso à Memória...................................................... 32


Organização da Memória de um Microprocessador..............................................32

Memória Secundária...................................................................................................33

Memória Principal.........................................................................................................33

Memória do Microprocessador.......................................................................... 38

Dispositivos de Entrada e Saída............................................................. 41


Meios de Transferência de Dados........................................................................................ 41

Dispositivo de Entrada e Saída Programado............................................45

Dispositivo de Entrada e Saída com Interrupções...............................47

Dispositivo de Entrada e Saída com Acesso Direto............................ 48


Microcontroladores e Microprocessadores 7

02
UNIDADE
8 Microcontroladores e Microprocessadores

INTRODUÇÃO
Os microcontroladores e os microprocessadores são dispositivos
utilizados para o processamento lógico de informações do mundo externo
com a intenção de que resultados e soluções para problemas sejam,
digitalmente, desenvolvidos. Nesse estudo, serão abordados como a
unidade central de processamento de um microcomputador executa
todos os seus programas que são armazenados em sua memória principal.
No caso, será introduzido que, por meio da busca de suas instruções,
as CPUs examinam e executam todas as ações, demandadas pelos
programas, uma após a outra. Você verá também que os fluxogramas
são instrumentos fundamentais para a implementação de rotinas de
programação em geral, além disso, no caso de microprocessadores,
estes são normalmente programados, usando instruções em linguagem
Assembly que será, também, introduzida nesse capitulo. Além desses
conteúdos, serão abordadas as memórias do microprocessador e os
dispositivos de entrada e saída. Entendeu? Ao longo desta unidade letiva,
você vai mergulhar neste universo!
Microcontroladores e Microprocessadores 9

OBJETIVOS
Olá. Seja muito bem-vindo à Unidade 2. Nosso objetivo é auxiliar
você no desenvolvimento das seguintes competências profissionais até o
término desta etapa de estudos:

1. Classificar as instruções básicas de um microprocessador.

2. Entender a lógica do fluxograma e da programação em Assembly.

3. Definir conceitos sobre registradores e o mecanismo de acesso à


memória.

4. Identificar os dispositivos de entrada e saída em microprocessadores.


10 Microcontroladores e Microprocessadores

As Instruções Básicas dos


Microprocessadores

OBJETIVO:
Ao término deste capítulo, você será capaz de
entender como se classificam as instruções básicas dos
microprocessadores. Isto será fundamental para o exercício
de sua profissão. As pessoas que tentaram avançar nos
estudos, sem compreender esses conceitos básicos,
tiveram muita dificuldade para entender como esses
dispositivos desenvolvem suas tarefas. E então? Motivado
para desenvolver esta competência? Então vamos lá.
Avante!.

Instruções
É possível concluir que os computadores de, uma maneira geral,
são organizados por meio de uma unidade central de processamento, ou
CPU, que atua como “cérebro” do computador e desempenha a função
principal de executar todos os programas que são armazenados em sua
memória principal, por meio da busca de suas instruções, as quais são, a
todo momento, examinadas e executadas, uma após a outra.
A Unidade de Processamento Central (ou CPU) é a parte
do computador que é construída para ser obcecada com
a pergunta “E agora?”. Se seu computador é avaliado em
3.0 Gigahertz, significa que ele irá perguntar “E agora?” três
bilhões de vezes por segundo. Você terá que aprender
como falar rápido para acompanhar a CPU. (SEVERANCE,
2020, p.3)

Em outras palavras, a unidade de processamento está sempre em


busca da próxima operação a desenvolver, assim, se pensarmos que
esse componente é um funcionário de uma empresa, podemos ilustrar
que é como se este funcionário estivesse a todo instante, executando
alguma operação e à medida que trabalha está sempre a perguntar: qual
a próxima tarefa? Ou seja, ele sempre finaliza uma tarefa e já busca a
próxima instrução.
Microcontroladores e Microprocessadores 11

Figura 1 – Arquitetura do hardware

O que
Software; fazer agora?

Unidade de
Entrada e saída Network;
processamento
de dados; central;

Memória
Memória secundária.
principal;

Fonte: SEVERANCE (2020).

DEFINIÇÃO:

Os comandos que controlam as ações do processador são


chamados de instruções (RAFIQUZZAMAN, 2008).

Neste sentido, uma instrução pode ser definida como um comando


que é emitido, na forma de um padrão binário, para executar a tarefa
atribuída em um dado especificado.

Assim, por meio das instruções que são fornecidas ao


microprocessador, são indicados comandos que orientam e direcionam
as tarefas que devem desenvolver e as funções que deve assumir.

Como se sabe, a unidade de processamento central é formada por


diferentes itens. No caso, a unidade de aritmética e lógica é responsável
por efetuar, precisamente, as operações lógicas e aritméticas, como
adições e função lógica AND. Já a unidade de controle é justamente a
porção que se responsabiliza por pesquisar, na memória principal, as
instruções a serem implementadas, determinando sempre sua categoria.
12 Microcontroladores e Microprocessadores

IMPORTANTE:

Você sabe onde o trabalho de um programador entra nesse


sistema de fornecimento de instruções? Um programador
vai, em suma, estabelecer uma comunicação com a CPU,
informando a ela o que fazer agora, assim, irá indicar que ela
utilize a memória principal, a memória secundária, a rede,
ou os dispositivos de entrada e saída. Esse trabalho ocorre
por meio de uma descrição antecipada das instruções no
sistema. Dessa maneira, os programadores descrevem
as instruções que serão armazenadas por meio dos
programas. O ato de escrever, corretamente, as instruções
que deverão ser seguidas pelo computador, corresponde
ao ato de programar.

Assim, o agrupamento de instruções que decidem a função do


microprocessador pode ser identificado como conjunto de instruções. Os
conjuntos de instruções são códigos de instruções para realizar alguma
tarefa.

Cada instrução é composta, basicamente, por duas partes: a


primeira parte é chamada OPCODE, ou código de operação, que descreve
a função a ser executada, e a segunda parte é chamada de OPERAND, ou
operando, que, uma vez operando, fornece os dados que serão operados.

As instruções, para simplificar o aprendizado do seu conjunto,


podem ser divididas em categorias. As categorizações podem ser:

1. Movimentação ou transferência de dados.

2. Aritmética.

3. Lógica ou manipulação de bits.

4. Controle do processador.

A seguir serão detalhadas cada uma dessas categorias, bem como


serão apresentadas as listas de instruções de cada uma, referentes a um
tipo de processador, escolhido para exemplificar o tema.
Microcontroladores e Microprocessadores 13

Movimentação ou Transferência de Dados


As instruções, que se responsabilizam pela transferência ou
movimentação de dados, podem ser identificadas como as que
apresentam os tipos de operações mais simples e típicas que são
desenvolvidas em um sistema computacional.

Essas instruções, basicamente, transferem dados de um local para


outro, ou fazem cópias de determinados dados em mais de um local.

Os processadores são compostos por barramentos (como já visto,


os barramentos podem ser definidos como subsistemas que transferem
dados, entre componentes de computador no computador ou entre
computadores). Entre eles há um barramento de dados local que é
conectado aos registradores do processador.

Cada registro caracteriza-se como uma trava na qual suas saídas e


entradas são conectadas ao barramento de dados local.

No barramento, os dados podem ser sincronizados nas entradas ou


habilitados, a partir das saídas.

A movimentação de dados pode ocorrer a partir dos registros do


processador para a memória, a partir da memória para o registro do
processador ou, ainda, de um registro para outro.

Em geral, a movimentação de dados pode ser implementada, por


exemplo, para o carregamento, armazenamento, limpeza, transferência,
trocas de instruções.

Por meio de instruções de carregamento, por exemplo, os dados


são, basicamente, movidos da memória para os registros do processador.
Nas instruções de armazenamento, os dados são movidos dos registros
de processador para a memória.

As instruções de limpeza compreendem um subconjunto das


operações de transferência de dados. Nesse caso, ocorre a limpeza de
cada bit do operando para os quais são atribuídos o valor lógico 0. Tais
instruções são, normalmente, utilizadas para limpar um local da memória
ou um acumulador a zero, antes de usá-lo como um contador.
14 Microcontroladores e Microprocessadores

Nas instruções de transferência em si, os dados são movimentados


de um registro de processador para outro, e se enquadram nesta categoria.

No caso das instruções de troca, o conteúdo do acumulador duplo


é trocado com o conteúdo de um dos registradores de índice que fazem
parte dessa categoria.

Assim, em termos gerais, essas instruções são utilizadas para


transferir os dados do operando de origem para o operando de destino.

A seguir, está a lista de algumas instruções para um microprocessador


8086.

•• Instrução para transferir uma palavra:

•• MOV – instrução que copia o byte ou palavra da fonte


fornecida para o destino fornecido.

•• PPUSH - instrução que coloca uma palavra no topo da


pilha.

•• POP - instrução que obtém uma palavra do topo da pilha


para o local fornecido.

•• PUSHA - instrução que coloca todos os registradores na


pilha.

•• POPA - instrução que obtém palavras da pilha para todos


os registradores.

•• XCHG - instrução que troca os dados de dois locais.

•• XLAT - instrução que traduz um byte em AL, usando uma


tabela na memória.

•• Instruções para transferência de porta de entrada e saída:

•• IN - instrução que lê um byte ou palavra da porta, fornecida


para o acumulador.

•• OUT - instrução que envia um byte ou palavra do


acumulador para a porta fornecida.
Microcontroladores e Microprocessadores 15

•• Instruções para transferir o endereço:

•• LEA - instrução que carrega o endereço do operando no


registro fornecido.

•• LDS - instrução que carrega o registro DS e outro registro


fornecido da memória.

•• LES - instrução que carrega o registro ES e outro registro


fornecido da memória (TUTORIALSPOINT, 2021).

Observe que foram identificados os comandos pela transferência


ou movimentação de dados. A seguir, serão apresentados mais alguns
tipos.

Aritmética
As instruções aritméticas compreendem a categoria de instruções
que se responsabilizam por implementar comandos de adição, subtração,
multiplicação e divisão com os dados.

As instruções de adição implementam operações de adição


matemática nos dados que compõem o conteúdo de um acumulador ou
local de memória.

Nessa categoria das instruções aritméticas, enquadram-se as


instruções de incremento, as quais aumentam certa quantidade, fixa ou
variável, ao elemento operando. Em geral, as instruções de incremento
substituem o operando anterior com o resultado incrementado.

As instruções de subtração, por exemplo, implementam operações


de subtração matemática nos dados que compõem o conteúdo de um
acumulador ou local de memória.

Há também as instruções de negação que se enquadram nessa


categoria. Essas atuam na negação e decremento de elementos e
compreendem um subconjunto das instruções de subtração. No
decremento, ocorre a subtração de um operando e é subscrito o operando
anterior com o referido resultado.
16 Microcontroladores e Microprocessadores

A seguir está a lista de algumas instruções para um microprocessador


8086.

•• Instruções para realizar a adição:

•• ADD –instrução que adiciona o byte fornecido a byte ou


palavra a palavra.

•• ADC - instrução que adiciona com transporte.

•• INC - instrução que incrementa o byte ou palavra fornecido


em 1.

•• AAA - instrução que ajusta ASCII, após a adição.

•• DAA - instrução que ajusta o decimal, após a operação de


adição ou subtração.

•• Instruções para realizar a subtração:

•• SUB - instrução que subtrai o byte do byte / palavra


da palavra. SBB - instrução que realiza subtração com
empréstimo.

•• DEC - instrução que diminui o byte ou palavra fornecida


em 1.

•• NPG - instrução que nega cada bit do byte ou palavra


fornecida e adiciona o complemento de 1/2.

•• CMP - instrução que compara dois bytes ou palavras


fornecidas.

•• AAS - instrução que ajusta os códigos ASCII, após a


subtração.

•• DAS - instrução que ajusta o decimal, após a subtração.


Microcontroladores e Microprocessadores 17

•• Instrução para fazer multiplicação:

•• MUL - instrução que multiplica byte sem sinal por byte ou


palavra por palavra.

•• IMUL - instrução que multiplica byte assinado por byte ou


palavra por palavra.

•• AAM - instrução que ajusta os códigos ASCII, após a


multiplicação.

•• Instruções para realizar a divisão:

•• DIV - instrução que dividi a palavra sem sinal por byte ou


palavra dupla, sem sinal por palavra.

•• IDIV - instrução que dividi a palavra com sinal por byte ou


palavra dupla com sinal por palavra.

•• AAD - instrução que ajusta os códigos ASCII, após a divisão.

•• CBW - instrução que preenche o byte superior da palavra


com as cópias do bit de sinal do byte inferior.

•• CWD - instrução que preenche a palavra superior da


palavra dupla com o bit de sinal da palavra inferior
(TUTORIALSPOINT, 2021).

Observe que foram identificados comandos de adição, subtração,


multiplicação e divisão com os dados. A seguir, serão apresentados mais
alguns tipos.
18 Microcontroladores e Microprocessadores

Lógica ou Manipulação de Bits


Nas instruções lógicas, são implementadas operações lógicas com
os dados.

As operações lógicas são realizadas entre dois operandos, um


dos quais é o conteúdo de um acumulador. Eles apanham o conteúdo
do acumulador e de um operando da memória, realizam uma operação
lógica bit-bit neles e armazenam os resultados no acumulador.

As operações lógicas são caracterizadas pelas portas lógicas AND,


OR, NAND, NOR, EX-OR, EX-NOR, NOT.

ACESSE:
Para relembrar os conceitos de portas lógicas acesse aqui.
O vídeo aborda conceitos fundamentais a respeito das
portas lógicas, componentes básicos e imprescindíveis dos
circuitos integrados lógicos.

A seguir, está a lista de algumas instruções para um microprocessador


8086.

•• Instruções para realizar operação lógica:

•• NOT - usado para inverter cada bit de um byte ou palavra.

•• AND - usado para adicionar cada bit em um byte/palavra


com o bit correspondente em outro byte/palavra.

•• OU - usado para multiplicar cada bit em um byte/palavra


com o bit correspondente em outro byte/palavra.

•• XOR - usado para realizar a operação OU exclusivo sobre


cada bit em um byte/palavra com o bit correspondente
em outro byte/palavra.

•• TEST - usado para adicionar operandos para atualizar os


sinalizadores, sem afetar os operandos (TUTORIALSPOINT,
2021).
Microcontroladores e Microprocessadores 19

Observe que foram identificados comandos que executam


operações lógicas com os dados. A seguir serão apresentados mais
alguns tipos.

Controle do Processador
Entre as instruções de controle, há aquelas que são designadas
para controle das ações dos processadores, as quais definem e redefinem
valores dos sinalizadores e as de controle de iteração ou processos de
repetição que servem para executar as instruções, fornecidas várias vezes.

A seguir estão as instruções deste grupo para o microprocessador


8086.

•• Controle do processador:

•• STC - usado para definir o sinalizador de transporte CF para


1.

•• CLC - usado para limpar/redefinir o sinalizador de


transporte CF para 0.

•• CMC - usado para colocar complemento no estado da


bandeira de transporte CF.

•• STD - usado para definir o sinalizador de direção DF para 1.

•• CLD - usado para limpar/redefinir o sinalizador de direção


DF para 0.

•• STI - usado para definir o sinalizador de ativação de


interrupção para 1, ou seja, ativar a entrada INTR.

•• CLI - usado para limpar o sinalizador de ativação de


interrupção para 0, ou seja, desativar a entrada INTR.

•• Instruções de controle de iteração:

•• LOOP - usado para fazer um loop de um grupo de


instruções até que a condição seja satisfeita, ou seja, CX = 0

•• LOOPE/LOOPZ - usado para repetir um grupo de instruções


até que satisfaça ZF = 1 & CX = 0
20 Microcontroladores e Microprocessadores

•• LOOPNE/LOOPNZ - usado para repetir um grupo de


instruções até que satisfaça ZF = 0 & CX = 0

•• JCXZ - usado para pular para o endereço fornecido se CX =


0. (TUTORIALSPOINT, 2021).

Perceba que, geralmente, para facilitar o processo de programação,


os profissionais podem consultar diretamente, os respectivos Guias de
Referências de Programação de cada dispositivo para que assim utilize as
instruções de forma coerente, correspondente ao microprocessador com
o qual está trabalhando.

RESUMINDO:
E então? Gostou do que lhe mostramos? Aprendeu mesmo?
Agora, só para termos certeza de que você realmente
entendeu o tema de estudo deste capítulo, vamos resumir
tudo o que vimos. Você deve ter aprendido que a unidade
central de processamento, ou CPU, executa todos os
programas que são armazenados em sua memória principal
por meio da busca de suas instruções, as quais são, a todo
momento, examinadas e executadas, uma após a outra.

A unidade de controle é justamente a porção que se responsabiliza


por pesquisar, na memória principal, as instruções a serem implementadas,
determinando sempre sua categoria. Os comandos que controlam as
ações do processador são chamados de instruções. Uma instrução
pode ser definida como um comando que é emitido, na forma de um
padrão binário, para executar a tarefa atribuída em um dado especificado.
Cada instrução é composta, basicamente, por duas partes: a primeira
parte é chamada OPCODE, ou código de operação, a qual descreve a
função a ser executada, e a segunda parte é chamada de OPERAND, ou
operando, que uma vez operando fornece os dados que serão operados.
Para simplificar o aprendizado do conjunto de instruções, elas podem ser
divididas em categorias. As categorizações podem ser: movimentação ou
transferência de dados; aritmética; lógica ou manipulação de bits; controle
do processador.
Microcontroladores e Microprocessadores 21

Fluxograma e Programação em Assembly


OBJETIVO:
Ao término deste capítulo, você será capaz de entender
as linguagens de programação de microprocessadores
em geral, com ênfase nas estratégias de programação em
Assembly e no uso de fluxogramas. Isto será fundamental
para o exercício de sua profissão. A programação em
Assembly fundamenta a programação em linguagem
de montagem de máquina e conhecer essa tecnologia
auxilia para a construção dos conhecimentos dos novos
estudantes E então? Motivado para desenvolver esta
competência? Então vamos lá. Avante!

Fluxogramas
Preliminarmente, ao escrever um programa em linguagem assembly
é interessante que ele seja representado por meio de um fluxograma.

Os fluxogramas compreendem elementos fundamentais de


implementação de rotinas de programação em geral.

Com uso dos fluxogramas, é possível sistematizar toda a estratégia


desenvolvida, no projeto de um programa. Essa ferramenta indica a
orientação do fluxo de informações, pensada para o microprocessador
trabalhar.

Símbolos do Fluxograma
Serão apresentadas apenas alguns símbolos básicos para
representar um fluxograma: as linhas de conexão, o retângulo, a elipse e
o losango.

As linhas de conexão indicam a orientação do fluxo de


processamento dos dados que o microprocessador deve seguir. Essas
linhas são utilizadas para conectar os blocos básicos de um fluxograma.
Compreendem setas para cima, para baixo e para os lados direito e
esquerdo.
22 Microcontroladores e Microprocessadores

A elipse é uma forma geométrica, utilizada para demarcar onde


o programa inicia e onde finaliza. Em seu interior, deve estar descrito
o comando de início e a rotina a qual está associado. Ele deve sempre
conter a sua função ou objetivo.

Observe o exemplo de início e fim exibido a seguir:


Figura 2 – Elipse de um fluxograma

Ler teclado

Fim de rotina
Ler teclado

Fonte: GIMENEZ (2002).

O retângulo representa as operações de movimentação


implementadas nos dados e endereços, bem como as operações lógicas
e de rotação.
Figura 3 – Retângulo de um fluxograma

Fonte: GIMENEZ (2002).

O losango, por sua vez, representa o processo em que demanda


a tomada de decisão. Assim, é desenvolvido um teste comparativo com
os dados no bit do registrador ou da posição de memória com um dado
valor, caso a condição seja satisfeita certo caminho é identificado para o
processamento da informação, porém caso a condição não seja satisfeita,
outro caminho é designado.
Microcontroladores e Microprocessadores 23

Figura 4 – Losango de um fluxograma

sim não sim


(C) = 1? (A) = 0?

não

Fonte: GIMENEZ (2002).

A imagem a seguir apresenta a forma básica de um programa com


formato simples:
Figura 5 – Elipse de um fluxograma

Nome do programa

Definição das condições iniciais

Processamento

Definição da saída dos resultados

Fim do programa

Fonte: GIMENEZ (2002).

Observe que a construção de um fluxograma permite planejar, de


forma estratégica, a disposição de um código de programa e de todas
24 Microcontroladores e Microprocessadores

as tarefas e problemas que deverão ser resolvidos nele. A visualização


prévia do comportamento do código viabilizada pelo uso dos fluxogramas
sistematiza toda a estratégia, desenvolvida no projeto do programa e
auxilia na construção mais eficiente de um código, com menor quantidade
de erros e maior aproveitamento das instruções.

Fundamentos da Programação em
Microprocessadores
Microprocessadores são normalmente programados, usando
instruções em linguagem Assembly.

A arquitetura e os microprogramas de um microprocessador


são os elementos que determinam todas as suas instruções. Como já
estudado, são esses conjuntos de instruções que indicam comandos ao
microprocessador. A linguagem de programação Assembly compreende
um tipo de linguagem de baixo nível que apresenta conjunto de
instruções, por meio da qual se pretende projetar um programa, iguais ao
conjunto que é definido pelo fabricante da família de microcontroladores
ou microprocessadores (GIMENEZ, 2002).

É importante observar que, além das linguagens Assembly, os


microcomputadores podem fazer uso também de linguagens que sejam
orientadas para a compreensão do homem, denominadas de linguagens
de médio e alto nível, como é o caso da linguagem C, da BASIC e da
PL/M.

Dessa maneira, as linguagens de programação de um


microprocessador podem ser categorizadas em três tipos principais:

1. Linguagem de máquina.

2. Linguagem Assembly.

3. Linguagem de alto nível.

Os programas que são construídos, em linguagem de máquina,


são compostos por códigos operacionais binários ou hexadecimais. Em
termos gerais, há um enorme grau de dificuldade, associado ao uso de
qualquer um desses tipos de linguagens para a programação de um
Microcontroladores e Microprocessadores 25

microcomputador, tendo em vista que em todos os casos se lidam apenas


com números.

Já a representação dos programas em Assembly e linguagens de


alto nível ocorrem por meio de instruções conhecidas como English-
language-type, que são instruções determinadas, utilizando palavras
características em inglês.

ACESSE:

Para saber um pouco mais a respeito das diferenças entre


as linguagens de alto nível e de baixo nível acesse aqui.

Geralmente para os programadores, o uso dessas duas últimas


linguagens se torna mais conveniente. Porém, é válido perceber que
apenas a escrita das instruções é que difere esses tipos de linguagem.
Em geral, as máquinas operam como números binários, assim, um
tradutor deve ser usado para converter esses programas em linguagem
de máquina binária, só assim o microprocessador é capaz de executar os
programas.

Esse processo de tradução, em síntese, ocorre por meio de um


assembler que traduz os programas que foram descritos em linguagem
Assembly para um programa em linguagem de máquina. E no caso das
linguagens de alto nível, há a atuação de um componente, definido como
compilador ou interpretador, o qual converte um programa de linguagem
de alto nível, como C ou C ++, em um programa de linguagem de máquina.

Os programas Assembly ou de linguagem de alto nível são


chamados de códigos-fonte. Os programas de linguagem de máquina
são conhecidos como códigos de objeto.

Assim, um tradutor converte códigos-fonte em códigos-objeto.


26 Microcontroladores e Microprocessadores

Figura 6 – Esquema representativo da tradução de linguagens Assembly e alto nível para


linguagem de máquina

Tradutor Linguagem
Assembly ou
(assembller ou de máquina
linguagem de
compilador/ binária(códigos
alto nível
interpretador) de objeto)

Fonte: Elaborado pelos autores, adaptado de RAFFQUZZAMAN (2008).

O fluxograma representa o processo de conversão do código escrito


em linguagem de alto nível, para linguagem assembler e, em seguida,
para a de máquina, a qual pode ser entendida pelo equipamento.

Linguagem de Máquina
Os microprocessadores são compostos por conjuntos exclusivos
de instruções em linguagem de máquina, as quais são, respectivamente,
definidas por seus fabricantes.

Como já introduzido anteriormente, os programas são construídos


em linguagem de máquina e essa linguagem é, simplesmente,
desenvolvida por meio de códigos operacionais binários, ou seja, apenas
um e zero são utilizados para descrever todas as instruções.

É importante salientar que dois microprocessadores de dois


fabricantes diferentes não têm o mesmo conjunto de instruções em
linguagem de máquina, ou seja, se um programa em linguagem de
máquina é desenvolvido para um microprocessador, este não será
executado no microprocessador de um fabricante diferente.

Observe que utilizar apenas 0 e 1 para descrever um programa é


uma tarefa muito complexa, a compreensão do que se está fazendo é
dificultada, pois todo o programador deve conhecer todos os códigos dos
microprocessadores com que está operando.

Além de ser um trabalho extremamente desgastante, é quase


impossível escrever um programa, sem que erros venham a acontecer.

Como forma de reduzir o grau de dificuldade para o programador,


adotou-se a possibilidade de trabalhar com ​​números hexadecimais em
vez de números binários, no entanto, a programação em hexadecimal não
é normalmente usada.
Microcontroladores e Microprocessadores 27

Linguagem de Alto Nível


Os programas, com linguagem de alto nível, são formados por
declarações em inglês. Nesse caso, o programador precisa conhecer a
estrutura do microprocessador interno ou seu conjunto de instruções.

Cada instrução em uma linguagem de alto nível corresponde a uma


série de instruções em Assembly ou em linguagem de máquina.

Uma série de linguagens de alto nível, como C e C ++, são,


atualmente, amplamente utilizadas.

Em geral, as linguagens de alto nível caracterizam-se por serem


linguagens orientadas para o problema, por isso o programador não
precisa conhecer os detalhes da arquitetura do microprocessador e
seu conjunto de instruções, ele apenas segue as regras da linguagem
específica que é usada para resolver o problema em questão.

Além disso, o programa escrito, em uma determinada linguagem


de alto nível, pode ser executado por dois microcomputadores diferentes,
desde que ambos entendam essa linguagem.

Em linguagem de alto nível, também, é necessário o uso de um


programa especial para conversão dessas instruções de alto nível em
códigos de objeto, no caso pode ser um intérprete ou um compilador.

Linguagem Assembly
Cada linha de um código de programa escrito em linguagem
Assembly abrange quatro campos: o campo de etiqueta, o de instrução, o
campo do operando e o campo do comentário.

Os campos de comentários são ignorados pelos assembler, tendo


em vista que este serve apenas para o programador identificar algumas
observações, ao longo da escrita de seu código.

Porém, os demais campos são todos traduzidos.

No caso do campo do rótulo, este precisa ser iniciado, por meio de


um caractere alfabético maiúsculo.
28 Microcontroladores e Microprocessadores

O programa precisará identificar onde o campo começa e o outro


termina. Na maioria dos programas, é permitido que o programador utilize
um símbolo ou delimitador especial para indicar o início ou o fim de cada
campo.

Nesse caso, os delimitadores típicos mais utilizados são


​​ espaços,
vírgulas, ponto e vírgula e dois pontos. No caso dos espaços, esses
são usados ​​entre os campos, as vírgulas são usadas entre endereços
em um campo de operando, o ponto e vírgula é aplicado, antes de um
comentário e o dois pontos (ou nenhum delimitador) pode ser utilizado,​​
após um rótulo.

Uma fator importante a se ressaltar é o fato de que para lidar com


números, a maioria dos programas assembler consideram que todos os
números descritos na instrução estão como números decimais, só não
consideram dessa forma, se estiver especificado de outra forma. Assim os
que não utilizam números decimais, especificarão o tal sistema numérico,
o qual faz uso, incluindo o de números hexadecimais.

A programação em Assembly caracteriza-se como mais conveniente,


quando comparada aos demais tipos de programação apresentados, isso
ocorre pelo fato de que cada instrução, ou mnemônico, fornecer a ideia
do tipo de operação que deverá realizar.

Assim, na linguagem Assembly não há a preocupação, para o


programador, de conhecer, precisamente, os códigos operacionais
numéricos da tabela de conjunto de instruções, tendo em vista a
considerável intuitividade dos tipos de operações desempenhadas.

A tradução das instruções do programa em Assembly é desenvolvida


pelo assembler, um programa responsável pela leitura dos caracteres
descritos no programa e por sua tradução para seus correspondentes
códigos operacionais binários, compatíveis com a linguagem de máquina.

Em geral, os programas fazem uso de endereços no programa para


o armazenamento de dados ou para servirem como alvos para chamadas.
Durante a programação em linguagem de máquina, todos esses
endereços devem ser calculados, manualmente. Nesse caso, o assemble
simplesmente possibilita que o programador atribua um símbolo a um
Microcontroladores e Microprocessadores 29

dado endereço. Dessa forma, ele pode referenciar esse endereço em


outro lugar, usando apenas esse símbolo, sem a necessidade de fazer os
cálculos, tendo em vista que o próprio programa calcula o endereço real
do programador e o preenche, automaticamente. Essa é uma importante
vantagem do programa assemble: a computação de endereço.

Assim, por meio do uso desse tipo de instruções, há a capacidade


e a possibilidade de se controlar os registradores internos do dispositivo
com o qual se está operado, bem como as posições da memória. Nesse
caso, os programas que são criados ocupam compactos espaços, quando
em comparação aos desenvolvidos em outras linguagens.

Tipo de Assembler
Os programas assembler fazem a leitura de todo o texto, descrito
no programa, em dois passes, ou seja, em duas vezes. No primeiro
passe, são calculados os endereços de todos os rótulos do programa. A
identificação dos endereços de uma etiqueta demanda que, antes todo o
comprimento do código binário que a precede seja identificado. Após a
leitura no primeiro passe, é feito, também, o armazenamento dos rótulos
para o próximo passe, o qual é responsável por gerar o código binário real.

Entre os tipos de assemblers disponíveis destacam-se:

•• Assembler One-Pass - tipo que desempenha, apenas, um passe na


linguagem assembly e já o traduz em um programa de linguagem
de máquina.

•• Assembler de duas passagens - realiza a varredura do programa,


duas vezes, e na primeira cria uma tabela de símbolos (que
consiste em rótulos com endereços atribuídos a eles). E na
segunda varredura, realiza a tradução do programa de linguagem
assembly em código de máquina.

•• Macroassembler - realiza a tradução de um programa escrito


em macrolinguagem para linguagem de máquina. Permite
que o programador defina todas as sequências de instruções,
usando macros, assim o programador pode atribuir um nome a
uma sequência de instruções que aparece repetidamente em
um programa. O macroassembler substitui um macroname pela
sequência de instrução apropriada, cada vez, que o encontra.
30 Microcontroladores e Microprocessadores

•• Cross assembler -tipo de assembler que se localiza em um


processador e monta programas para outro para o qual foi escrito.
Esse tipo é escrito em uma linguagem de alto nível para que
possa ser executado em diferentes tipos de processadores que
entendam essa mesma linguagem.

•• Montador residente - tipo que monta programas para um


processador no qual está residente.

•• Meta-montador - tipo que pode montar programas para diferentes


processadores. Geralmente, o programador define o processador
específico que está sendo usado.

Formato de Instrução da Linguagem Assembly


A depender do número de endereços especificados, podem ser
utilizados os formatos de instrução: de três endereços, de dois endereços,
de um endereço ou de nenhum endereço.

As instruções são todas armazenadas na memória principal, assim


os formatos de instrução são projetados de forma que as instruções
ocupem menos espaço e tenham mais recursos de processamento.

Pontos técnicos importantes que devem ser considerados ao


projetar um formato de instrução:

•• A escolha do tamanho de uma palavra de instrução deve facilitar a


especificação de mais operações por um projetista.

•• As instruções permitem manipular vários elementos de dados,


como inteiros, números de ponto flutuante e cadeias de
caracteres. Todos os programas escritos em uma linguagem
simbólica como C são armazenados, internamente, como
caracteres, dessa forma, nenhum espaço de memória será
desperdiçado. Caso o comprimento da palavra da máquina
for algum múltiplo integral do número de bits necessários para
representar um caractere, isso ocorre devido ao fato de que os
elementos serem representados, usando códigos de caracteres
típicos de 8 bits, como ASCII o que demanda palavras de 8, 16, 32
ou 64 bits para o comprimento da palavra.
Microcontroladores e Microprocessadores 31

•• O tamanho do campo de endereço é escolhido de forma que a


alta resolução seja garantida. A resolução da memória é função
do comprimento da instrução. Instruções curtas fornecem menos
resolução.

Em geral, os códigos que são compilados geram muito mais linhas


de código de máquina do que um programa de linguagem Assembly
equivalente. Dessa forma, programas construídos em linguagem
Assembly ocupam menos espaço de memória e serão executados muito
mais rápido do os construídos com uso de linguagem de alto nível, além
disso, o uso da linguagem Assembly possibilita que os programas para
aplicativos sejam implementados em tempo real, ou seja, a tarefa exigida
pelo aplicativo deve ser concluída, antes que qualquer outra entrada para
o programa possa ocorrer e alterar sua operação.

RESUMINDO:

E então? Gostou do que lhe mostramos? Aprendeu mesmo


tudinho? Agora, só para termos certeza de que você
realmente entendeu o tema de estudo deste capítulo,
vamos resumir tudo o que vimos. Você deve ter aprendido
que os fluxogramas compreendem fundamentais
elementos de implementação de rotinas de programação
em geral. Com uso dos fluxogramas, é possível sistematizar
toda a estratégia desenvolvida no projeto de um programa.
Microprocessadores são, normalmente, programados,
usando instruções em linguagem Assembly. A linguagem
de programação Assembly compreende um tipo de
linguagem de baixo nível que apresenta conjunto de
instruções, por meio do qual se pretende projetar um
programa, iguais ao conjunto que é definido pelo fabricante
da família de microcontroladores ou microprocessadores.
Além das linguagens Assembly, os microcomputadores
podem fazer uso, também, de linguagens que sejam
orientadas para a compreensão do homem, denominadas
de linguagens de médio e alto nível, como é o caso da
linguagem C, da BASIC e da PL/M.
32 Microcontroladores e Microprocessadores

Registradores e Acesso à Memória

OBJETIVO:

Ao término deste capítulo, você será capaz de entender


e definir conceitos sobre registradores e o mecanismo de
acesso à memória em dispositivos microprocessadores.
Isto será fundamental para o exercício de sua profissão.
E então? Motivado para desenvolver esta competência?
Então vamos lá. Avante!

Organização da Memória de um
Microprocessador
Uma das partes componentes dos dispositivos de
microprocessamento é unidade de memória que constitui todos os
microcomputadores e tem como principal função o armazenamento de
todas as instruções e dados.

Importante é ressaltar que o projeto de uma unidade de memória


para dispositivos digitais objetiva viabilizar que a taxa de operações
dessa unidade seja, equivalentemente, próxima à velocidade de trabalho
do microprocessador. Tendo em vista, porém, o alto custo associado à
produção de memória com tal agilidade é quase inviável que isto seja
de fato implementado. Mas há maneiras de compensar esse alto custo,
assim, as unidades de memória são normalmente desenvolvidas por meio
de tecnologias particulares com uso as tecnologias de estado sólido,
magnética e óptica.

Em relação à estrutura propriamente dita de uma unidade de


memória de um microcomputador, ela é categorizada em três grupos:

1. Memória secundária.

2. Memória principal ou primária.

3. Memória do microprocessador.
Microcontroladores e Microprocessadores 33

A seguir serão apresentados os grupos de memórias de maneira


mais detalhada.

Memória Secundária
A memória secundária é componente que armazena programas,
além da memória principal. Ela pode ser identificada como um tipo
de memória auxiliar ou virtual. No caso dos dispositivos de memória
secundaria, o acesso aos dados ocorre em série, o que os tornam mais
lentos que a memória principal.

Atualmente, ainda, são amplamente utilizados dispositivos de


memória eletromecânica ​​como memória secundária de microcomputador,
por exemplo, os discos rígidos. Em geral, este tipo de dispositivo permite
um armazenamento de programas grandes a baixo custo.

Geralmente, o microcomputador executa programas armazenados


na memória secundária diretamente. Dessa forma, para que um programa
seja executado, estando ele armazenado na memória secundária, é
necessário que o microcomputador transfira os programas para sua
memória principal, por meio de um programa conhecido como sistema
operacional.

Memória Principal
A memória principal, por sua vez, compreende o setor no qual são
armazenados todos os programas que são executados.

É importante observar que os microprocessadores acessam,


diretamente, apenas os elementos que estão armazenados na memória
principal. Assim, antes da execução, todos os programas precisam estar
presentes na memória principal.
34 Microcontroladores e Microprocessadores

IMPORTANTE:

Em geral, para a produção do design da memória principal,


normalmente, utiliza-se a tecnologia CMOS.

CMOS ou C-MOS, é a sigla de complementary metal-oxide-


semiconductor, é uma tecnologia para a construção de
circuitos integrados, muito usada em microprocessadores,
microcontroladores, memórias RAM e outros circuitos
digitais. Acesse aqui.

Em relação ao tamanho, se forem comparadas, a memória principal


é, normalmente, muito maior do que a memória do processador e a
velocidade de desenvolvimento de operações é inferior em relação à
velocidade dos registros do processador.

Como já visto, a memória principal armazena instruções e dados.


Em microprocessadores de 8 bits, a memória é dividida em unidades de
8 bits, identificadas como memory words. Como se sabe, uma unidade
de dados composta por 8 bit constitui uma unidade digital básica,
denominada de byte. Assim, memory word ou byte de memória em um
microprocessador de 8 bits significam a mesma coisa.

No caso de microprocessadores de 16 bits, considera-se que uma


palavra é composta por 2 bytes, que é equivalente a 16 bits. Nesse caso,
uma memory word é identificada na memória por meio de endereço.
EXEMPLO:
Imagine um microprocessador qualquer que faz uso de 32 bits para
acessar memory words. No caso, isso fornece um máximo de 232 = 4 294
964 296, ou seja, cerca de 4 GB de endereços de memória.
Como já mencionado, uma importante propriedade na memória, é
se ela é do tipo volátil ou não volátil.
A memória volátil é o tipo de memória de computador que demanda
de energia para manter as informações armazenadas. E a memória não
volátil é o tipo de memória de computador que não demanda energia
para reter as informações armazenadas mesmo quando não está ligada.
Microcontroladores e Microprocessadores 35

As memórias do tipo ROM são um exemplo típico de memória não


volátil e as memórias do tipo RAM são um exemplo típico de memória
volátil. As memórias ROM são as memórias, somente de leitura, e a RAM
constitui a memória de acesso aleatório. Estas, por sua vez, são divididas
em várias subcategorias:
Figura 7 – Subcategorias das memórias

Memória

ROM RAM

EAROM,
DYNAMIC -
Mask ROM EPROM EEROM, STATIC - SRAM
DRAM
E2PROM

Fonte: Elaborado pelos autores (2021).

1. Memória somente leitura

Como em memórias ROMs só podem implementar leituras, são


caracterizadas como memórias não voláteis.

As ROMs são divididas em dois MaskROM, ou máscara e Eraseble


PROM ou apagável (EPROM).

As MaskROMs são memórias que são programados por uma


operação de mascaramento, realizada em um chip, durante o processo
de fabricação, assim o seu conteúdo é permanente e não pode ser
modificado.

As EPROMs são memórias que podem ser programadas e seu


conteúdo pode ser alterado por meio de um equipamento especial, o
programador de EPROM.

Em projetos de microcomputadores, cuja aplicação é bem


especificada, os programas permanentes são armazenados em ROMs
e a microprogramação da unidade de controle é feita por memórias de
controle ROMs.
36 Microcontroladores e Microprocessadores

Assim, asEPROMs podem ser reprogramadas e apagadas. Nesse


caso, faz -se necessário que o chip seja removido do sistema do
microcomputador para programação.

IMPORTANTE:

Para apagar o conteúdo de uma memória EPROM, deve-


se expor o chip à incidência de luz ultravioleta e sua
reprogramação é feita, inserindo o chip em um soquete do
programador EPROM e fornecendo endereços apropriados
e pulsos de tensão nos pinos apropriados do chip.

2. Memória de acesso aleatório

Nos casos das memórias de acesso aleatório, tem-se a RAM


estática (SRAM) e a RAM dinâmica (DRAM).

A memória RAM estática atua no armazenamento de dados em flip-


flops. De acordo com Tocci (2009), um flip-flop é um circuito lógico que
apresenta dois estados estáveis e que pode armazenar apenas um bit
por vez. No caso, a sua saída indica qual bit está armazenado. Quando a
saída indica um nível alto, indica que um 1 está armazenado e quando a
saída indica um nível baixo na saída, indica que um 0 está armazenado.
Assim, no caso da memória RAM estática não há a necessidade de que
seja atualizada.

A RAM dinâmica é um tipo de memória que armazena dados


em capacitores, ou seja, ela pode conter dados por apenas alguns
milissegundos. As RAMs dinâmicas são atualizadas, normalmente, usando
circuitos de atualização externos.
Microcontroladores e Microprocessadores 37

SAIBA MAIS:

A execução de uma instrução pelo microprocessador


pode ser dividida em duas partes: busca de instrução
e execução de instrução. A execução de uma instrução
demanda que o microprocessador leia ou busque o código
operacional. Esse processo é feito por meio do barramento
de dados de um local de memória na ROM/RAM externa
ao microprocessador. Em seguida, ele coloca a instrução
no registrador de instrução e o microprocessador executa
essa instrução. No caso da operação de busca de
instrução desenvolvida por um microprocessador, tem-se
que, considerando-se um diagrama de tempo de busca
de instrução, o processo de leitura e gravação de memória
ocorre em apenas um único sinal de clock. Um diagrama
de temporização compreende um gráfico em que se
representa, precisamente, a relação temporal de duas ou
mais formas de onda, o mesmo que Tocci (2009) diz sobre
esse diagrama.

Um importante fator é que a memória principal de um


microcomputador é formada, basicamente, por ROMs, EPROMs e RAMs.

Pelo fato das RAMs poderem ser lidas e gravadas, a lógica necessária
para a sua implementação é mais complexa do que ROMs e EPROMs.

Em síntese, em geral, um projetista de sistema de microcomputador


se interessa na forma como a memória do microcomputador está
organizada, ou seja, na forma como as memórias ROMs, EPROMs e RAMs
estão conectadas.

A ideia básica é identificar quais posições de memória são atribuídas


às ROMs, EPROMs e RAMs, para então implementar os programas
permanentes em ROMs e EPROMs e os programas temporários em RAMs.
38 Microcontroladores e Microprocessadores

Memória do Microprocessador
Identifica-se a memória do microprocessador como composta por
um conjunto de registros referentes ao microprocessador, os quais são
utilizados para a manutenção dos resultados temporários de cálculos que
são desenvolvidos, ou seja, que estão em andamento.

Os registros de processador contêm elementos como instruções,


endereço de armazenamento, sequências de bits ou caracteres individuais
ou outros dados.

Em geral, os registradores compreendem um tipo de memória


de computador que é aplicada para aceitar, armazenar e transferir,
rapidamente, dados e instruções que são usados, ​​imediatamente, pela
unidade de processamento central.

O computador demanda registros de processador para a


manipulação dos dados e armazenamento de um endereço de memória.

Os registros contêm a localização da memória que é utilizada para


calcular o endereço da próxima instrução, após a conclusão da execução
da instrução atual.

Assim, pode-se identificar um registro de processador como um


pequeno conjunto de locais que armazenam dados.

Em comparação com a demais memória da unidade de


armazenamento, os registradores são menores, mas pelo seu desempenho
todos os computadores demandam dessa memória para manipular
dados e armazenar seus endereços, viabilizando assim que endereços
de memória sejam identificados para a execução das instruções a serem
executadas.

ACESSE:

Para conhecer de forma mais aprofundada a memória dos


microcontroladores e outros elementos, acesse o link e
acompanhe a construção de um relógio binário. Disponível
aqui.
Microcontroladores e Microprocessadores 39

A seguir está a lista de alguns dos registros mais comuns, usados​​


em um computador básico:
Quadro 1 – Registros mais comuns

Número de
Registro Símbolo Função
bits
Registro de Contém operando
DR 16
dados de memória

Cadastro de Retém endereço


AR 12
endereços para a memória

Registro do
Acumulador AC 16
processador
Registro de Segura o código de
IR 16
instrução instrução
Contador de Detém o endereço
PC 12
programa da instrução
Registro Retém dados
TR 16
temporário temporários
Registro de Carrega o caractere
INPR 8
entrada de entrada
Registro de Carrega o caractere
OUPR 8
saída de saída
Fonte: JavaPoint (2021).

Nos casos dos registradores e comparação ao microprocessador,


não se pode visualizar diferenças entre a velocidade dos registradores e
do microprocessador, tendo em vista que ambos são produzidos a partir
da mesma tecnologia.
40 Microcontroladores e Microprocessadores

RESUMINDO:

E então? Gostou do que lhe mostramos? Aprendeu mesmo


tudinho? Agora, só para termos certeza de que você
realmente entendeu o tema de estudo deste capítulo,
vamos resumir tudo o que vimos. Você deve ter aprendido
que uma das partes componentes dos dispositivos de
microprocessamento é unidade de memória. Em relação à
estrutura propriamente dita de uma unidade de memória
de um microcomputador, esta é categorizada em três
grupos: memória secundária; memória principal ou primária;
e memória do microprocessador. Ela pode ser identificada
como um tipo de memória auxiliar ou virtual.

No caso dos dispositivos de memória secundária, o acesso aos


dados ocorre em série. A memória principal compreende o setor no
qual são armazenados todos os programas que são executados. Os
microprocessadores acessam, diretamente, apenas os elementos que
estão armazenados na memória principal. A memória volátil é o tipo
de memória de computador que demanda de energia para manter as
informações armazenadas. E a memória não volátil é o tipo de memória
de computador que não demanda energia para reter as informações
armazenadas, mesmo quando não está ligada. As memórias do tipo
ROM são um exemplo típico de memória não volátil e as memórias
do tipo RAM são um exemplo típico de memória volátil. A memória do
microprocessador é composta por um conjunto de registros referentes
ao microprocessador. Os registros de processador contêm elementos
como instruções, endereço de armazenamento, sequências de bits ou
caracteres individuais ou outros dados.
Microcontroladores e Microprocessadores 41

Dispositivos de Entrada e Saída

OBJETIVO:

Ao término deste capítulo, você será capaz de identificar


os dispositivos de entrada e saída em microprocessadores.
Isto será fundamental para o exercício de sua profissão.
E então? Motivado para desenvolver esta competência?
Então vamos lá. Avante!.

Meios de Transferência de Dados


Os diversos dados, que são coletados do mundo externo e
transferidos para os meios digitais dos sistemas computacionais,
constituem mecanismos formados por componentes, cada vez mais,
presentes no cotidiano da sociedade e, ao mesmo tempo, são, cada
vez menos, percebidos. Os diversos componentes, que possibilitam a
comunicação das informações do mundo real com o mundo virtual, ao
mesmo tempo, são vastamente utilizados, e desenvolvem suas operações
de formas mais imperceptíveis. Assim, a tecnologia que é muito utilizada
se concentra em segundo plano para as pessoas. Isso tudo caracteriza o
que se denomina de computação ubíqua ou pervarsiva.

Para a existência da computação ubíqua faz-se necessário


que sejam utilizados pequenos dispositivos, embutidos em objetos e
ambientes comuns no dia a dia da sociedade, que sejam, ao mesmo
tempo, capazes de coletar e transferir todas as informações, captadas de
forma inteligente.

Os microprocessadores, em geral, constituem o elemento central


em todas as aplicações em que são empregados, pois são para esses
componentes que as informações são transferidas e são eles que
gerenciam e controlam os processos que a máquina deve desenvolver,
a partir de tais dados.
42 Microcontroladores e Microprocessadores

No entanto, é importante creditar o trabalho, desenvolvido por meio


dos componentes periféricos que fazem o trabalho de captar e comunicar
todas as informações ao microprocessador respectivo.

O processo de transferência dos dados, entre os microcomputadores


e os dispositivos externos, é identificado como entrada e saída (E/S).

A comunicação dos microcomputadores ocorre, como se


sabe, fazendo uso dos periféricos de entrada e saída que estão a ele
conectados. Esses dispositivos são um meio eficiente de comunicação do
microcomputador com o mundo externo.
Figura 8– Ilustração de dados processados em computador e os resultados obtidos

Fonte: Pixabay (2021).

É, assim, por exemplo, que um usuário pode colocar programas e


dados inseridos para desenvolvimento de tarefas e obtenção de soluções
específicas.

Mesmo parecendo ser teoricamente um processo simples, a


transferência dos dados, por meio dos periféricos, envolve algumas
características especiais que serão introduzidas aqui.

Em geral, as propriedades dos dispositivos de entrada e saída são


distintas das propriedades dos microcomputadores. Suas velocidades
de operação, os tamanhos dos objetos transferidos, por exemplo, são
variáveis entre esses dois sistemas.
Microcontroladores e Microprocessadores 43

Assim, é indispensável que os dados sejam trabalhados para que


sejam disponibilizados, em formato compatível, entre o microcomputador
e o dispositivo de entrada e saída.

Neste sentido, para transformar as características dos dispositivos


de entrada e saída compatíveis com as características do respectivo
microcomputador o qual está associado, faz-se necessário que um circuito
de hardware de interface seja implementado entre esses sistemas.

Nesse caso, o uso das interfaces é importante, pois essas


possibilitam que, por meio de barramentos de entrada e saída, ocorram
todas as transferências de entrada e saída.

Os barramentos de entrada e saída transportam os sinais em três


formatos: endereço do dispositivo, dados e comando.

Os microprocessadores fazem uso dos barramentos de entrada e


saída no momento em que executam alguma instrução dessa entrada e
saída. Quando essa execução ocorre, a unidade de controle decodifica
o campo do código de operação e o identifica como uma instrução de
entrada e saída, daí é atribuído pelo microprocessador um endereço a
este dispositivo e o comando, dos respectivos campos de instrução de
entrada e saída, são atribuídos nos barramentos de entrada e saída. A
interface então decodifica as linhas de comando e estabelece a função
que deverá ser executada. Geralmente, as funções são de recebimento
de dados de um dispositivo para o microprocessador ou a o envio para
um dispositivo de saída do microprocessador.

Habitualmente, o usuário pode se relacionar com dispositivos de


entrada e saída físicos e virtuais.

Por meio dos dispositivos de entrada e saída físicos, os


microcomputadores podem desenvolver a transferência dos dados de
três formas com:

•• Entrada e saída programada.

•• Entrada e saída com interrupção.

•• Acesso direto à memória.


44 Microcontroladores e Microprocessadores

No primeiro caso, no qual a entrada e saída é programada, o


microprocessador executa um programa para transferir os dados entre
o microcomputador e o dispositivo externo. Nesse caso, o dispositivo
externo segue as funções que foram indicadas pelo programa na memória
do microcomputador, assim todas as transferências são controladas pelo
microprocessador.

No segundo caso, de interrupção de entrada e saída, o dispositivo


externo exerce uma força sobre o microprocessador, tendo a capacidade
de interromper a execução do programa de maneira temporária,
permitindo executar um outro programa, o interrupt service routine ou
serviço de interrupção de rotina. Dessa forma, a rotina satisfaz a demanda
do dispositivo externo e, uma vez finalizada, a rotina de serviço o controle
retorna para o programa principal.

No terceiro caso, no qual há o aceso direto à memória, os dados são


transferidos sem a atuação do microprocessador, ou seja, a informação é
transportada diretamente entre o dispositivo externo e o disco rígido por
exemplo, e a memória do microcomputador. Normalmente, se faz uso do
chip controlador DMA para esse tipo de transferência.

Os dispositivos de entrada e saída virtuais são, normalmente,


trabalhados quando se tem um microcomputador com sistema
operacional. Nesse caso, não há necessidade de o usuário conhecer o
dispositivo físico de entrada e saída, ele transfere os dados, indiretamente,
entre o microcomputador o dispositivo físico. Nesse caso, as rotinas de
entrada e saída são fornecidas pelo sistema operacional e o usuário
precisa apenas chamá-las, por meio das instruções de entrada e saída
virtuais.

Os sistemas operacionais, dessa forma, atuam como interfaces entre


os programas do usuário e o hardware, facilitando o desenvolvimento
de dispositivos de entrada e saída lógicos ou virtuais, possibilitando
que um programa de usuário estabeleça comunicação direta como tais
dispositivos lógicos.
Microcontroladores e Microprocessadores 45

Dispositivo de Entrada e Saída Programado


A comunicação do microcomputador com um dispositivo externo
acontece por meio de um ou mais registros, conhecidos como portas de
entrada e saída, fazendo uso da transferência programada.

As portas de entrada e saída são, geralmente, do tipo no qual cada


bit na porta pode ser configurado, individualmente, como entrada ou
saída ou do tipo no qual todos os bits na porta podem ser configurados
como todos os bits de entrada ou saída paralela.

Cada porta pode ser configurada como uma porta de entrada ou


saída, por meio do comando ou registro de direção de dados. A porta
contém os dados reais de entrada ou saída. O registro de direção de
dados é um registro de saída e pode ser usado para configurar os bits na
porta, como entradas ou saídas.

Para a entrada e saída paralela, há apenas um registro de direção


de dados para todas as portas. Um determinado bit, no registro de direção
de dados, configura todos os bits na porta como entradas ou saídas.

Cada bit na porta pode ser configurado como uma entrada ou saída,
normalmente, escrevendo 0 ou 1 no bit, correspondente do registrador de
direção de dados.

Existem duas formas em que se pode utilizar a entrada e saídas


programadas:

•• Entrada e saída incondicional.

•• Entrada e saída condicional.

Por meio do uso do modelo incondicional, o microprocessador pode


enviar dados para um dispositivo externo a qualquer momento. Neste
caso, o dispositivo externo deve estar sempre pronto para transferência
de dados.
46 Microcontroladores e Microprocessadores

Observe a figura a seguir que apresenta a lógica do modelo


condicional.
Figura 9 - Entrada e saída condicional

Início

O processador entra com o


status do dispositivo externo

não

O dispositivo está
pronto para a transferência
de dados?

sim

Processo de entrada ou saída de


dados para o dispositivo externo

Fonte: Elaborado pelos autores (2021).

Já por meio do uso do modelo condicional, o microprocessador envia


dados para um dispositivo externo, por meio da troca de sinais de controle,
entre o microprocessador e um dispositivo externo. O microprocessador
insere o status do dispositivo externo para determinar, se o dispositivo
está pronto para transferência de dados, assim a transferência de dados
ocorre somente quando o dispositivo estiver pronto.
Microcontroladores e Microprocessadores 47

Dispositivo de Entrada e Saída com Interrupções


A entrada e saída programada condicional apresenta a desvantagem
de necessitar que o microcomputador verifique o status do bit, e enquanto
isto ele espera em um loop. Assim, em geral, esse tipo de transferência é
dependente da velocidade do dispositivo externo.

Assim, quando se opera com um dispositivo lento, a espera tende


a reduzir a capacidade do microcomputador de processar outros dados.

Nesse caso, a técnica de entrada e saída de interrupção, torna-se


uma opção mais eficiente.

O processo de interrupção de entrada e saída consiste em um tipo


de transferência de entrada e saída, iniciada por dispositivo.

Em geral, o dispositivo externo é conectado a um pino de interrupção


(INT) no chip do microprocessador. Quando o dispositivo precisa de uma
transferência de entrada ou saída com o microcomputador, ele ativa o pino
de interrupção do chip do processador. O microcomputador, geralmente,
completa a instrução atual e salva o conteúdo do contador do programa
atual e o registrador de status na pilha.

O microcomputador carrega um endereço, automaticamente, no


contador do programa para ramificar para um programa semelhante a
uma rotina de serviço de interrupção (programa é escrito pelo usuário).
A transferência dos dados pelo dispositivo externo demanda que o
microcomputador execute esse programa.

A última instrução da rotina de serviço é um RETORNAR. A instrução


RETORNAR para a interrupção restaura o contador do programa e o
registrador de status com as informações salvas na pilha, antes de ir para
a rotina de serviço. Em seguida, o microcomputador continua executando
o programa principal.

Há basicamente três tipos de interrupções:

1. Interrupções externas.

2. Interrupções internas.

3. Interrupções de software.
48 Microcontroladores e Microprocessadores

As interrupções externas iniciam-se por pinos de interrupção do


microprocessador por dispositivos externos. Estas podem ser mascaráveis,
que não podem ser habilitadas ou desabilitadas por instruções, enquanto
o conjunto de instruções do microprocessador contém instruções para
habilitar ou desabilitar a interrupção mascarável​, e as não mascaráveis
têm maior prioridade que as mascaráveis, ocorrem quando há interrupção
de falha de energia.

As interrupções internas são acionadas, internamente, por


condições específicas como estouro, divisão por zero ou execução de um
código de operação ilegítimo.

As instruções de interrupção de software, por sua vez, são


normalmente usadas para chamar o sistema operacional, permitindo que
o usuário alterne do modo de usuário para o modo de supervisor.

Dispositivo de Entrada e Saída com Acesso Direto


O dispositivo, de entrada e saída com acesso direto à memória,
compreende uma técnica de transferência de dados que não envolve a
atividade do microprocessador.

Ele é, largamente, utilizado na transferência de grandes blocos de


dados.

Essa técnica faz uso do chip controlador DMA para a transferência


de dados que implementa um contador, contendo o comprimento dos
dados a serem transferidos no hardware para acelerar a transferência de
dados.
Microcontroladores e Microprocessadores 49

RESUMINDO:

E então? Gostou do que lhe mostramos? Aprendeu mesmo


tudinho? Agora, só para termos certeza de que você
realmente entendeu o tema de estudo deste capítulo,
vamos resumir tudo o que vimos. Você deve ter aprendido
que o processo de transferência dos dados, entre os
microcomputadores e os dispositivos externos, é identificado
como entrada e saída (E/S). É indispensável que os dados
sejam trabalhados para que sejam disponibilizados,
em formato compatível, entre o microcomputador e o
dispositivo de entrada e saída. Nesse caso, o uso das
interfaces é necessário, pois estas possibilitam que, por
meio de barramentos de entrada e saída, ocorram todas as
transferências de entrada e saída. Por meio dos dispositivos
de entrada e saída físicos, os microcomputadores podem
desenvolver a transferência dos dados de três formas
com: entrada e saída programada, entrada e saída com
interrupção e acesso direto à memória. Nos casos dos
dispositivos de entrada e saída virtuais, são normalmente
trabalhados, quando se tem um microcomputador com
sistema operacional.
50 Microcontroladores e Microprocessadores

REFERÊNCIAS
FLOYD, T. Sistemas digitais: fundamentos e aplicações. Porto
Alegre: Bookman Editora, 2007.

IDOETA, I. V.; CAPUANO, F. G. Elementos de eletrônica digital. São


Paulo: Saraiva Educação SA, 1993.

RAFIQUZZAMAN, M. Microprocessor theory and applications


with 68000/68020 and Pentium. [s .l.] John Wiley Sons, 2008.

SEVERANCE, C. Python para informática. Explorando informações,


v. 2, n. 0, 2009.

TOCCI, R. J.; WIDMER, N. S.; MOSS, Gregory L. Sistemas Digitais:


princípios e aplicações. São Paulo: Editora Pearson, 2019.

Você também pode gostar