Sequência de instruções que
antecedem o código de máquina
Uma instrução é um mnemônico
Cada instrução tem sua quantidade de
argumentos definidas
Label
Agrupamento de instruções
Tem um nome para ser
identificado como um bloco
Está associado a um endereço de memória
Cada processador tem seu código assembly,
porque cada processador tem suas
instruções
Deve saber-se o aparelho em que está programando, para saber os
limites de memória e processamento que ele possui
Atmega 328p(Microcontrolador)
Trabalhado em aula
Memória Flash(Programa)
Guarda o código de máquina
Memória que não será
apagada, ao menos que seja
sobrescrita
Trabalha com 16
bits
Denominado Bus Program
Processo de leitura dos dados
PC é iniciado com 0, ou
seja inicia na linha 0
A instrução contida na linha Reg.
de Instrução recebe a mesma
Decoder recebe o valor geralmente em
Hexadecimal da instrução contida naquela
linha, e decodifica para binário para que possa
ser lida pelo sistema
O valor em binário enfim
decodificado, vai diretamente ao Bus
Control para ser distribuído
De acordo com a instrução, o valor
poderá ser levado a alguma parte da
RAM, e posteriormente ser utilizado
pela ULA, ou só ficar guardado na RAM
Após a última instrução, dependendo,
algum bit do SREG pode ser alterado
PC é incrementado(PC = PC + 1), ou seja,
PC vai para a próxima linha, e então o ciclo se repete
Memória RAM(Volátil)
Registradores
Armazenam valores
para uma posterior
utilização
Registradores de I/O
PORTx
Defini se um pino está
ligado(1), ou desligado(0)
Pull-up
Evita que o pino fique flutuando
Valor lógico de ligado(1 no PORTx)
em uma entrada(0 no DDRx)
Quando se define um pino como entrada(0),
e seu status como ligado(1 no PORTx), o
mesmo está habilitado com pull-up
Ao colocar um pino de saída como ligado(1 no PORTx),
enviamos um dado lógico a aquele pino
DDRx
Define se um pino é de
entrada(0), ou saída(1)
Pinx
Faz leitura e armazenamento do nível lógico de cada pino
Armazena o valor dentro de um pino,
quando definido como entrada(0)
É possível escrever valores em
registradores PINx, e o mesmo
afetará o PORTx
Ex: Um pino definido como saída, ao escrever
1(ligado) nessa entrada, o mesmo valor será
atribuído ao PORTx
Registradores
GPR(Registradores de
Proposito Geral)
São registradores numerados do R0 ao R31
R26 e R27 é o registrador X
R28 e R29 é o registrador Y
R30 e R31 é o registrador Z
No total, armazenam cada um, no máximo 16 bits
São memórias de uso mais
rápido da ULA, e de mais fácil
carregamento(prático)
Registrador de Instrução
Armazena a instrução
sendo realizada no
momento
Registrador de Status(SREG)
Registrador que armazena valores de status da
últiam operação(instrução), ou se ela gerou algo
Mais usados: T, Z, N e C
T(Bit Copy Storage), bit 5. Representa Bit de
cópia temporária do registrador
Z(Zero Flag), bit 1. Representa
quando uma operação resulta em 0
N(Negative Flag), bit 2. Representa
quando uma operação resulta em
valor negativo
C(Carry Flag), bit 0. Representa quando em uma
operação resulta em estouro, ou seja, valores
acima de 8 bits, no caso do atmega328p
Ex: Uma soma de 255 + 1, é igual a 256, ou seja, um estouro(carry), pois o valor 256
em decimal ocupa 9 bits, ou seja, maior do que o suportado na memória RAM
Trabalha na
manipulação de 8
bits(0 a 255)
Memória que será
apagada quando o
programa terminar
SRAM
Memória também
de fácil acesso
Está associado somente
a endereços, sem conter
um nome
Periféricos
Portas de
I/O
Possibilita contato com o mundo exterior,
como ligar um LED, ou conectar um botão,
por exemplo.
Possui 3 portas, B; C e
D
EEPROM, Clock, A/D,
Interrupção, Comparador
e SPI
ULA(Unidade lógica e
aritmética)
Uma das principais partes
do Microcontrolador
Faz operações matemáticas e lógicas de
2 conjunto de números por vez,
de no máximo 8 bits cada
Decoder
Decodifica a instrução contida
no Reg. de instrução para ser
utilizada pelo sistema