Você está na página 1de 44

Implementação de

microprocessadores e
microcontroladores

Disciplina : Microprocessadores
Prof. Jabson
Componentes fundamentais
CPU (Central Processing Unit) – é a componente que realiza a parte
fundamental do trabalho do computador, e que consiste em processar
electronicamente dados ou informação

Esquema básico
de um microprocessador
Na memória primária ou
central é armazenada
Unidade de aquisição e de informação codificada, que vai
interface com a memória primária
ser chamada ao processador,
para este realizar as
Unidade operações ou instruções
Lógico Unidade de Memória contidas nessa informação
Aritmética Controle Primária
(ALU)
A unidade de controle envia aos outros componentes
sinais de ativação e sincronização das operações
Registros (Registers)
Os registros são pequenos circuitos de armazenamento
temporário de instruções e dados
Componentes fundamentais
Estrutura Simplificada de  O processador apenas entende os sinais
elétricos que percorrem os circuitos que
uma Memória (RAM) o constituem
células  Os computadores funcionam com o
sistema de informação binário (zeros e
ums)
 BIT – entidade minima de informação
com que lida um SI (pode ser 0 ou 1)
N
 Byte – agrupamento de 8 bits
endereços

9
8
7  Todos os dados e instruções que
6
5
circulam entre o processador e a
4 memória estão sobre a forma de bits e
3 têm significado quando resultam do
2
1
agrupamento de bits (bytes)
0

 Um programa é armazenado em
memória sobre a forma de uma
sequência de instruções (bytes) podendo
ser diretamente executado pelo
processador – PROGRAMA OBJETO
Execução de um programa
Informação que entra para um sistema informático
 Instruções de programas
 Dados manipulados por esses programas
 Instruções e dados são armazenados temporáriamente na RAM e
codificadas e executadas no processador
 Cada instrução é executada através de um ciclo de instrução

Ciclo de Instrução – processo que consiste em fazer com que cada instrução
passe da memória para o processador, para aí poder ser executada
1. Em cada instante, o processador contém num registo próprio (Instruction Pointer-IP
ou Program Counter-PC) o endereço ou posição de memória onde se encontra a
próxima instrução a ser executada
2. A unidade de controle envia um sinal à memória pedindo o conteúdo da instrução
que está no endereço dado por IP
3. A instrução pedida é devolvida para um outro registro do processador (Instruction
Register – IR) para então ser descodificada e executada pelo
1.2. Níveis de um Sistema Informático
O Computador é um sistema que integra e articula dois tipos fundamentais de
componentes:
Físicos - Hardware (compon. mecânicos, electrónicos e electromecânicos)
Lógicos - Software (programas = conjunto de instruções codificadas)

O SW permite que a máquina física (o HW) deixe de ser apenas um


emaranhado de circuitos e passe a ser um um utensílio que pode realizar tarefas
complexas manuseável por pessoas

O SW permite criar uma abstracção do HW (uma Máquina Virtual)


O SW é ele próprio organizado em camadas, em que, camadas de
nível superior são abtracções de camadas de nível inferior
Tipos e camadas de Software
Utilizador Programador

Software de Programas de
Aplicação Aplicação
Software de
Programação
Software de Interface de Comandos (Shell)
Sistema Núcleo (Kernel)

Hardware - Máquina

Sistema Operativo – atua como interface entre o HW e o utilizador ou os seus


programas de aplicação
Programas de aplicação - Processador de Texto; Folha de Cálculo; etc.
Sobrepõem-se ao sistema operativo
Um Sistema Informático pode ser visto como uma sucessão de máquinas virtuais
as quais são criadsa usando linguagens de programação
2. Linguagens de Programação
Linguagem de Programação - é um sistema de escrita formal para enunciar a
execução de operações em computador
– tem uma terminologia ou um conjunto de termos, palavras e sinais, que
assumem determinados significados (sintaxe)
– ou conjunto de regras que estipulam o uso correto dos termos, para
construir significados válidos (semântica)

Programa - é um conjunto de frases que utilizam os termos e as regras de uma


determinada linguagem de programação, com vista a concretizar determinados
objectivos

Algoritmo – forma ou fórmula para resolução de um determinado problema,


mediante o estabelecimento de determinadas regras e procedimentos.
2.1. Da Linguagem Natural à Linguagem Máquina

Linguagem Natural

Linguagens de Programação
de “Baixo nível”
(Assembly)

Programa-fonte

Assemblador Programa
tradutor

Programa-objecto
ou executável
Linguagem máquina ou código-máquina
2.1. Da Linguagem Natural à Linguagem Máquina

Linguagem Natural

Linguagens de Programação
de “Baixo nível” de “Alto Nível”
(Assembly) (Pascal, C, C++, Java, ...)

Programa-fonte Programa-fonte

Assemblador Programas Compilador Interpretador


tradutores

Programa-objecto Programa-objecto
ou executável ou executável
Linguagem máquina ou código-máquina
2.1. Da Linguagem Natural à Linguagem Máquina

Linguagem Natural

Linguagens de Programação
de “Baixo nível” de “Alto Nível”
(Assembly) (Pascal, C, C++, Java, ...)

Programa-fonte Programa-fonte
Compilador
Ou tradutor

Assemblador Programas
tradutores

Programa-objecto
ou executável
Linguagem máquina ou código-máquina
2.1. Da Linguagem Natural à Linguagem Máquina

Linguagem Natural

Linguagens de Programação
de “Baixo nível” de “Alto Nível”
(Assembly) (Pascal, C, C++, Java, ...)

Programa-fonte Programa-fonte

Linker - liga programas objecto - Reutilização


Programa Programa
Assemblador Linker Compilador
tradutor tradutor

Programa-objecto Programa-objecto Programa-objecto

Linguagem máquina
2.2. Ambientes de programação
Tipos de Ficheiros:
 Ficheiro de texto simples (ASCII) – informação em formato de caracteres =>
programa em código fonte
 Ficheiro binário – informação em formato binário => programa executável
(em formato binário directamente executável)

Ambiente de programação – apoia o programador nas tarefas habituais, desde


a escrita à complicação dos programas, passando pela detecção e correcção
dos erros que os programas possam conter. Ferramentas típicas:
– Editores
– Compiladores
– Depuradores (debbugers)
– Verificadores
– Geradores de dados para testes
– Linkers (ligadores)
– .....
2.3. A evolução das Linguagens de Programação
 Alguns aspectos que deram origem a evoluções das linguagens de
programação
– autonomia do código fonte
– satisfação de necessidades sectoriais (ex. matemática)
– maior estruturação na abordagem dos problemas
– melhor manutenção
– maior expressividade (Inteligência Artificial)
– geração de código
– reutilização de código
– maior aproximação entre a linguagem natural e as linguagens de
programação
– .......
 As linguagens foram sendo classificadas em gerações em função das
características que ofereciam, considerando-se que linguagens com
caracrterísticas semelhantes pertencem à mesma geração
2.3. A evolução das Linguagens de Programação

Linguagens Orientadas
por Objectos
Complexidade do SW

Linguagens estruturadas,
4GL
Primeiras linguagens

Linguagens máquina,
assembly

1960 1970 1980 1990 2000


2.3. A evolução das Linguagens de Programação
 Ling. 1ª geração
– Dependentes da máquina, ao mais baixo nível de abstracção.
– Codificação em Assembly
 Ling. 2ª geração
– Oferecem algum nível de abstração e Introduzem as Bibliotecas de Software
 Ling. 3ª geração (Linguagens Estruturadas)
– Ricas em capacidades procedimentais e estrutuas de dados. Dividem-se em:
• General Purpose High Order Languages (Pascal, C, ...)
• Object Oriented Languages
 Ling. 4ª geração
– Sintaxe distinta para controle e representação de estruturas de dados
– O seu elevado nível de abstração elimina a necessidade de especificação algoritmica
exaustivamente detalhada
– Combinam características procedimentais com não-procedimentais
– Query Languages e Geradores de Aplicações.
 Ling. 5ª geração
– Linguagens não-procedimentais que permitem a declaração do problema a resolver
possuindo a própria linguagem mecanismos para a sua resolução
– Linguagens declarativas (Prolog)
2.3. A evolução das Linguagens de Programação
Fortran Cobol Primeiras Linguagens

Algol
Linguagens Estruturadas
Simula
Pascal
C
Linguagens percursoras
OO
Smalltalk
Linguagens
OO Objective C
Módula-2

C ++ Ada
Eiffel
OO Pascal
Actor
Java
C#
Arquitetura do microcontrolador

O alto desempenho da família de microcontroladores


PIC pode ser atribuído as seguintes características de
arquitetura RISC:

 Mapa de Registradores versátil


 Todas as instruções com palavras simples
 Palavra de instrução Longa
 Arquitetura de instruções em “Pipeline”
 Instruções de apenas um ciclo de
máquina
 Conjunto de instruções reduzido
 Conjunto de instruções ortogonal
(simétrico)
Mapa de registradores
MPLAB 8.92

 O (Mplab IDE) (Integrated Development Environment) é um


ambiente de trabalho para programação e simulação de projetos
baseados em PIC. A Microchip® fornece ainda um compilador em
linguagem C para PIC. O (Mplab C18) é o compilador da
Microchip® para a família PIC 8 bits, o (Mplab C30 2010) é o
compilador para a família de 16 bits: PIC24, dsPIC30F e dsPIC33F
e o (Mplab C32 2010) para a família 32 bits, como o
PIC32MX360F512L.
CONFIGURAÇÃO DE PINOS

 Um microcontrolador é um tipo de circuito integrado (chip). E


todo chip possui pinos de entrada e saída. Alguns desses pinos
tem funcionalidade específica e não estão disponíveis para que
os usuários programe ou modifique o seu comportamento, isto é,
um pino de saída não pode ser programado como entrada e
vice-versa. Entretanto, a maior parte dos pinos de um
microcontrolador pode ser configurado pelo usuário. Os pinos
podem ser configurados como entrada ou saída, tipo digital ou
analógico, definir pinos de saída com um valor lógico “1” ou com
um valor lógico “0”. Essa configuração dos pinos é realizada
programando-se registradores específicos para tal fim.
O MCU que usaremos no nosso curso possuem pinos
que podem ser programados pelo usuário e outros pinos
com funções bem definidas que não permitem
programação.
Os pinos programáveis com uma mesma característica são agrupados
em PORTOS (I/O Ports). Os PORTOS são portanto conjunto de pinos
programáveis com uma mesma característica estrutural e elétrica.
 Os PORTOS do PIC recebem o nome de letras do alfabeto de A a G.
Portanto, existe o PORTO A que é o conjunto de pinos RA0, RA1,
RA2, RA3, até RA7. Vide datasheet Pin diagram. Assim como existe
um PORTO B, um PORTO C, etc. Cada PORTO possuí uma
quantidade de pinos própria e são atrelados a funcionalidades
específicas do MCU. Os PORTOS são conhecidos também como
GPIO (General Purpose Input/Output), ou seja, são portas (pinos do
microcontrolador) para uso geral, como acionamento de algum circuito
eletrônico ou leitura lógica (0 ou 1) de algum sensor, comando ou
mesmo o pressionar de um botão.
 Associado a cada PORTO, existe um conjunto de registradores. Cada
registrador desse conjunto tem um nome que o distingue dos demais
e uma funcionalidade específica. Exemplo: registrador TRIS associado
aos pinos do PORTO A chama-se TRISA
Registradores

 Os principais registradores do microcontrolador que deveremos


programar (configurar) para definir os pinos como entrada ou saída;
pino digital ou analógico nesta prática são: TRIS e PORT.

 Todos os pinos programáveis desse MCU possuem quatro


registradores para a sua manipulação e configuração. Esses
registradores são:
TRISx

Tem por objetivo guardar a configuração da direção do pino, isto é se é


Entrada ou Saída. Colocar "1" em um bit p do registrador TRIS, significa
que o pino p do PORTO x será uma entrada. Da mesma forma,
configurar o mesmo bit p do registrador TRIS com "0" significa que
queremos que tal pino seja uma saída. A configuração é feita em
hexadecimal para facilitar a identificação se um pino esta sendo
configurado como entrada ou saída.

Ex.: TRISA = 0xFF80; // 1111 1111 1000 0000 pinos RA0 até RA6
serão saída, os demais entradas.
PORTx

Esse registrador será usado para a leitura de um dado (valor lógico) do


pino se o mesmo for configurado como um pino de Entrada. Botões,
chaves e entradas digitais são associadas a pinos de entrada. Os valores
lógicos de botões, chaves e entradas digitais ficam registrados no
registrador PORT na posição correspondente do pino do PORTO a qual
estão ligados. Veja o exemplo a seguir.

Ex.: PORTB = 0xFFFE; // 1111 1111 1111 1110 Ler um nível lógico "1" de
uma posição (bit) q do registrador PORTB, significa dizer que o pino q
recebeu um nível lógico digital alto em sua entrada. Da mesma forma que
se lermos "0", significará que o pino q está em nível lógico digital baixo.
cabeçalhos
 // INCLUDES #include <p32xxxx.h> //include para o PIC16f84a

 Cada linha da cláusula “#define” define um nome para cada endereço


de registrador do microcontrolador que pode ser configurado pelo
programador. Para melhor entendimento do código, atribuímos nomes
representativos às entradas (botões) e saídas (leds)

 Dessa forma temos: #define nome endereço


Interrupções

 Múltiplas fontes de interrupções interna/externa


 Prioridade de interrupção setada por software
 Habilitação global e individual das interrupções
 Diversas interrupções despertam o processador
do estado de dormência (SLEEP)
 Tempo de latência da interrupção é fixada em 3
ciclos de instrução
Implementação no MPLAB 8.92

Familia PIC16F84A
Data Sheet
ARQUITETURA DE HARDWARE
Características Gerais
 Apenas 35 palavras de instrução para aprender
 Todas instruções com um ciclo exceto para desvios que
levam dois ciclos
 Velocidade de operação: DC até 20 Mhz de clock
 Instruções com 14 bits de largura
 Barramento de dados de 8 bits
 16 registradores de funções especiais de hardware
 Pilha com 8 níveis de profundidade
 Modos de endereçamento direto, indireto e relativo para
dados e instruções.
 Capacidade de interrupção
Características dos periféricos
 13 pinos de I/O individualmente configurados
 Temporizador/Contador de 8 bits com 8 bits de “pré-escala”
 Power-On Reset (POR)
 Temporizador Watch-Dog (WDT) com oscilador próprio para operações
seguras
 Proteção de Código Programável
 Modo SLEEP para diminuição de consumo de energia.
 Opções de oscilador selecionável:
– RC – oscilador RC de baixo custo
– XT – cristal padrão
– HS – Cristal de alta velocidade
– LP – Cristal de baixa freqüência (redução de consumo)
 Programação Serial “in-circuit” (através de dois pinos)
 4 bytes de identificação (ID) programáveis pelo usuário
Organização da Memória de Programa

A família PIC16F84A tem um contador de


programa (PC) de 13 bits capaz de endereçar até
8K x 14 bits de memória de programas. O vetor de
RESET está localizado no endereço 0000h e o
vetor de interrupção no endereço 0004h. Outra
característica importante a ser salientada é a
impossibilidade de se ler diretamente da memória
de programa. A maneira com que isso é feito na
arquitetura do PIC é utilizando a instrução
“RETLW k”, que será visto mais adiante na
apresentação do conjunto de instruções.
Organização da Memória de Dados
 A memória de dados é composta de registradores e RAM
para uso geral. Os registradores são divididos em 2 grupos
funcionais: Registradores de Funções Especiais (32
endereços iniciais de cada banco) e Registradores de Uso
Geral (endereços restantes de cada banco). Entre os
registradores de funções especiais estão: o registrador
TMR0, o contador de programa (PC), o registrador de
Status (STATUS), os registradores I/O (ports) e o
registrador de seleção (FSR). Além disso, os registradores
de funções especiais são usados para controlar a
configuração dos ports de I/O e as opções de pré-escala.
Os registradores de uso geral são usados para dados e
controle de informação sob comando das instruções.
STATUS

 É o registrador que possui os flags que indicam resultados


de operações da unidade lógica e aritmética (ULA), a
condição de RESET e o bit de pré-seleção do banco de
memória de dados. Os bits C, D e Z (bits 0, 1 e 2) indicam
o estado de uma operação aritmética na ULA. Os bits PD#
(bit 3) e TO# (bit 4) indicam o estado de Reset. Os bits
TO# e PD# são somente para leitura, não são possíveis de
serem alterados por software. Quando na apresentação do
sistema de Reset e do Conjunto de Instruções iremos
detalhar mais esse registrador.
Registrador de Trabalho

É o registrador mais utilizado, pois toda a


transferência de dados é feita através dele. Além
disso, todas as operações aritméticas e booleanas
o utilizam como sendo um dos operandos. Ele é
parecido com o acumulador de outras famílias de
microcontroladores. Este registrador não é
endereçável.
Registradores de I/O

Os Registradores de I/O podem ser escritos ou


lidos sobre o controle do programa como qualquer
outro registrador. Na condição Reset todos os
I/Os são definidos como entrada, assim como
todos os registradores de controle de I/O (TRISA
e TRIS) são configurados com 1.
PORTB

Esse registrador tem correspondência direta com


os pinos RB7:RB0 do microcontrolador. Ele tem 8
bits de largura e é bidirecional. Cada bit desse
PORT pode ser individualmente configurado como
entrada ou saída. Cada pino PORTB tem um pull-
up interno.
TRISA e TRISB

São os registradores referentes à configuração dos


pinos de I/O da PORTA e PORTB. Escrever 1’s nos
registradores TRISA e TRISB fazem dos bits
entradas, colocando o driver de saída em alta
impedância. Escrever 0’s nesses registradores
fazem dos bits saídas, colocando o conteúdo da
saída nos latches dos PORTs correspondentes.
Após um Reset, todos os registradores são
configurados com 1’s, ou seja, todos os pinos de
I/O configurados como entrada.
PORTA

 Esse registrador tem correspondência direta com os pinos


RA4:RA0 do microcontrolador. Ele possui somente 5 bits
(RA0 a RA4); os demais 3 bits não são implementados e
são lidos como zero. Cada bit desse PORT pode ser
individualmente configurado como entrada ou saída. O
pino RA4/T0CK1 é uma entrada Schimitt Trigger e uma
saída com dreno aberto. O port RA4 é multiplexado com a
entrada de clock T0Ck1. Todos os outros pinos de PORTA
tem níveis de entrada Schimmit Trigger e drivers de saída
CMOS completos.
INSTRUÇÕES EM ASSEMBLY

Verbos ou
termos (inglês) Ação do verbo ou tradução do termo
(mnemônicos)

ADD add Adicionar


AND and Fazer um "E" lógico
B bit Um bit de um file(file=posição de RAM)
C clear Limpar, colocar em zero
CALL call Chamar
CLR clear Limpar
COM complement Complementar ( exemplo: o complemento de 1 é zero)

Refere em qual file de destino vais ser armazenado o resultado da operação: se


d destination
d=0 é aemazenado em w(registro de trabalho), se d=1 é armazenado no f (file)

DEC decrement Decrementar um


F file Registro, é uma posição da RAM
GOTO go to Vai para...
INC increment Incrementar um
IOR inclusive or Fazer um "ou inclusivo" lógico
k constant É uma contante, pode ser um literal ou um label
L literal É uma constante
INSTRUÇÕES EM ASSEMBLY
Verbos ou termos
(inglês) Ação do verbo ou tradução do termo
(mnemônicos)

MOV move Mover

NOP no operation Não faça nenhuma operação

RETFIE return from interrupt Retornar de uma interrupção

return with literal in


RETLW Retornar com um valor literal em w
w

RETURN return Retornar de uma subrotina

RL rotate right Rodar para direita

RR rotate left Rodar para esquerda

S set ou skip Set= colocar em 1 / Skip= ação de pular

SLEEP sleep Entrar em modo standby, ou modo de espera, (economia de energia)

SUB subtract Subtrair

SWAP swap trocar

T test Testar

W work É o file de trabalho,(registro de trabalho)

WDT watch dog timer É o registro de RAM onde está o temporizador do periférico "watch dog"

XOR exclusive or fazer um "ou exclusivo" lógico

Z zero Zero

Você também pode gostar