Você está na página 1de 34

Microprocessadores

Prof. Pedro Fernandes


Aula 3
Memória, Entradas e Saídas
de Microcontroladores
Memória do Microcontrolador
• A Unidade de Memória tem como objetivo principal armazenar instruções e
dados;
• De maneira resumida, a Memória de um microcontrolador pode ser dividida em
duas partes:
• Registradores do CPU;
• Memória Principal ou Primária.

Os registradores do CPU são muito utilizados para armazenar dados temporários


quando uma operação está em progresso;
Não há diferença na velocidade do CPU para a velocidade desses registradores,
uma vez que usam da mesma tecnologia;
O custo envolvido nesse processo limita o microcontrolador a utilizar poucos desses
registradores.
Memória do Microcontrolador
• Memória Principal

• É a área de armazenamento onde todos os programas são executados;


• O microcontrolador terá acesso apenas aos dados armazenados na memória
principal, logo todos os programas devem ser armazenados lá antes da execução;
• Habitualmente, o tamanho da memória principal é bem maior que o número de
registradores, tornando sua velocidade de operação mais lenta do que a dos
registradores do processador;
Memória do Microcontrolador
• Memória Principal

• Para microcontroladores de 8 bits, a memória é dividida em unidades de 8 bits


chamadas palavras de memória;
• Para um microcontrolador de 16 bits, a palavra de memória terá 2 bytes, ou seja,
16 bits;
• Uma palavra de memória é identificada na memória por um endereço.
Memória do Microcontrolador
• Memória Principal
• Uma importante característica da Memória é a sua volatilidade. O conteúdo de
memórias voláteis é apagado assim que o sistema é desligado;
• Áreas grandes de memória requerem eficiência no seu endereçamento. De
preferência, é desejado realizar esquemas que dispensem a criação de um
endereço completo de memória para fazer leitura ou escrita;
• No PIC18F, a memória de programa possui 21 bits, enquanto a memória de dados
tem 12 bits;
• Para melhorar a eficiência, o PIC18F utiliza um esquema de Banco de Seleção de
Memória.
Memória do Microcontrolador
• Memória Principal

No caso da memória de
dados, com capacidade de
12 bits (4096 endereços), Banco Dessa forma, ao invés de formar
pode ser dividida em 16 endereços de 12 bits, um Registrador
partes com 256 endereços de Seleção de Banco escolhe um
cada deles e o endereço dentro do banco
pode ser determinado utilizando
A memória é dividida em somente 8 bits
16 bancos contíguos, cada Banco
um com 256 bytes de
dados armazenados.
Banco
Memória do Microcontrolador
• Memória Principal

Programada através de uma operação de Erasable Programmable ROM. Pode ter seu conteúdo alterado
mascaramento realizada durante a utilizando programadores EPROM. O chipe EPROM deve ser
confecção do chipe. Os bits são colocados removido do sistema antes da alteração. A memória é apagada
diretamente no circuito e não podem mais através de exposição a raios ultravioletas por cerca de 10 a 20
ser alterados. minutos.
Memória do Microcontrolador
• Memória Principal

Electrally Alterable ROM (EAROM) ou Electrally Erasable Pode ser reprogramada sem a necessidade de retirada do
PROM (EEROM ou E2PROM) podem realizar alterações sem chipe. Vários bytes podem ser alterados de uma única
a necessidade de retirada do chipe do sistema. Essa Memória vez. No PIC, ela é usada para armazenar a memória de
também é chamada de RMM (Read-Mostly Memory) já que a programa.
escrita nessa memória é bem mais lenta que a leitura.
Memória do Microcontrolador
• Memória Principal

Se caracteriza pelo uso de flip-flops para Utiliza capacitores para armazenar informação,
guardar informação. Uma vez que o bit é fazendo com que essa informação possa ser
armazenado, esta informação só será perdida quando houver descarregamento. Para
perdida através das instruções de controle isso, é necessário um circuito que fique
ou ao desligar o sistema realimentando a informação para a Memória
Processo de Escrita e Leitura
Clock Para buscar uma instrução, assim que
o CLOCK assume nível alto, a CPU
coloca o conteúdo do CP no
barramento de endereço através dos
Endereço pinos A0-A15.
[CP]
A0-A15
Nesse mesmo instante, a CPU eleva o
sinal READ (leitura), uma vez que é
necessário obter os dados do CP.
Leitura
Assim que o CLOCK assume nível
baixo, o conteúdo dos pinos A0-A15
Dado
[RI] é transferido para o barramento de
D0-D7
dados, sendo esta informação
Execução de prontamente guardada no RI, para
Busca de Instrução depois haver a execução das
Instrução
instruções.
Ciclo de Instrução
Processo de Escrita e Leitura
O processo de leitura:
Clock
1. A CPU realiza o ciclo de instrução,
guardando o código de operação (OP-
Endereço code) no RI;
A0-A15 [CP] [REM] 2. A CPU interpreta o OP-code como uma
instrução do tipo READ;
3. Quando o clock atinge nível ALTO,
então a CPU passa o conteúdo do REM
para os pinos A0-A15;
Leitura 4. Simultaneamente, a CPU passa o pino de
Leitura para o nível ALTO;
5. A CPU procura o conteúdo da memória
Dado ROM ou RAM indicado no REM para o
OP-code Dado barramento de dados;
D0-D7
Execução de 6. Finalmente, a CPU acessa os dados
Instrução através dos pinos D0-D7 do chipe, e os
Busca de
Instrução
armazena em seus registradores internos.
Busca de
Dado
Processo de Escrita e Leitura
Clock O processo de escrita:

1. A CPU realiza o ciclo de instrução,


Endereço como anteriormente;
A0-A15 [CP] [REM]
2. A CPU interpreta o OP-code como uma
instrução do tipo WRITE;
3. Quando o clock atinge nível ALTO,
Leitura então a CPU passa o conteúdo do REM
para os pinos A0-A15;
4. Simultaneamente, a CPU passa o pino de
Escrita para o nível ALTO;
Escrita 5. A CPU passo os dados a serem
armazenados dos seus registradores
internos para os pinos D0-D7 do chipe;
Dado 6. A CPU armazena o conteúdo dos
OP-code Dados
D0-D7 registradores na memória RAM indicado
no REM.
Busca de
Armazenamento
Instrução
de Dado
Organização da Memória Principal
ALTO – Realiza
16 linhas de endereço,
instruções de memória;
ou seja, 216 = 65536
BAIXO – Instruções
endereços diferentes ALTO – Leitura;
E/S. 8 linhas de dados.
permitidos BAIXO – Escrita.

Barramento
de Endereço
Barramento
de Dados

Barramento
de Controle
Organização da Memória Principal Essa unidade é usada
junto com muitas outras
10 linhas de endereço, iguais e são conectadas de
ou seja, 210 = 1024 modo que a CPU as possa
endereços disponíveis. selecionar corretamente
através de determinada
decodificação.

Típico chip de Memória


SRAM 1k x 8

𝐶𝑆1 𝐶𝑆2 ഥ
𝑅 Τ𝑊 Função
3 entradas de controle. O
𝑅 Τ𝑊ഥ indica a operação de 0 1 0 Escrita
escrita e 𝐶𝑆1 e 𝐶𝑆2 0 1 1 Leitura
funcionam como
habilitadores da unidade. 1 x x O chipe não é selcionado
O chipe não é selcionado
x 0 x
Decodificação
Linear

Endereços (Hex) SRAM


3800 – 3BFF I
3400 – 37FF II
2C00 – 2FFF III
1C00 – 1FFF IV

Vantagem: não há necessidade de


hardware adicional;

Desvantagem: É necessário uma


programação especial para evitar que
mais de uma unidade seja acionada.
Além disso, pode haver desperdício de
endereços de memória, assim como
redundância.
Decodificação
Completa

Um decodificador é adicionado à
estrutura. Para o decodificador
funcionar, 𝐸1 = 1 e 𝐸ത2 = 𝐸ത3 = 0 .
Caso contrário, nenhum SRAM é
acionado.
Decodificação
Completa

𝐴12 𝐴11 𝐴10 SRAM


0 0 0 I
0 0 1 II
0 1 0 III
0 1 1 IV

Endereços (Hex) SRAM


0000 – 03FF I
0400 – 07FF II
0800 – 0BFF III
0C00 – 0FFF IV
Entradas/Saídas de Microcontroladores
• Os dispositivos de entrada/saída (E/S ou I/O), conectados a um
microcontrolador garantem um meio eficiente de comunicação entre
o microcontrolador e o mundo;
• Também podem ser chamados de periféricos:
• Teclado;
• Display de 7 segmentos;
• LCD.
• Há dois tipos principais de E/S:
• E/S programados;
• E/S de interrupção.
Circuitos Digitais de Saída
Coletor Aberto
Utilizando a lógica TTL
(Transistor-Transistor
Logic), há três tipos de
configurações para
Saída Comum
saídas: coletor aberto,
totem-pole e tristate.

É comum utilizar vários transistores em


paralelo com os coletores conectados.
Desse modo, o nível em C será ALTO
Consiste de um transistor cujo emissor está somente se todos os transistores
conectado diretamente à terra. estiverem em corte. Ou seja, se os níveis
A tensão no coletor será a saída do sistema. de A e B estiverem em ALTO, então a
Normalmente é usado um resistor pull-up de 1 𝑘Ω saída C será ALTO. Se um dos
entre o coletor e uma fonte de alimentação de 5 𝑉. transistores estiver conduzindo, o nível
no coletor será BAIXO, levando C para
BAIXO. Dessa forma, o obtém-se um
circuito para uma porta AND.
Circuitos Digitais de Saída
Totem-Pole

No circuito totem-pole, há um circuito


lógico conectado às bases de 𝑄1 e 𝑄2 de Quando o transistor 𝑄2 está
modo que apenas um dos dois conduzindo, uma corrente 𝐼𝑠𝑖𝑛𝑘
transistores esteja conduzindo. aparece na saída. O valor dessa
corrente é apresentada como
𝐼𝑓𝑜𝑛𝑡𝑒 positiva. O valor dessa corrente é
Quando o transistor 𝑄1 está conduzindo,
uma corrente 𝐼𝑓𝑜𝑛𝑡𝑒 aparece na saída. O habitualmente de 8 𝑚𝐴.
valor dessa corrente é normalmente
apresentada como negativa, indicando Saída
que está saindo do circuito. O valor
dessa corrente é habitualmente de
− 0,4 𝑚𝐴 sob uma voltagem mínima de 𝐼𝑠𝑖𝑛𝑘
2,7 𝑉 . Quando deseja-se alimentar
dispositivos que requerem altas
correntes, deve-se usar amplificadores.
Circuitos Digitais de Saída
Tristate

Nada mais é que um tipo especial de totem-pole, o qual permite a conexão de


vários circuitos nesta configuração através de suas saídas. Este circuito especial
permite 3 estados:

BAIXO – Quando o transistor inferior está ligado, fazendo aparecer 𝐼𝑠𝑖𝑛𝑘 ;


ALTO – Quando transistor superior está ligado, fazendo aparecer 𝐼𝑓𝑜𝑛𝑡𝑒 ;

Um terceiro estado o qual desliga ambos os transistores, gerando uma alta


impedância na saída e permitindo a conexão do circuito a um condutor comum
com outros circuitos equivalentes.
Dispositivos E/S
• Um exemplo bastante simples de dispositivo E/S é o LED (Light-
Emitting Diode), o qual é alimentado por um valor baixo de corrente e
de tensão;
LED Vermelho Amarelo Verde
Corrente 10 𝑚𝐴 10 𝑚𝐴 20 𝑚𝐴
Tensão 1,7 𝑉 2,2 𝑉 2,4 𝑉

5 − 1,7
𝑅= = 330 Ω
Conectado a um bit 10 𝑚𝐴 Conectado a um bit
de uma Porta E/S de uma Porta E/S
Dispositivos E/S
• Outro exemplo bastante comum em circuito é o display de 7
segmentos;
• Cada segmento possui um LED;
• No geral, um LED com resistor pull down, se o microcontrolador envia
um bit igual a 1, o LED será aceso, caso contrário, o LED fica apagado.
E/S Programado
• O microcontrolador se comunica com dispositivos externos através de
registradores chamados de Portas E/S, usando E/S Programados. Cada Porta
possui um bit com os dados que serão transmitidos;
• Outro registrador indica de os dados nas Portas E/S são entradas ou saídas. Esses
registradores são chamados de Registradores de Direção de Dados (RDD);
• No PIC18F, um bit igual a ‘1’ no RDD indica que a Porta correspondente é uma
entrada, se o bit for ‘0’, então a Porta será uma saída.
Posição do bit

Bits no RDD

Portas E/S
E/S Programado
Posição do bit

Bits no RDD

Portas E/S

• No exemplo acima, dispositivos de entrada são conectados aos pinos 0, 1, 3, 6 e 7;


• Por sua vez, os dispositivos de saída são conectados aos pinos 2, 4 e 5;
• No momento que a CPU está lendo as entradas, os bits correspondentes aos
dispositivos de saída são preenchidos por algum valor predeterminado (‘0’ no
PIC18F). A CPU deve ter uma lógica interna para entender esses bits como ‘não
importantes’ (‘don’t care’).
E/S Programado
• Há duas formas de acionar os pinos E/S:
• E/S padrão;
• E/S mapeados na memória.
• No E/S padrão, a CPU envia uma sinal de controle 𝑀Τ𝐼𝑂. Quando este sinal está
ALTO, então uma operação na memória acontece, do contrário será realizada uma
operação na E/S;
• Quando E/S padrão é utilizado, o microcontrolador usam normalmente instruções
IN e OUT:

IN A, PORTA ; Transmite os dados do PORTA para o registrador A

OUT PORTA, A ; Transmite os dados do registrador A para o PORTA


E/S Programado
• No E/S mapeados na memória, a CPU utiliza pinos de endereço não utilizados para
distinguir entre memória e E/S;
• A CPU utiliza uma porção dos endereços de memória para representar as Portas E/S,
sendo que estas Portas são mapeadas;
• As instruções usadas para E/S são similares às utilizadas para memória:

MOV PORTA, A ; Transmite os dados do PORTA para o registrador A

MOV A, PORTA ; Transmite os dados do registrador A para o PORTA


E/S Programado
• Um dispositivo E/S pode ser programado de forma condicional ou não condicional.
A programação não condicional permite que o microcontrolador envie dados a
qualquer momento para o dispositivo;
• Um E/S Programado condicional, faz com que o microcontrolador tenha que esperar
por algum evento para que aconteça;
Comparador
Saída é Bit 0 do
1 se PORTC
Vx> Vy
Bit 1 do
PORTD
E/S Programado Na linguagem Assembly:

ORG 0x200 ; instruções começam no end. 0x200 do CP


Comparador SETF TRISC ; todos os bits do PORTC tornam-se entradas
Saída é Bit 0 do CLRF TRISD ; todos os bits do PORTD tornam-se saídas
1 se WAIT
PORTC
Vx> Vy MOVF PORTC,W; conteúdo do PORTC é passado para registrador W
Bit 1 do ANDLW 0x01 ; AND para verificar se bit 0 de W é igual a 1
PORTD BZ WAIT ; espera no loop pelo valor 1 depois do AND
MOVLW 0x02 ; transmite o 1 para o bit 1 de W
MOVWF PORTD ; transmite o conteúdo do bit 1 de W
SLEEP ; fim

Observação: No PIC, o RDD é chamado por TRIS (tristate). Sendo


assim, TRISC é o RDD que indica a direção de dados da Porta C
No circuito acima, o microcontrolador (PORTC).
vistoria o comparador. Quando o bit 0 do
PORTC receber o nível ALTO, então o bit 1
do PORTD também assumirá nível ALTO.
E/S de Interrupção
Uma desvantagem do E/S programado é que a CPU
Comparador precisa esperar a verificação de do estado da
entrada de interesse dentro de um loop. Essa
Saída é
INT característica diminui a velocidade com que a CPU
1 se
poderia processar outros dados.
Vx> Vy
Bit 1 do
PORTD
Para usar esse tipo de interrupção, o dispositivo externo
deve estar conectado a um pino de interrupção (INT).
Quando esse pino é ativado, a CPU termina a instrução
que estiver fazendo, guarda o conteúdo do CP e do RS
em uma pilha de memória.

O microcontrolador então carrega o CP com um


endereço que o leva a uma sub-rotina que deve ser
completada pela CPU para depois retornar ao que estava
fazendo antes. A sub-rotina deve ser escrita pelo usuário.
E/S de Interrupção
Há dois tipos de interrupção: externos e internos.

Comparador A interrupção externa é realizada através dos pinos E/S e pode


Saída é ser dividida em dois tipos: mascarável e não mascarável.
INT
1 se
Vx> Vy Uma interrupção não mascarável não pode ser habilitada ou
Bit 1 do desabilitada através de instruções inseridas pelo usuário. Um
PORTD exemplo típico é a interrupção por falha de alimentação, o qual
acontece quando a alimentação do microcontrolador não
consegue ser mantido em 5 𝑉 por algum problema externo.
Quando isso acontece, uma sub-rotina começa para salvar os
dados da memória RAM em outra memória não volátil, de
modo a não comprometer a execução das instruções, caso o
microprocessador venha a desligar. O PIC18F não possui
interrupções não mascaráveis.

A interrupção mascarável é aquela programada para acontecer


com um evento, como no exemplo do comparador.
E/S de Interrupção
ORG 0x200 ;
SETF TRISC ;
Comparador CLRF TRISD ;
MOVLW 0x15
Saída é
INT MOVWF STLPTR ; Inicializar STCPTR em 0x15
1 se
MOVLW 3 ; Colocar 3 em W
Vx> Vy
Bit 1 do
PORTD Ocorre uma interrupção A instrução MOVLW é concluída e a
durante MOVLW sub-rotina de interrupção é iniciada

ORG 0x000008; endereço inicial da sub-rotina


MOVLW 0x02 ; coloca o valor 1 no bit 2 de W
MOVWF PORTD ; leva o conteúdo de W para PORTD
RETFIE ; restaura CP e RS, retornado à outra instrução

BEGIN
O comando RETFIE leva ao endereço do
MOVWF 0x30 ; leva o conteúdo de W para 0x30
CP com a instrução BEGIN, o qual é
-
criado assim que ocorre a interrupção.
-
E/S de Interrupção
• As interrupções internas são sempre mascaráveis;
• Elas são disparadas por periféricos internos ao microcontrolador:
• Conversor A/D;
• Temporizador;
• E/S Serial.
• O funcionamento das interrupções internas funcionam de maneira idêntica às
externas, bastando o usuário programar as condições necessárias para a
interrupção.