Buscar

Arquitetura computacional básica

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 18 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 18 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 18 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

MICROPROCESSADORES
Maikon Lucian Lenz
Arquitetura 
computacional básica
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Analisar as arquiteturas Harvard, Von-Neumann, RISC e CISC.
 � Caracterizar a arquitetura básica de microcontroladores.
 � Descrever dispositivos de memórias.
Introdução
Sistemas de computação podem ser classificados quanto a sua arquitetura 
geral de fluxo de dados, a arquitetura interna do processador e a com-
plexidade das instruções envolvidas. Quantidades maiores de instruções 
visam diminuir o tempo e o espaço de desenvolvimento do código. 
Boa parte dos elementos que compõem um microcontrolador deriva 
de portas lógicas básicas e arranjos mais elaborados, como os flip-flops. 
A memória serve ao circuito como orientação para o funcionamento e 
também para manipulação dos dados. 
Neste capítulo você conhecerá as arquiteturas Harvard, Von-Neumann, 
RISC e CISC. Além disso, você aprenderá a caracterizar a arquitetura básica 
de microcontroladores e a descrever dispositivos de memórias.
Arquiteturas de computadores
Microprocessadores são utilizados na construção de computadores para fins 
diversos. Um microprocessador pode estar integrado a outros dispositivos 
dentro de um único circuito integrado para formar um microcontrolador.
O microcontrolador nada mais é que um pequeno computador desenvolvido 
para soluções mais específicas e com demanda de processamento menor que os 
computadores pessoais, que fazem uso de sistemas operacionais (TOKHEIM, 
2013).
A forma como o processador de um computador acessa a memória e utiliza 
as informações define sua arquitetura. As arquiteturas mais comuns são Har-
vard e Von-Neumann, e para compreender cada uma delas, se faz necessário 
entender a sequência básica de funcionamento de processamento.
Harvard versus Von-Neumann
O processador está interligado a unidades de memória que lhe fornecem a 
sequência de instruções a ser executadas e que servem, também, como unidade 
de armazenamento para resultados temporários dos cálculos efetuados pelo 
computador, como em uma multiplicação que pode ser efetuada pela repetição 
de diversas somas. A função do programador é escrever o código utilizando as 
regras determinadas no datasheet do processador para que sejam executadas 
as operações corretas, cada qual na sua ordem. Este código será traduzido 
pelo compilador para a linguagem compreendida pela máquina e gravada 
na ordem adequada em sua memória. Assim, o processador deverá acessar 
periodicamente a memória em busca da próxima instrução a ser executada, 
processar as informações e armazenar os resultados, conforme as ordens que 
lhe foram dadas.
Na arquitetura Von-Neumann (Figura 1a) há um único barramento de acesso 
à memória, tanto para os dados quanto para as instruções. Dessa forma, as 
conexões são reduzidas, mas o tempo de processamento é prejudicado pelo 
compartilhamento do barramento para buscar o código do programa e os 
dados a ser processados (SOUZA, 2003).
Já na arquitetura Harvard (Figura 1b) existem dois barramentos de acesso à 
memória, um apenas para os dados e outro para as instruções. Assim, enquanto 
o processador executa uma instrução, outra pode ser buscada na memória, sem 
interferências, o que torna o processo mais rápido (SOUZA, 2003).
A opção pelo tipo de arquitetura decorre das limitações e das necessidades 
comerciais do dispositivo. Enquanto a arquitetura Von-Neumann pode ser 
reduzida em termos de volume, a arquitetura Harvard oferece maior capacidade 
de processamento.
Arquitetura computacional básica2
Figura 1. (a) Arquitetura Von-Neumann. (b) Arquitetura Harvard.
Fonte: (a) Weber (2012, p. 38). 
RISC versus CISC
Além da arquitetura geral de computadores, os microprocessadores são clas-
sificados quanto à sua arquitetura interna.
Um processador do tipo RISC (reduced instruction set computer, ou com-
putador com conjunto de instruções reduzido) é mais enxuto e de aprendizado 
simplificado, isto porque sendo a quantidade de instruções existentes menor, 
também será menor o tempo para entender seu funcionamento.
Já os modelos CISC (complex instruction set computer, ou computador com 
conjunto de instruções complexo) têm à disposição instruções que, de outro 
modo, necessitariam de várias instruções para resolver o mesmo problema 
com um processador RISC. Esta arquitetura tem um preço mais elevado, 
assim como um tempo de aprendizado maior. A vantagem dos processadores 
CISC está na redução de memória de programa, uma vez que a quantidade de 
instruções poderá ser reduzida, resultando em menor tempo de compilação e 
em menor quantidade de memória de dados.
3Arquitetura computacional básica
Outras características podem ser consultadas no comparativo do Quadro 1.
RISC CISC
Acesso à memória Poucos comandos 
referenciam a memória 
diretamente.
Qualquer comando 
pode referenciar 
a memória.
Programa Grande e com 
instruções simples.
Pequeno com 
instruções complexas.
Formato de 
instruções
Apenas um ciclo 
de máquina e 
tamanho fixo.
Pode levar vários ciclos 
de máquina e tem 
tamanhos variáveis.
Endereçamento Poucas formas de 
endereçamento.
Muitas formas de 
endereçamento.
Pipeline (busca 
de mais de uma 
instrução)
Bastante utilizado. Pouco utilizado.
Complexidade Na compilação. No hardware.
Resposta à 
interrupção
Rápida. Lenta.
Quadro 1. RISC versus CISC
Uma simples soma entre dois valores de endereços de memória distintos pode ne-
cessitar quatro vezes mais instruções para um processador RISC quando comparado 
a um processador CISC.
O RISC dispõe apenas de instruções simples e não consegue acessar a memória 
diretamente na maioria delas.
A soma entre os valores de endereço M1 e M2 e posterior armazenamento no 
endereço M1 teria o aspecto para um processador CISC como descrito abaixo:
SOMA M1, M2
Arquitetura computacional básica4
Já para um processador RISC, o mesmo procedimento demandaria o carregamento 
dos valores da memória para registradores antes da operação e se pareceria com as 
linhas de instrução que seguem:
CARREGAR M1, A
CARREGAR M2, B
SOMA A, B
SALVAR A, M1
Arquitetura de microcontroladores
Um microcontrolador se divide basicamente em elementos de processamento 
e memória. Cada um destes é dividido e organizado conforme as funções 
desempenhadas para o restante do sistema.
Na memória são armazenadas as instruções que serão lidas pelo proces-
sador, assim como os dados utilizados durante o processo.
A unidade principal de processamento é conhecida como unidade de lógica 
e aritmética (ULA) e contém o hardware necessário para desempenhar cada 
uma das funções descritas na lista de instruções do datasheet do microcon-
trolador. Assim, para que o processador seja capaz de efetuar uma operação 
de soma é necessário um circuito para desenvolver este procedimento ou uma 
combinação deles, caso esteja presente nesta unidade. A Figura 2 apresenta 
um somador completo de 1 bit, em que as portas XOR retornam 1 se qualquer 
um dos bits de entrada for 1 ou todos os três forem 1; do contrário o resultado 
da soma deverá ser 0. Já a saída denominada carry out (Co) apresenta a sobra 
decorrente da soma e será 1 sempre que duas ou mais entradas forem iguais a 1. 
Assim, é possível efetuar a soma entre dois bits A e B, considerando a sobra 
de uma soma anterior (carry in) e fornecendo como resposta o resultado da 
soma para aquela posição binária e a sobra para posições seguintes.
5Arquitetura computacional básica
Figura 2. Circuito lógico de um somador completo.
Fonte: Weber (2012, p. 155).
Somas maiores que 1 bit podem utilizar vários circuitos de somador com-
pleto interligados, cada qual recebendo o bit de uma posição das variáveis a 
serem somadas e a sobra do circuito imediatamente anterior. Circuitos como 
o somador completo e outras funções estão presentes na ULA e podem ser 
combinados e sequenciados para obter operações ainda mais complexas. A ULA 
deve ser alimentada com os dados corretos paradesempenhar adequadamente 
suas funções. Com esta finalidade é utilizada a unidade de controle (UC), 
que comanda o fluxo de dados entre as memórias, periféricos e a unidade de 
lógica e aritmética.
Na Figura 3 é possível ver uma pequena ULA, composta por quatro funções/
circuitos diferentes: somador de 1 bit, operação lógica AND, OR e NOT. A 
entrada de dados é um barramento comum a todos os circuitos; todos recebem 
A e B em suas entradas (exceto a lógica NOT, que só requer uma entrada). É 
selecionada a saída de apenas um circuito com o uso de um multiplexador.
O multiplexador da Figura 3 conecta a saída S a saída do circuito a ser 
escolhido pela combinação binária presente no barramento denominado Sel. 
Uma vez que o multiplexador seleciona quatro entradas diferentes para uma 
única saída, serão necessários dois bits para selecionar entre as quatro opções 
possíveis. Cada uma das combinações 00, 01, 10 e 11 fará com que o multi-
plexador conecte a saída a um dispositivo diferente.
Arquitetura computacional básica6
Figura 3. Unidade de lógica e aritmética de quatro funções com multiplexador para 
compartilhar o barramento de saída.
Fonte: Weber (2012, p. 156).
A UC faz uso de registradores, partes reservadas de memória que a au-
xiliam no sequenciamento das funções. Para que seja possível executar uma 
instrução e ao final avançar para o endereço de memória seguinte, executando 
assim a próxima instrução da sequência, é necessário que um hardware seja 
dedicado a contagem desta posição de memória. Este elemento é normalmente 
conhecido como PC (program counter, ou contador de programa) e aponta para 
o endereço de memória da instrução que se deve executar a cada momento. 
Quem ordena o incremento da posição de memória é a própria UC ao sinalizar 
a conclusão de mais uma instrução.
7Arquitetura computacional básica
Apesar de a eletrônica digital trabalhar com níveis lógicos rígidos, a 
transição de um estado para o outro demanda a movimentação de cargas 
elétricas e, consequentemente, um tempo de acomodação. Esse tempo pode 
se acumular ao interligar diversos circuitos digitais em cascata, criando um 
atraso de propagação do sinal/dado. Devido a esta limitação, é necessário 
que os dispositivos sejam sincronizados para atuar no mesmo instante de 
tempo e permitir a acomodação dos sinais antes de proceder com a próxima 
instrução. Este tempo é conhecido como clock e pode estar integrado ao 
microcontrolador ou utilizar um circuito externo para fornecer um sinal 
periódico e estável.
Uma instrução demanda mais que um pulso de clock para ser execu-
tada. A instrução deve ser buscada e os circuitos demandados no processo 
deverão ser ajustados, já que todos têm acesso ao barramento. Só então o 
processamento será de fato executado e, ao final deste, o resultado poderá 
retornar à memória. Dessa forma, muitos microcontroladores em arquitetura 
Harvard, como é o caso da família PIC, demandam quatro pulsos de clock 
para a execução completa de uma única instrução, o que recebe o nome de 
ciclo de máquina.
Existem situações em que é necessário saltar para outras posições do código, 
por exemplo, quando existe uma condição a ser verificada que decidirá qual 
instrução será executada na sequência. Imagine que você esteja utilizando 
um microcontrolador para acender um LED sempre que um botão estiver 
pressionado. Ambos os elementos estarão conectados a algum terminal do 
microcontrolador e terão seus estados lógicos (ligado/desligado) representados 
em um endereço de memória conhecido. O código deverá ser escrito de modo 
que, se o valor encontrado no endereço de memória correspondente ao botão 
for nível lógico alto, o endereço de memória correspondente ao LED também 
será. O compilador não é capaz de alterar a ordem do código em tempo real e 
cada instrução terá uma posição fixa na memória do programa, seja para ligar 
ou desligar o LED. Entretanto, existem instruções que servirão para alterar 
o valor do contador de programa de forma direta. Assim, neste teste, caso o 
botão seja verdadeiro, o programa poderia seguir para a instrução seguinte e 
acionar o LED, do contrário teria que saltar para uma posição mais distante, 
ignorando o acionamento do LED. Instruções que envolvem mudanças na 
sequência de execução do código são definidas como instruções de salto, 
como o comando GOTO, por exemplo.
Arquitetura computacional básica8
Um programa simples deve optar entre duas execuções: ACAO_1 ou ACAO_2. Caso 
a CONDICAO (endereço 1) seja verdadeira, a ACAO_1 deverá ser executada; caso 
contrário, deve-se executar a ACAO_2.
O código poderia ser escrito desta maneira:
SE CONDICAO = VERDADEIRA ENTÃO
ACAO _ 1
CASO CONTRARIO
ACAO _ 2
O compilador, reconhecendo a sintaxe, traduziria para algo em um microcontrolador 
PIC como:
BTFSC 1, 0
CALL ACAO _ 1
BTFSS 1, 1
CALL ACAO _ 2
em que a função BTFSC testa o bit 0 do endereço de memória 1. Caso seja 0 (falso), 
salta uma linha na ordem de execução. O teste é feito agora para saber se é verdadeiro, 
executando a linha seguinte e, portanto, a instrução CALL, que chamará a função 
ACAO_2. Caso para BTFSC o endereço de memória 1 seja 1 (verdadeiro), a linha 
imediatamente a seguir será executada, chamando pelo comando CALL a ACAO_1 
e na próxima instrução BTFSS falhará e saltará a chamada da ACAO_2.
No entanto, alguns saltos de memória podem ser mais complexos, como 
a execução de uma função. A função é um trecho de código que pode ser 
executado ou utilizado em momentos e partes diferentes da execução. É muitas 
vezes utilizada para evitar que um procedimento que é utilizado muitas vezes 
não precise ser programado novamente, reduzindo a quantidade de memória 
necessária.
9Arquitetura computacional básica
Um salto por chamada de função deve retornar ao ponto original em que 
foi chamado ao terminar sua própria execução. Logo, o microcontrolador 
deverá não apenas mudar de posição de memória, mas lembrar de onde vem, 
pois uma vez alterado o endereço de memória do contador de programa, ele 
seguirá incrementando daquele endereço em diante. Para estas situações, os 
processadores fazem uso da pilha (ou stack).
A pilha corresponde a um grupo de endereços de memória reservados, 
ou como é o caso dos microcontroladores PIC, uma memória separada do 
restante, dedicada a utilização pela unidade de controle durante as chamadas 
de função. Nela são armazenados o endereço atual do contador de programa, 
toda vez que uma chamada de função é invocada. Como a pilha opera no 
modo LIFO (last in first out, ou último a entrar, primeiro a sair), ao término 
da execução da função, a unidade de controle buscará na pilha o endereço de 
memória mais recente desde seu último salto de memória e ordenará o retorno 
do contador de programa para este endereço antes do próximo incremento de 
posição (PEREIRA, 2007).
Os microcontroladores possuem uma quantidade de memória finita. Ultra-
passar este limite impossibilitará o desenvolvimento adequado do programa. O 
mesmo é válido para os endereços de memória dedicados à pilha. O resultado 
prático de tentar armazenar mais informação na pilha que o suportado será o 
de sobrescrever os valores mais antigos resultantes das primeiras chamadas 
de função que ainda não retornaram. Neste caso, o processador será incapaz 
de seguir a sequência determinada pelo programador e a execução seguirá 
outros rumos com resultados inesperados.
Dispositivos de memória
Assim como o processador, as memórias também derivam de portas lógicas 
ou de outros componentes que operem de forma discreta. O dispositivo mais 
básico de memória é o flip-flop do tipo D (TOKHEIM, 2013).
Um flip-flop simples pode ser construído a partir de portas lógicas NAND, 
como o flip-flop do tipo D da Figura 4. Trata-se de um sistema sequencial, já 
que a definição dos estados de entrada de um componente não é mais sufi-
ciente para determinar a saída do dispositivo. Repare que existem pontos de 
realimentação, em que o próprio sinal de saída de um circuitoretorna para a 
entrada. Em outras palavras, a sequência com a qual as entradas são alteradas 
importa não somente o valor presente de cada uma delas, como ocorria com 
a combinação de portas lógicas sem retorno nos sistemas de combinação.
Arquitetura computacional básica10
Figura 4. Flip-flop do tipo D construído a partir de portas lógicas.
Fonte: Weber (2012, p. 150).
Uma porta NAND resultará em 1 na saída sempre que uma de suas entradas 
for 0. Caso o pino D receba 1 e o pino C (clock) também, a primeira porta 
NAND alimentará a porta seguinte com uma entrada igual a 0, forçando a 
saída (Q) para 1. A saída Q, por sua vez, retroalimenta a porta de saída Q’, que 
receberá na outra entrada também o valor 1 da NAND anterior, resultando 
em uma saída igual a 0. O 0 da saída Q’, por sua vez, garantirá que a porta 
NAND de saída Q se mantenha em 1 até que um novo pulso de C habilite uma 
eventual mudança de estado. Pode-se observar que, sempre que houver um 
pulso de C, o estado da saída Q será o mesmo do pino D. O pino de C, neste 
caso, pode ser utilizado pelo circuito oscilado do sistema, ou como um pino 
de habilitação, o que será muito útil para criar unidades de memória maiores 
com endereçamento de palavras (WEBER, 2012).
Vários desses flip-flops D podem ser ligados a um mesmo terminal de 
dados e selecionados a partir do pino de C que habilite a recepção do sinal 
presente na entrada deste, de modo que somente o flip-flop habilitado receberá 
o dado presente no barramento.
A memória será organizada a partir de um tamanho fixo de palavra, que 
pode variar de um microcontrolador para outro, sendo mais comum os tamanhos 
de 8, 16 e 32 bits. Outros padrões menos comuns podem ser observados, como 
a estrutura de memória de programa de 14 bits em alguns microcontroladores 
PIC para atender de forma eficiente a quantidade de instruções demandadas.
Cada palavra de memória corresponderá a um endereço, sendo estes en-
dereços acessados com o auxílio de multiplexadores e demultiplexadores 
para reduzir a quantidade de conexões e compartilhar o mesmo barramento 
11Arquitetura computacional básica
de dados a todos eles. Estes dispositivos irão direcionar o barramento a um 
grupo ou endereço específico de memória (Figura 5).
Figura 5. Memória distribuída em forma de matriz para diminuir a quantidade de barra-
mentos de dados e endereços.
Fonte: Weber (2012, p. 178).
Outros mecanismos podem ser utilizados para criar unidades de memória 
voláteis, com o auxílio de capacitores, amplificadores operacionais, divisores 
de corrente, entre outros. Também existem mecanismos que não demandam 
o fornecimento de energia elétrica constante, que são memórias não voláteis 
normalmente utilizadas para armazenar o código do programa.
Técnicas de armazenamento de informação persistente incluem fitas mag-
néticas, CDs, DVDs, FLASH e outros. Segundo Pereira (2007), os tipos de 
memória de programa mais utilizadas em microcontroladores são: 
 � ROM, em que o código é gravado durante a produção do dispositivo e 
não pode ser apagado;
 � PROM, que permite a gravação pelo programador, mas não é apagável;
Arquitetura computacional básica12
 � EPROM, que permite apagar os dados, mas com intervenção diferente 
da utilizada para gravá-los; 
 � FLASH, o tipo mais maleável, já que permite gravar e apagar utilizando 
os mesmos mecanismos.
Memórias do tipo EEPROM se assemelham muito à condição da memória FLASH, com 
a diferença de que as memórias FLASH são capazes somente de apagar a informação 
em blocos, ao contrário da EEPROM.
O tamanho das instruções em alguns modelos de microcontroladores pode 
não ser suficiente para cobrir todos os endereços de memória existentes no 
modelo. Na família PIC este problema pode ser contornado ao dividir a me-
mória em bancos. Assim, antes de acessar um determinado endereço, deve-se 
selecionar ou confirmar qual o banco de memória que se está manipulando 
(PEREIRA, 2007).
Devido à paginação, ou divisão da memória em bancos, alguns registradores 
de uso frequente terão endereços replicados em cada página da memória para 
evitar a mudança excessiva, seja para leitura ou gravação desta.
A memória de dados, apesar de volátil, pode ter endereços reservados para 
finalidades específicas do próprio microcontrolador. Estes endereços podem 
ou não ser acessíveis ao programador. A diferença é que manipular os dados 
de um endereço reservado pode alterar o funcionamento do microcontrolador. 
Estes endereços são normalmente tratados como registradores e aqueles que 
possuem algum vínculo determinado com alguma função ou elemento do 
componente são conhecidos como registradores de funções especiais. Os 
demais estão livres para finalidades diversas.
Um microcontrolador pode, por exemplo, disponibilizar um hardware 
de temporização para evitar que o próprio processador tenha que calcular 
a temporização, o que demandaria mais processamento. A forma como o 
microcontrolador interage com o hardware dedicado é compartilhando um 
endereço de memória para sua configuração e respostas geradas. Uma tem-
porização irá demandar informações como frequência de contagem, valor 
13Arquitetura computacional básica
inicial, borda do sinal de clock a ser usada como referência, se subindo, ou 
descendo, entre outros. Cada uma dessas informações corresponde a algum 
bit de um registrador ou registrador inteiro, que nada mais é que um endereço 
de memória alocado para aquela funcionalidade específica.
Na lista de instruções, a estrutura do comando costuma denominar os 
dígitos em f como referentes ao endereço na memória do registrador que se 
deseja atribuir ou receber algum valor.
Registradores de funções especiais
Podem existir diversos registradores, alguns mais comuns e de uso mais amplo 
que outros. Os mais utilizados para os microcontroladores são acumulador, 
status/flag, interrupções e dispositivos de entrada e saída.
O registrador acumulador, também conhecido como registrador de trabalho, 
ou simplesmente W (de work, trabalho em inglês), é utilizado regularmente 
como entrada para alguma operação, resultado completo da operação até que 
alguma outra instrução ordene a gravação do conteúdo do registrador W em um 
endereço não volátil de memória. Na operação de multiplicação mais simples, 
repetindo somas, o registrador W deveria armazenar o resultado de cada soma, 
ao mesmo tempo em que alimenta também a entrada do circuito de soma.
Um registrador de STATUS pode ter uma linguagem e um funcionamento 
bastante divergente de um para o outro. Em geral, este registrador atua em 
conjunto com a ULA para determinar quando algum evento inesperado ou 
limite de alguma operação foi atingido. Isto é válido para sinalizar que a 
soma resultante extrapolou o valor máximo identificável, que uma subtração 
resultou em um número negativo (o que indicaria que o subtraendo é menor 
que o minuendo), para a detecção de verdadeiro (1) ou falso (0).
O registrador INTCON controla e monitora as interrupções, que nada mais 
são do que um hardware paralelo, de algum periférico, alertando que concluiu 
seu serviço e que os dados obtidos pelo módulo já estão adequadamente salvos 
na memória RAM.
Por fim, alguns endereços reservados têm vínculo prático direto com o 
ambiente externo. É o caso dos módulos PORT, na família PIC. Modificar 
o valor do endereço de memória vinculado a algum pino de saída digital 
fará com que o nível lógico observado nesse pino acompanhe a memória. O 
processo inverso também é verdadeiro, ou seja, pode-se identificar o nível 
lógico existente em um terminal qualquer.
Arquitetura computacional básica14
Mesmo reservados para finalidades específicas, alguns destes registradores poderão ser 
acessados ou não pelo usuário, dependendo da finalidade. Muitos deles armazenam 
informações de configuração do funcionamento do módulo e necessitam que o 
programador informe as condições. Outros, no entanto, são manipulados exclusiva-
mente pelo módulo e são bloqueados para acesso direto do programadorpara evitar 
instabilidades e outros problemas.
PEREIRA, F. Microcontroladores PIC: técnicas avançadas. 6. ed. São Paulo: Érica, 2007. 368 p.
SOUZA, D. J. Desbravando o PIC: ampliado e atualizado para PIC16F628A. 6. ed. São 
Paulo: Érica, 2003. 268 p.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas sequenciais. Porto Alegre: 
AMGH; Bookman, 2013. v. 2. 274 p. (Série Tekne).
WEBER, R. F. Fundamentos de arquitetura de computadores. 4. ed. Porto Alegre: Bookman, 
2012. 424 p. (Série Livros Didáticos Informática UFRGS).
Leituras recomendadas
PEREIRA, F. Microcontrolador PIC 18 detalhado: hardware e software. São Paulo: Érica, 
2010. 304 p.
PINHEIRO, F. A. C. Elementos de programação em C: em conformidade com o padrão 
ISO/IEC 9899. Porto Alegre: Bookman, 2012. 548 p.
15Arquitetura computacional básica

Continue navegando