Você está na página 1de 47

Aula 05 – Sistemas Microcontrolados

Componentes essenciais de um Microcontrolador

ƒ CPU (Unidade central de processamento):


• A unidade lógica aritmética (ALU),
(ALU) que executa os
cálculos.
• Registradores necessários para o funcionamento básico
da CPU, como o contador de programa (PC), ponteiro de
pilha (SP) e registrador de status (SR).
• Outros registradores para armazenar resultados
CPU Clock
temporariamente.
• Decodificador de Instruções e outros circuitos lógicos
Barramento de Endereços (Address Bus) para controlar a CPU, circuitos de reset e interrupções,
etc.
t
Barramento de Dados (Data Bus)
ƒ Memória de programa: memória (não-volátil somente de
Barramento de Controle (Control Bus) leitura, ROM), que mantém o seu conteúdo quando a
alimentação é removida.
Memória de Memória de Portas de ƒ Memória de dados (trabalho): conhecida como memória de
Programa Dados Entrada e Saída acesso aleatório (RAM) e, geralmente voláteis.
(ROM) (RAM) (I/O)

• Portas de entrada e saída: Para fazer comunicação com o


mundo exterior.

Mundo Exterior • Barramentos: fazer a ligação desses subsistemas para a


transferência de dados, endereços, controle e instruções.
• Clock: Para manter todo o sistema sincronizado. Pode ser
gerados internamente ou obtidos a partir de um cristal ou fonte
externa; MCUs modernos oferecem uma escolha considerável
de clocks.

Powered by Enderson Neves Cruz 1


Aula 05 – Sistemas Microcontrolados
Vantagens da utilização de Microcontroladores

• “Microcomputador-de-um-só-chip”
• Pode reunir em um só chip:
– Microprocessador,
– Memórias (ROM,RAM, flash)
– Portas de entrada e saída:
• Temporizadores (timers)
• Contadores
• WDT (Watch Dog Timer)
• POR (Power On Reset)
• Portas de comunicação Serial (USB, I2C, SPI, etc.)
• Portas de IO paralela
• Conversores AD/DA
• etc.
• Menor tamanho
• Menor área de placa
• Menor custo
• Facilidade no desenvolvimento
• Menor tempo de desenvolvimento
• Programa gravado na memória interna o que impede cópias ilegais
• Grande quantidade de fabricantes, famílias e tipos.

Powered by Enderson Neves Cruz 2


Aula 05 – Sistemas Microcontrolados
Aplicações
Atualmente microcontroladores estão presentes em quase todos equipamentos eletrônicos.

• Eletrônicos
El tô i d consumo (forno
de (f micro-ondas,
i d TV aparelhos
TV, lh ded som, maq.ded lavar,
l etc)
t )
• Eletrônica automotiva (sist. Injeção, freio ABS, central de alarme, ar cond., etc)
• Eletrônica de Segurança
• Automação Residencial
• Automação Industrial
• Robótica
• Telemetria/telecomando
• I t
Instrumentação
t ã
• Lazer/Entretenimento
• etc.

Powered by Enderson Neves Cruz 3


Aula 05 – Sistemas Microcontrolados
Arquitetura Família MSP430x14x - Diagrama em blocos

Powered by Enderson Neves Cruz 4


Aula 05 – Sistemas Microcontrolados
Arquitetura do microcontrolador PIC16F84A

Powered by Enderson Neves Cruz 5


Aula 05 – Sistemas Microcontrolados
Arquitetura do microcontrolador PIC16F84A

Características principais

• 1k (1024) palavras de 14 bits para programa;


• 68 bytes de RAM para uso geral;
• 64 bytes de EEPROM para dados;
• Stack com 8 níveis;
• Arquitetura Harvard;
• Apenas
p 35 instruções
ç RISC;;
• 15 registros específicos em RAM para controle do chip e seus periféricos;
• Timer de 8 bits com opção de prescaler de 8 bits;
• 13 pinos que podem ser configurados individualmente como entrada e saída;
• Alta capacidade de corrente nos pinos;
• Capacidade de gerenciar interrupções (até 5 entradas), do timer e EEPROM;
• Watch Dog para recuperação e reset em caso de travas no software;
• Memória de programa protegida contra cópias;
• Modo Sleep para economia de energia;
• Várias opções de osciladores.
Datasheet
PIC16F84A

Powered by Enderson Neves Cruz 6


Microcontrolador Texas MSP430

Powered by Enderson Neves Cruz


Aula 05 – Introdução ao MSP430

Powered by Enderson Neves Cruz 8


Aula 05 – Introdução ao MSP430

Características gerais das famílias

Powered by Enderson Neves Cruz 9


Aula 05 – Introdução ao MSP430
Arquitetura Família MSP430x14x - Características
Ultrabaixo consumo

• Consumo de
C d corrente
t nominal
i l de
d 0.1
0 1 a 400μA
400 A a 1MHz
1MH
• Faixa de tensão de alimentação de 1.8 a 3.6V
• Saída do modo de stand-by em 6μs.
• Grande capacidade de interrupção tornando o ‘polling’ desnecessário.

Ferramentas de desenvolvimento completas e de fácil uso


• Simulador (incluindo periféricos e simulação de interrupção)
• Compilador C e CC++
• Assembler
• Linker
• Emulador via JTAG

Várias versões de dispositivos:


• ROM
• OTP
• EPROM
• FLASH
• FRAM

Powered by Enderson Neves Cruz 10


Aula 05 – Introdução ao MSP430

Em todo o curso será utilizado o modelo MSP430F149

Powered by Enderson Neves Cruz 11


Aula 05 – Arquitetura MSP430
Arquitetura Família MSP430x14x - Diagrama em blocos
Memória de
Dados Conversor Portas de entrada e saída
Memória de
P
Programa ADC
Clock

CPU
MAB, 16-Bit

MDB, 16-Bit MDB, 8-Bit

Multiplicador
por Hardware Power On
Watchdog Reset USARTs
Interface JTAG Ti
Timers
Timer Comparador

Powered by Enderson Neves Cruz 12


Aula 05 – Interface JTAG
Versão resistiva

Powered by Enderson Neves Cruz 13


Aula 05 – Interface JTAG USB

Powered by Enderson Neves Cruz 14


Aula 06 – A CPU
Visão geral da CPU
• Arquitetura RISC
– 27 instruções físicas
– 24 instruções emuladas
– 7 modos de endereçamento

• Arquitetura de von Neumann: mesmo barramento para endereços de


memória (MAB) e para dados (MDB).
– Faz uso de uma única estrutura de armazenamento para dados e
instruções.

• Barramento de endereçosç de 16 bits p


podendo endereçar
ç 64kB
(incluindo RAM + Flash + Registros)

• Usa um pipeline de instrução de 3 estágios contendo:


– decodificação de instrução;
– ULA de 16 bit;
– 4 registros de uso específico;
– 12 Registros de trabalho.

Powered by Enderson Neves Cruz 15


Aula 06 – A CPU

Unidade Lógica Aritmética (Arithmetic Logic Unit – ALU )


• Operações: adição,
adição subtração,
subtração comparação e lógicas (AND,
(AND OR,
OR XOR,
XOR NOT)

• As operações podem afetar os flags do SR (Status Register) :


ƒ C - transbordamento (carry)
ƒ Z - zero
ƒ N - Negativo
ƒ V - Overflow
Registradores

Barramento de dados (MDB)

Unidade Lógica Aritmética - ALU

Powered by Enderson Neves Cruz 16


Aula 06 – A CPU
Registros da CPU

Contador de Programa ( Program Counter – PC )


Apontador de Pilha ( Stack Pointer – SP )
4 Registradores de uso
específico Registrador de Status ( Status Register – SR )
Gerador de Constantes ( Constant Generators – CG )

12 Registradores de
uso geral

Powered by Enderson Neves Cruz 17


Aula 06 – A CPU

Contador de Programa ( Program Counter – PC )


• O Contador de programa (PC/R0) aponta para a próxima instrução a ser executada.
executada
• Cada instrução tem um número par de bytes ( 2, 4 ou 6), desta forma o contador de programa será incrementado
de acordo com o número de bytes da instrução
• O acesso das instruções no espaço de endereçamento de 64 kB, é realizado em Words, o PC é alinhado para os
endereços pares, para tanto o bit 0 é sempre mantido em nível lógico 0.

Contador de programa - PC

• O PC pode ser lido ou escrito diretamente pelo software em execução, permitindo o uso de técnicas, como por
exemplo: Desvio Calculado.

Exemplos:

MOV #USJT ,PC ;Desvio para o endereço USJT


MOV R7 ,PC ;Desvio para o endereço contido em R7
MOV @R14 ,PC ;Desvio indireto para o endereço apontado por R14

Powered by Enderson Neves Cruz 18


Aula 06 – A CPU

Apontador de Pilha ( Stack Pointer – SP )


• O apontador da pilha (SP/R1) é utilizado pela CPU para armazenar os endereços de retorno de sub-rotinassub rotinas e
interrupções e pelo usuário para armazenamento temporário de dados.
• Utiliza modo de pré-decremento (decrementa e depois empilha) e pós-incremento (desempilha e depois
incrementa) .
• A cada operação de empilhamento (armazenar dado na pilha) o SP é decrementado de 2, e a cada operação de
desempilhamento (leitura de dado na pilha) o SP é incrementado de 2.
• O SP pode se utilizado por software em todos os modos de endereçamento e com todas as instruções.
• O SP é inicializado em memória RAM pelo usuário, sendo alinhado por endereços pares, para tanto o bit 0 é
sempre mantido em nível lógico 0.
• Após
pós o reset
ese o S
SP fica
ca e
em valor
a o indeterminado,
de e ado, de
devendo
e do se
ser inicializado
c a ado pepelo
o usuá
usuário
oaantes
es de u
utilizar
a appilha.
a

Apontador de Pilha - SP

Exemplo:

PUSH R7; coloca R7 em TOS


PUSH R4; coloca R4 em TOS
POP R4 ;R4 = TOS

Powered by Enderson Neves Cruz 19


Aula 06 – A CPU
Registrador de Status ( Status Register – SR )
• O Status Register (SR/R2) é o registrador especial de 16 bits que contém os FLAGS de condições das operações
lógicas e aritméticas, bits de controle dos modos de operação (LPM - Low Power Mode), o bit de habilitação global
das Interrupções Mascaráveis e bits reservados que são utilizados como gerador constante CG1.
CG1

Registrador de Status ( Status Register – SR )


Bit Descrição

8 V Flag de estouto (Overflow). Será setado se o resultado de uma operação aritmética transbordar (overflow). O bit é válido para operação de byte ou de word.

7 SCG1 Gerador de clock do sistema. Controla o sinal SMCLK.

6 SCG0 Gerador DC do DCO (Oscilador Controlado Digitalmente) do sistema. Controla o sinal DCOCLK.

Bit de desligamento do cristal oscilador do sistema de clock. Se este bit estiver setado, o oscilador a cristal entra em estado desligado. Todas as
5 OSCOFF atividades dependentes deste sinal de clock cessam, contudo o conteúdo de RAM, portos e registros são mantidos. Caso a CPU dependa deste clock
somente voltará a funcionar se ocorrer uma interrupção externa
externa, quando o bit GIE estiver habilitado ou um sinal NMI ou reset
reset.

Bit de desligamento do clock da CPU. Se este bit estiver setado a CPU entra em modo desligado. A execução de programas
4 CPUOFF
pára, contudo, RAM, registros e portas são preservados. Somente sairá deste estado através de interrupção ou reset.

Bit habilitador geral de interrupção (General Interrupt Enable). Se setado habilita todas as interrupções mascaráveis. Se resetado desabilita todas as
3 GIE interrupções mascaráveis. O bit GIE é resetado automaticamente pela interrupção e setado automaticamente pela instrução RETI ou por outra instrução
apropriada.

Flag de
Fl d Negativo.
N ti S á setado
Será t d se o resultado
lt d d
de uma operação
ã ffor negativo.
ti E
Em operações
õ d de word
d o bit N = bit 15 d
do resultado.
lt d
2 N
Em operações de byte o bit N = bit 7 do resultado.

1 Z Flag de Zero. Será setado se o resultado de uma operação de byte ou word for zero. Caso contrário será resetado.

Flag de transporte (carry). Será setado se uma operação produzir um carry (vai um) e zerado se não houver carry.
0 C
Em algumas instruções o bit de carry indica resultado diferente de zero (bit de zero invertido).

Os bits de status V, N, Z e C são modificados somente com instruções específicas, consulte o conjunto de instruções.

Powered by Enderson Neves Cruz 20


Aula 06 – A CPU

Flags da ULA – Exemplos

Operação C Z N V
83H + 8AH
C + B4H
4CH
47H + 39H
57H – 72H
32A0H + 1653H
5AH AND 3FH
0CH XOR 78H

Powered by Enderson Neves Cruz 21


Aula 06 – A CPU
Registradores Geradores de Constantes (Constant Generators – CG)

• Constantes frequentemente utilizadas são geradas com os registradores geradores de constantes R2/CG1 e
R3/CG2, sem a necessidade de uma palavra de código de programa adicional de 16 bits.

• O funcionamento depende do modo de endereçamento (As) conforme mostrado na tabela

Register
g As Constant Remarks
R2 00 - Register mode
R2 01 (0) Absolute mode
R2 10 00004h +4, bit processing
R2 11 00008h +8, bit processing
R3 00 00000h 0, word processing
R3 01 00001h +1
R3 10 00002h +2, bit processing
R3 11 0FFFFh -1, word processing

• Esta é uma característica muito poderosa que permite a execução de instruções emuladas, por exemplo, em vez
de implementar uma instrução para realizar um incremento, o gerador de constantes é utilizado.

• As maiores vantagens
g destes tipos
p de ggeradores de constantes são:
– Não exige nenhum tipo de instrução especial;
– Redução do código de programa: não necessita de uma palavra adicional para as seis constantes mais
utilizadas;
– Redução do tempo do ciclo de instrução: não acessa memória para pegar a constante.
– Exemplo: CLR R4 emulação: MOV #0, #0 R4

Powered by Enderson Neves Cruz 22


Aula 06 – A CPU
Registradores de uso geral (General–Purpose Registers)
• Os 12 registradores restantes são registradores de uso geral (R4-R15) não tendo nenhum propósito específico e
podem ser utilizados como registros gerais de trabalho.

• São utilizados para armazenar dados, ponteiros de endereços ou valores de índice e podem ser acessados com
instruções de byte (8 bits) ou palavra (word) (16 bits).

Powered by Enderson Neves Cruz 23


Aula 06 – Organização da memória
Mapa de memória

Memory Address Description Access


Endereço
Descrição End: 0FFFFh Interrupt Vector Table
Word/Byte
Inicial Final Start: 0FFE0h
0xFFFE 0xFFFF Vetor de reset
End: 0FFDFh
Flash/ROM
/
W d/B t
Word/Byte
0F800h
0xFFE0 0xFFFD Tabela com os vetores de interrupção Start *:
01100h
0x3900 0xFFDF Memória FLASH
010FFh
Memória RAM (até 8kB) ou FLASH dependendo do modelo do End *:
0x1100 0x38FF
chip (no 149 é FLASH) 0107Fh Information Memory Word/Byte
Start: 01000h (Flash devices only)
0x1000 0x10FF FLASH (256 bytes – Information memory) End: 0FFFh Boot Memory
Word/Byte
Start: 0C00h (Flash devices only)
0x0C00 0x0FFF ROM de Boot (Bootstrap loader)

09FFh
0x0A00 0x0BFF Área não implementada End *:
027Fh RAM Word/Byte
Memória RAM( até 2 kB). Nos chips com mais de 2 kB de Start: 0200h
0x0200 0x09FF
RAM, esta área é espelhada nos endereços 0x1100 a 0x18FF
End: 01FFh
16-bit Peripheral modules Word
0x0100 0x01FF Registradores de controle de periféricos (acesso de 16 bits) Start: 0100h
End: 00FFh
0x0010 0x00FF Registradores de controle de periféricos (acesso de 8 bits) 8-bit Peripheral modules Byte
Start: 0010h
SFR – Registradores de funções especiais End: 000Fh
0x0000 0x000F Special Function Registers Byte
(controle de interrupções e ativação dos módulos internos) Start: 0000h

Powered by Enderson Neves Cruz 24


Aula 06 – Organização da memória
ƒ Os registradores de funções especiais (SFRs) estão sempre localizados nos primeiros 16 bytes de memória.

ƒ Os registradores de periféricos de 8 bits e 16 bits possuem regiões distintas e fixas no mapa de memória.

Registros de função especial (SFR) Registradores de controle de periféricos Registradores de controle de


(acesso de 8 bits) (acesso de 8 bits) periféricos (acesso de 16 bits)
Endereços Descrição Endereços Descrição Endereços Descrição

000Fh Not yet difined or implemented 00F0h – 00FFh Reserved 1F0h – 1FFh Reserved

000Eh Not yet difined or implemented 00E0h – 00EFh Reserved 1E0h – 1EFh Reserved

000Dh N t yett difined


Not difi d or implemented
i l t d 00D0h – 00DFh R
Reserved
d 1D0h – 1DFh Reserved

000Ch Not yet difined or implemented’ 00C0h – 00CFh Reserved 1C0h – 1CFh Reserved

000Bh Not yet difined or implemented 00B0h – 00BFh Reserved 1B0h – 1BFh Reserved

000Ah Not yet difined or implemented 00A0h – 00AFh Reserved 1A0h – 1AFh ADC12 control and interrupt

0009h N t yett difined


Not difi d or implemented
i l t d 0090h – 009Fh R
Reserved
d 190h – 19Fh Timer B
Timer_B

0008h Not yet difined or implemented 0080h – 008Fh ADC12 memory control 180h – 18Fh Timer_B

0007h Not yet difined or implemented 0070h – 007Fh USART0, USART1 170h – 17Fh Timer_A

0006h Not yet difined or implemented 0060h – 006Fh Reserved 160h – 16Fh Timer_A

0005h M d l enable
Module bl 2;
2 ME2
ME2.2
2 0050h – 005Fh S t
System clock
l k generator,
t Comparator
C t A 150h – 15Fh ADC12 conversion

0004h Module enable 1; ME1.1 0040h – 004Fh Reserved 140h – 14Fh ADC12 conversion

0003h Interrupt flag reg.2; IFG2.x 0030h – 003Fh Digital I/O port P5 and P6 control 130h – 13Fh Multiplier

0002h Interrupt flag reg.1; IFG1.x 0020h – 002Fh Digital I/O port P1 and P2 control Watchdog Timer, Flash
120h – 12Fh
control
00001h I t
Interrupt
t enable2;
bl 2 IE2.x
IE2 0010h – 001Fh Digital I/O port P3, and P4 control
110h – 11Fh Reserved
0000h Interrupt enable1; IE1.x
100h – 10Fh Reserve

Powered by Enderson Neves Cruz 25


Aula 06 – Organização da memória

ƒ A quantidade de memórias RAM e FLASH implementadas varia conforme o modelo de chip utilizado.

ƒ Cada posição de memória é formada por um byte e a CPU pode endereçar bytes (8 bits) individuais ou words (16
bits) individuais.
– As words (palavras) são alinhadas nos endereços pares, com o byte menos significativo armazenado no
endereço par e o byte mais significativo armazenado no endereço ímpar seguinte.

– Nas operações de byte (8 bits), pode-se acessar endereços pares ou ímpares.

– Nas operações de word (16 bits), somente é possível acessar os endereços pares.

Exemplo: O valor E07Fh está armazenado no endereço 0x0206h e o valor no endereço 3Fh no endereço 0x0209h

Posições de memória (endereços)


0x0206h 0x0207h 0x0208h 0x0209h
7F E0 X 3F
Word Byte

ƒ A área
á d 1024 bytes
de b t ocupando
d os endereços
d 0C00h a 0FFFh é uma área
á d memória
de ó i ROM na quall o programa
BSL (Bootstrap Loader) é implementado. Este programa é responsável pela programação do chip através de uma
interface serial assíncrona.

ƒ pç
Os vetores de interrupção e reset ocupam
p os endereços
ç FFE0h a FFFFh, armazenam o endereço
ç de memória
para onde o programa deve ser desviado na ocorrência do evento relacionado.

Powered by Enderson Neves Cruz 26


Aula 07 – Introdução ao software
Procedimento para criar um programa:
1. Edição (texto)
2. Montagem/compilação (tradutor – gera os opcodes)
3. Link-edição (resolução de endereços)
4. Depuração (Verificação do funcionamento)

Ambiente Integrado de desenvolvimento de software (IDE) – contém os quatro programas em um só ambiente.

Programa é um conjunto de instruções a serem executadas pela CPU na ordem em que foi escrita.
Linguagens de programação:
• Assembly – linguagem de máquina. Própria de cada processador.
• C – linguagem de médio nível

Powered by Enderson Neves Cruz 27


Aula 07 – O conjunto de instruções
ƒ O MSP430 possui um total de 51 instruções
– 27 instruções físicas ou básicas (core instructions);
– 24 instruções emuladas.
emuladas

ƒ As instruções podem acessar a memória tanto no modo byte (8 bits) quanto word (16 bits), otimizando o consumo
de memória e propiciando aumento de performance.

ƒ O conjunto
j t ded instruções
i t õ é ortogonal,
t l ou seja,
j todas
t d as instruções
i t õ podendo
d d ser utilizadas
tili d em todos
t d os modos
d ded
endereçamentos.

ƒ Opcodes são os códigos binários que formam uma instrução, são classificados em 3 categorias
– Instruções de um operando (Single operand);
– Instruções de dois operando (Double operand);
– Instruções de desvio (Program flow control - Jump).

ƒ O tamanho de uma instrução varia entre uma e três words, com o byte menos significativo alinhado a esquerda. O
f
formato
t típico
tí i de
d uma instrução
i t ã de d 3 words
d é:
é

Endereço Conteúdo
X LSB do opcode

X+1 MSB do
d opcode
d

X+2 LSB do operando 1

X+3 MSB do operando 1

X+4 LSB do operando 2


X+5 MSB do operando 2

Powered by Enderson Neves Cruz 28


Aula 07 – O conjunto de instruções

Sintaxe: instrução fonte


fonte, destino
Instrução: abreviatura em ingles da instrução a ser executadada
Fonte: identifica o operando fonte
D ti
Destino: identifica
id tifi o operando d destino
d ti
Exemplo: MOV R4, R5

Esta instrução copia o conteúdo do operando fonte fonte-R4


R4 para o operando destino
destino-R5.
R5. O
conteúdo prévio de R5 é perdido e os dois registradores passam a ter o mesmo conteúdo.

Para especificar operações de 8 bits deve-se inserir obrigatoriamente um sufixo .B na


instrução Para operações de 16 bits (default) pode-se
instrução. pode se ou não inserir o sufixo .W
W
Exemplos: MOV.B R4, R7 ;Operação de 8 bits
MOV.W R9, R11 ;Operação de 16 bits

Powered by Enderson Neves Cruz 29


Aula 07 – O conjunto de instruções
Modos de Endereçamento
Modo de Fonte Destino
Sintaxe Descrição Endereço Observação
endereçamento (As) (Ad)

Modo registrador ● ● Rn O conteúdo do registrador é o operando Registrador Único ciclo

Rn + X aponta para o operando. Processamento de tabelas e


Modo indexado ● ● X(Rn)
X é armazenado na próxima word.
Conteúdo do Registrador + X
matrizes

PC + X aponta para o operando.


Modo simbólico ● ● ADDR
X é armazenado na próxima word.
Contador de programa (PC) + X Facil ler o código

Acessa diretamente qualquer


Modo absoluto ● ● &ADDR A palavra após a instrução contém o endereço absoluto Fornecido diretamente na instrução
posição de memória

Modo registro Acesso a memória utilizando


indireto ● @Rn Rn é usado para apontar para o operando. Conteúdo do Registrador
ponteiros

Modo indireto com Rn é usado p


para apontar
p p
para o operando.
p Processamento de tabelas e
autoincremento ● @R +
@Rn+
Rn é incrementado após o uso da instrução.
C t úd d
Conteúdo do R
Registrador
i t d
matrizes

Modo imediato ● #N A palavra após a instrução contém a constante imediata N. Valores sem restrição

Powered by Enderson Neves Cruz 30


Aula 07 – Introdução à programação assembly
Exemplo modo registrador

Exemplo de código assembly – MOV R10, R11


Tamanho do código – uma ou mais words
Operação – move o conteúdo de R10 para R11 e R10 não é alterado.
C
Comentário
tá i - endereçamento
d t válido
álid para fonte
f t e destino.
d ti

Antes Depois

R10 0A023h 0A023h


R11 0FA15h 0A023h
PC PC anterior PC anterior+2

Nota: Dados em registros podem ser acessados usando instruções de byte ou word. Se for usado instruções de byte,
será endereçado o byte baixo e o byte alto no destina é zerado.

Powered by Enderson Neves Cruz 31


Aula 07 – Introdução à programação assembly
Exemplo modo indexado

Exemplo de código assembly – MOV 2(R5),6(R6)


Tamanho de código - duas ou três words
Operação - move o conteúdo fonte endereçado por R5+2 para o endereço de destino R6+6. Os registros fontes e
destino R5 e R6 não são alterados.
Comentário - endereçamento válido para fonte e destino.

Powered by Enderson Neves Cruz 32


Aula 07 – Introdução à programação assembly
Exemplo modo simbólico
Exemplo de código assembly - MOV EDE, TONI
Conteúdo da ROM – MOV X(PC), Y(PC)
X = EDE – PC
Y = TONI – PC
Tamanho do código – duas ou três words
Operação
O ã – Move
M o conteúdo
t úd do
d endereço
d f t EDE (PC+X)
fonte (PC X) para o endereço
d d destino
de d ti TONI (PC+Y).
(PC Y) A word d após
ó
a instrução contém as diferenças entre PC e os endereços fonte e destino. O montador calcula e insere os
descolamentos X e Y automaticamente.
Comentário – endereçamento válido para a fonte e destino

Powered by Enderson Neves Cruz 33


Aula 07 – Introdução à programação assembly
Exemplo modo absoluto
Exemplo de código assembly – MOV &EDE, &TONI
Conteúdo da ROM – MOV (EDE), (TONI)
Tamanho do código – duas ou três words
Operação – move o conteúdo do endereço fonte EDE para o endereço de destino TONI. As words após a instrução
contém os endereços absolutos da fonte e do destino.
Comentário
Co e tá o – e
endereçamento
de eça e to válido
á do pa
para
a fonte
o te e dest
destino.
o

Powered by Enderson Neves Cruz 34


Aula 07 – Introdução à programação assembly
Exemplo modo indireto

Exemplo de código assembly – MOV.B


MOV B @R10,
@R10 0(R11)
Tamanho de código – uma ou duas words
Operação – move o conteúdo do endereço fonte apontado por R10 para o endereço de destino apontado por 0 +
R11. Os registros não são modificados.
Comentário - endereçamento válido somente para o operando fonte.

Powered by Enderson Neves Cruz 35


Aula 07 – Introdução à programação assembly
Exemplo modo indireto com autoincremento

Exemplo de código assembly – MOV @R10+,


@R10+ 0(R11)
Tamanho do código – uma ou duas words
Operação – move o conteúdo do endereço fonte apontado por R10 para o endereço de destino apontado por 0 + R11.
O registro R10 é incrementado de 1 para uma operação de byte e de 2 para uma operação de word após a busca.
A i R10 aponta
Assim t para o próximo
ó i endereço
d automaticamente.
t ti t Isto
I t é usuall para processamento
t de
d tabelas.
t b l
Comentário – endereçamento válido somente para operando fonte.

Powered by Enderson Neves Cruz 36


Aula 07 – Introdução à programação assembly
Exemplo modo imediato

Exemplo de código assembly - MOV #45,


#45 TONI
Tamanho do código - duas ou três words.
Operação – move a constante imediata 45 que está contida na palavra após a instrução, para o endereço de destino
TONI.
Comentário - endereçamento válido somente para operando fonte.

Powered by Enderson Neves Cruz 37


Aula 07 – O conjunto de instruções
Instruções Físicas e Emuladas

ƒ O MSP430 possui um conjunto de instruções muito reduzido, são apenas 27 instruções diferentes reconhecíveis
pela CPU, são chamadas instruções físicas ou básicas (core instructions) .
ƒ Um pequeno número de instruções implica em um menor quantidade bits para formar o opcode, reduzindo a
quantidade de memória para a armazenar uma instrução.
instrução
ƒ Existem 24 instruções que são emuladas pelo MSP430, formadas a partir de implementações do conjunto de
instruções físicas juntamente com as implementações de registro do PC, SP, SR e o gerador de constantes.
– Sem ônus de performance ou tamanho de código
– Não possuem opcodes próprios mas possuem mnemônicos próprios
– Facilita a legibilidade do código

Powered by Enderson Neves Cruz 38


Aula 07 – O conjunto de instruções
Montagem do código objeto - Instruções de um operando
ƒ Tamanho: uma ou duas words
– Word 1: especifica o opcode e eventualmente o registrador fonte/destino (no caso de instruções com o
t
tamanho
h de
d 1 word);
d)
– Word 2: especifica a posição de memória quando a fonte/destino é uma posição de memória.

Bit Descrição

Opcode Código binário que especifica a instrução desejada

Bit especificador do formato de acesso da instrução:


B/W 0 - acesso de 16 bits
1 - acesso de 8 bits

Bit especificador do formato de endereçamento da fonte ou destino da operação (modo de endereçamento):


00 - destino/fonte é o registrador especificado por D/S-Reg
01 - destino/fonte é o endereço especificado pela word seguinte :
- se D/S-Reg for R0, endereçamento simbólico
Ad - se D/S-Reg for R2, endereçamento absoluto
- se D/S-Reg for R4-R15, endereçamento indexado
10 - destino/fonte
d ti /f t é o endereço
d apontado
t d pelol registrador
i t d especificado
ifi d por D/S
D/S-Reg
R
11 – se D/S-Reg for R4-R15, o destino/fonte é o endereço apontado pelo registrador especificado por D/S-Reg que é incrementado após
operação. Se D/S-Reg for R0, a fonte é o valor imediato apresentado na próxima word.

D/S-Reg Bits que especificam qual dos 16 registradores da CPU será utilizado como fonte e/ou destino da operação

Powered by Enderson Neves Cruz 39


Aula 07 – O conjunto de instruções
Montagem do código objeto – Instruções de dois operandos
ƒ Possui dois operandos distintos chamados genericamente fonte e destino.
ƒ Tamanho: uma ou três words
– Word 1: caso ambos os operandos forem registradores da CPU;
– Word 2: caso um dos operandos for um registrador da CPU, o outro operando será um endereço ou
constante imediata.
– Word 3: caso os operandos forem endereços de memória,
memória ou um deles for uma constante imediata.
imediata

Bit Descrição

Opcode Código binário que especifica a instrução desejada

S-Reg Bits que especificam qual dos 16 registradores da CPU será utilizado como fonte (source) da operação

Bit especificador do formato de endereçamento do destino da operação (modo de endereçamento do destino):


0 – (modo registrador) O destino é um registrador da CPU
Ad
1 – (modo simbólico, absoluto ou indexado) O destino é um endereço de memória especificado pela terceira word: se D-Reg =R0 modo
simbólico, =R2 absoluto e =R4-R15 indexado.

Bit especificador do formato de acesso da instrução:


B/W 0 - acesso de 16 bits
1 - acesso de 8 bits

Bit especificador do formato de endereçamento da fonte da operação (modo de endereçamento da fonte):


00 - (modo registrador) A fonte é o registrador especificado por S-Reg
01 - (modo simbólico, absoluto ou indexado) O endereço da fonte é especificado pela word seguinte:
As - se S-Reg for R0, endereçamento simbólico, R2 endereçamento absoluto e R4-R15, endereçamento indexado
10 - (modo registro indireto) O endereço da fonte é apontado pelo registrador especificado por S-Reg
11 – ((modo
odo indireto
d eto co
com auto
autoincremento ed ato) se S
c e e to ou imediato) S-Reg
eg for
o R4-R15,
5, o destino/fonte
dest o/ o te é o e
endereço
de eço apo
apontado
tado pe
pelo
o registrador
eg st ado
especificado, que é incrementado após operação. Se S-Reg for R0, a fonte é o valor imediato apresentado na próxima word.

D-Reg Bits que especificam qual dos 16 registradores da CPU será utilizado como destino (destine) da operação

Powered by Enderson Neves Cruz 40


Aula 07 – O conjunto de instruções
Montagem do código objeto – Instruções de dois operandos

Exemplos:

1) MOV R5, R9

2) MOV.B R7, 0(R4)

3) MOV 2(R5), 7(R8)

4) MOV.B @R8, 3(R4)

5) MOV.B #100, 0(R11)

Powered by Enderson Neves Cruz 41


Aula 07 – O conjunto de instruções
Montagem do código objeto – Instruções de desvio
ƒ Instruções utilizadas para provocar um desvio relativo no programa.
ƒ O desvio ou salto relativo é realizado somando um valor de deslocamento sinalizado ao contador de programa PC.
ƒ O valor do deslocamento pode variar de -512 a +511 words
– O deslocamento é feito de 16 em 16 bits (2 em 2 bytes), assim o valor de um deslocamento de +20 implica na
soma do PC com o valor de 40.
– O valor do PC após uma instrução de salto é dado pela expressão:

PCNEW = PCOLD + 2 + PCOFFSET * 2

Bit Descrição

Opcode Código binário que especifica a instrução desejada, neste caso, o código é sempre 001.

Código de 3 bits que específica a condição em que se realiza o desvio:


000 - desvia se não igual (diferente)
001 - desvia se igual
010 - desvia se o carry for igual a zero (C = 0)
C 011 - desvia se o carry for igual a um (C = 1)
100 - desvia se negativo (N = 1)
101 - desvia
d i se maior
i ou igual
i l (N = V ou (N XOR V = 0))
110 - desvia se menor (N ≠ V ou (N XOR V = 1))
111 - desvio incondicional

Deslocamento, valor sinalizado de dez bits que somado ao conteúdo atual do contador de programa PC especifica o endereço para o qual
PC offset
o programa será desviado

Powered by Enderson Neves Cruz 42


Aula 07 – O conjunto de instruções

Instruções de movimentação e manipulação de dados


ƒ Utilizadas p
para tarefas de carga
g de valores em memória ou em registradores,
g , além de movimentação
ç de dados
entre registradores e/ou posições de memória.

Instruções de movimentação e manipulação de dados


Instrução Descrição
1 MOV Copia dados da fonte para o destino
2 CLR Apaga o conteúdo do destino
3 SWPB Troca os bytes do destino
4 PUSH Amazena um dado na pilha
5 POP Restaura um dado da pilha
6 BIC Apaga um ou mais bits do destino
7 BIS Seta um ou mais bits do destino

Powered by Enderson Neves Cruz 43


Aula 07 – O conjunto de instruções
Instruções lógicas e aritméticas
ƒ Utilizadas para realizar operações matemáticas e lógicas, incluindo as instruções de incremento e decremento.

Instruções Aritméticas e Lógicas Instruções Aritméticas e Lógicas


Instrução Descrição Instrução Descrição
8 ADD Adi ã
Adição 18 DEC D
Decremento
t
9 ADDC Adição com transporte 19 DECD Decremento de dois
10 ADC Adição do transporte 20 RLA Rotação aritmética à esquerda (multiplicação por 2)
11 DADD Adição decimal 21 RRA Rotação aritmética à direita (divisão por 2)
12 DADC Adi ã d
Adição decimal
i l com ttransporte
t 22 SXT E t
Extensão
ã ddo sinal
i l
13 SUB Subtração 23 AND Operação lógica E
14 SUBC Subtração com empréstimo 24 XOR Operação lógica Ou Exclusivo
15 SBC Subtração do bit de empréstimo 25 INV Inverte os bits (Operação lógica NOT)
16 INC Incremento 26 RLC Rotação circular à esquerda através do carry bit
17 INCD Incremento em dois 27 RRC Rotação circular à direita através do carry bit

Powered by Enderson Neves Cruz 44


Aula 07 – O conjunto de instruções
Instruções de teste e desvio
ƒ Utilizadas para testes condicionais e desvios do fluxo do programa (desvios relativos, absolutos e chamadas de
sub-rotina)

Instruções de teste e desvio


Instrução Descrição
28 BIT Teste de bits
29 CMP Comparação
30 TST Testa se igual a zero
31 BR Desvio absoluto incondicional longo
32 JMP Desvio incondicional
33 JEQ/JZ Desvia se igual a zero
34 JNE/JNZ Desvia se diferente de zero
35 JC/JHS Desvia se C = 1 ou se maior ou igual
36 JNC/JLO Desvia se C = 0 ou se menor
37 JGE Desvia se maior/igual
38 JL Desvia se menor
39 JN
J Desvia se negativo
40 CALL Chamada de sub-rotina
41 RET Retorno de sub-rotina
42 RETI Retorno de interrupção

Powered by Enderson Neves Cruz 45


Aula 07 – O conjunto de instruções
Instruções de controle da CPU
ƒ Utilizadas para controle do estado da CPU (especialmente flags do processador)

Instruções de controle da CPU


Instrução Descrição
43 CLRC Apaga bit C
44 CLRN Apaga bit N
45 CLRZ Apaga bit Z
46 SETC Seta bit C
47 SETN Seta bit N
48 SETZ Seta bit Z
49 DINT Desabilita interrupções
50 EINT Habilita interrupções
51 NOP Nenhuma operação

Powered by Enderson Neves Cruz 46


Aula 07 – O conjunto de instruções
Ciclos de clock e tamanho da instrução

ƒ O período de execução de uma instrução é medido em ciclos do clock principal do sistema (MCLK).
ƒ Uma instrução pode levar de um a seis ciclos de clock para ser executada.
ƒ O tempo exato depende do número, do tipo de operando presente e do modo de endereçamento utilizado, sendo
classificados em 4 formatos de instruções:
ç
– Instruções Interrupção e Reset
– Formato III Instruções de desvio do tipo JUMP (ocupam somente uma word de memória) necessitam sempre
de dois ciclos de clock para sua execução, independente de ocorrer ou não o desvio.
– Formato II Instruções com um operando
– Formato I Instruções com dois operando
ƒ O User’s Guide mostra tabelas que explicam como calcular os ciclos e o tamanho para cada formato.
ƒ Deve-se usar o programa simulador onde há uma janela para indicação do numero de ciclos de clock gastos na
execução de cada instrução.

Powered by Enderson Neves Cruz 47

Você também pode gostar