Sistemas Embarcados - Microcontroladores

Propaganda
Sistemas
Embarcados:
Microcontroladores
Prof. Protásio
Laboratório de Microengenharia/DEE/CEAR/UFPB
Fundamentos de microcontroladores
V1max
1
▪ Bit (Binary digit)
V1min
▪ Zero lógico (Ø) e Um lógico (1)  0V e 5V ou 3,3V
Ø
▪ Byte
▪ Conjunto de 8 bits que representa valores entre
00H (=010) à FFH (=25510)
▪ Registrador
▪ Conjunto de células de memória (geralmente, flip-flop
do tipo D) interligados a fim de formar um só conjunto
de dados
FF
D
Q
D0
D1
D2
D3
D4
D5
D6
D7
CK
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
2
V0max
0V
Fundamentos de microcontroladores
▪ Instrução
▪ Define uma única ação (tarefa) que a UCP pode
executar por vez
▪ Exemplos de tarefa
▪ Leitura e escrita em registradores
▪ MOV A, R0
▪ Mover o conteúdo do registrador R0 para o Acumulador A
▪ MOV R1, A
▪ Mover o conteúdo do acumulador para R1
▪ OBS: o registrador acumulador (A) é o que recebe o resultado da operação da ULA
R/M: Registrador/Memória
A: Acumulador
R/M
R/M
R/M
A
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
Datapath 1
A
Datapath 2
3
Fundamentos de microcontroladores
▪ Instrução
▪ Define uma única ação (tarefa) que a UCP pode
executar por vez
▪ Exemplos de tarefa
▪ Leitura e escrita em registradores
▪ MOV A, R0
▪ Mover o conteúdo do registrador R0 para o Acumulador A
▪ O registrador acumulador é o que recebe o resultado da operação da ULA
▪ MOV R1, A
▪ Mover o conteúdo do acumulador para R1
▪ Leitura e escrita em uma posição da memória
▪ Operação lógica ou aritmética
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
4
Fundamentos de microcontroladores
▪ Tamanho de instrução em bytes
▪ Instruções de 1 byte
▪ Na memória de programa (code memory ou program memory) a
instrução ocupa comente 1 espaço de memória
▪ Exemplo:
▪ MOV A, R0
▪ Opcode: E8H
Memória
:
PC
E8H
Program Counter
:
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
5
Fundamentos de microcontroladores
▪ Tamanho de instrução em bytes
▪ Instruções de 2 bytes
▪ Exemplo
▪ MOV A,#25H
▪ Move o valor imediato 25h para o acumulador
▪ Opcode: 74H
Memória
:
PC
74H
25H
2 bytes
:
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
6
Fundamentos de microcontroladores
▪ CPU
▪ Unidade central de processamento
▪ Registradores (REGs)
▪ Unidade de Controle(UC)
▪ Unidade de lógica e aritmética (ULA)
A
R0
R1
:
CPU
Banco de
Registradores
R7
ULA
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
UC
7
Fundamentos de microcontroladores
▪ ULA
▪ Realiza as operações lógicas e aritméticas.
▪ Por exemplo, soma, subtração, multiplicação, divisão, operações
lógicas AND, OR, XOR, NOT, deslocamento de bits à direita e
esquerda, incremento e decremento, comparações
▪ A ULA seta os flags de sinalização de acordo com o
resultado da última operação no registrador de flag
Registrador de flag
A
R0
R1
:
CY AC
OV
P
R7
CY: carry flag
AC: auxiliar carry
OV: overflow flag
P: parity flag
Overflow. Ocorre quando o
resultado de uma operação
aritmética é maior que 255 e assim
não pode ser armazenado em um
só registrador.
ULA
Parity bit. Se o valor armazenado
no acumulador for par então P =
1, caso contrário P = 0.
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
8
Fundamentos de microcontroladores
▪ Unidade de Controle (UC)
▪ É a unidade que executa as ações da UCP: busca
(fetch), decodificação e execução de instruções.
▪ Busca  Buscar a instrução na memória apontada pelo PC
▪ Decodificação  Identificação da instrução
▪ Execução  Execução da instrução
▪ A UC é a unidade mais complexa da CPU que controla
a ação da ULA e realiza a movimentação de dados e
instruções de e para a CPU através de sinais de
controle de microoperações internas da CPU de
acordo com o clock.
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
9
Fundamentos de microcontroladores
▪ Unidade de Controle (UC)
▪ A UC contem entre outros dispositivos:
▪ Decodificador de instruções
▪ Dispositivo utilizado para identificar as operações a serem realizadas
relacionadas à instrução a ser executada;
▪ Registrador de instruções (RI)
▪ Regitrador que armazena a instrução a ser executada;
▪ ROM de microprogramação
▪ Memória não volátil que armazena as microinstrução (sinalização das
microoperações internas) necessários para a execução de cada
instrução da CPU
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
10
Fundamentos de microcontroladores
▪ Registradores
▪ Os registradores são espaços de armazenamento interno à
CPU e de mais rápido acesso.
▪ Por isso, são também denominados de registradores internos
▪ São formandos por flip-flops
▪ A CPU pode realizar operações de leitura e escrita
▪ Podem armazenar:
▪ 1 byte (8 bits): dados
▪ 2 bytes (word, 16 bits): dados ou endereços
▪ OBS:
▪ um microcontrolador é denominado de 8 bits, se ele for
capaz de processar informações de 8 em 8 bits por vez
(operações aritméticas e de movimentação de dados),
Analogicamente, para microcontroladores de 16 e 32.
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
11
Fundamentos de microcontroladores
▪ Microcontrolador
DAC
CLOCK
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
COUNTER
PWM
CPU
RAM
ROM
EEPROM
ADC
PORT
▪ Dispositivo que incorpora uma CPU, unidades de
memória e dispositivos periféricos integrados em um
mesmo chip.
12
Fundamentos de microcontroladores
▪ Elementos de microcontroladores
▪ CPU
▪ Em geral, as CPUs de microcontroladores são de baixíssimo
poder de processamento (geralmente, um microprocessador de
um ou mais gerações anteriores).
▪ E de baixo custo.
▪ As CPUs são também denominadas de:
▪ Núcleo de processamento
▪ CPU core
▪ Existem vários microcontroladores baseados em
núcleos:
▪ 8051
▪ ARM
▪ Etc.
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
13
Fundamentos de microcontroladores
▪ Elementos de microcontroladores
▪ Memória: classificação quanto à volatividade
▪ Memória não-voláteis
▪ ROM (Read Only Memory)
▪ PROM/OPT (Programmable ROM/ One Time Programming)
▪ EPROM (Erasable and Programmable ROM)
▪ EEPROM (Electrically Erasable Programmable ROM)
▪ FLASH
▪ Memória voláteis
▪ RAM (Random Access Memory)
▪ Memória: classificação quanto ao uso
▪ Memória de programa ou de código (em geral, não-volátil)
▪ Memória de dados (em geral, volátil)
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
14
Microcontrolador
8051
Microcontrolador 8051
▪ Microcontrolador da família MCS-51 da Intel
▪ Características:
▪ CPU de 8 bits otimizada para aplicações de controle
▪ Capacidade de processamento booleano (tratamento
individual de bit)
▪ 4Kbytes de memória interna de programa
▪ 128 bytes de memória RAM interna de dados
▪ 64K de endereçamento de memória de programa
▪ 64K de endereçamento de memória de dados
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
16
Microcontrolador 8051
▪ Características:
▪ 32 linhas de E/S bidirecionais, endereçadas
individualmente
▪ 2 temporizadores/contadores de 16 bits
▪ 5 entradas de interrupção com dois níveis de prioridade
▪ 3 internas
▪ 2 externas
▪ 1 oscilador interno de clock
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
17
Microcontrolador 8051
▪ Organização interna básica (versão básica)
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
18
Microcontrolador 8051
▪ Pinagem
▪ VCC (40)
▪ Alimentação (+)
▪ GND (20)
▪ Terra (-)
▪ P0.0 a P0.7 (32 - 39)
▪ Porta de E/S bidirecional
de dreno aberto
▪ Por ser dreno aberto, a corrente
máxima depende do resistor de
pull-up.
▪ AD0 a AD7 (32 - 39)
▪ Pinos multiplexados de endereço
e dados para acesso à memória
externa.
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
19
Microcontrolador 8051
▪ P0.0 a P0.7 (32 - 39)
▪ Porta de E/S bidirecional de dreno aberto
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
20
Microcontrolador 8051
▪ Pinagem
▪ P1.0 a P1.7 (1 - 8)
▪ Porta de E/S bidirecional
com pull-ups internos
▪ P2.0 a P2.7 (21 -28)
▪ Porta de E/S bidirecional
com pull-ups internos
▪ A8 a A15 (21 - 28)
▪ Pinos de endereço para acesso
à memória externa.
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
21
Microcontrolador 8051
▪ Pinagem
▪ P3.0 a P3.7 (10 - 17)
▪ Porta de E/S bidirecional
com pull-ups internos
▪ RXD, TXD (10 - 11)
▪ Serial
▪ ~INT0, ~INT1 (12 - 13)
▪ Interrupções externas
▪ T0, T1 (14 - 15)
▪ Entrada externa de clock do
timer0 e do timer1
▪ WR, RD (16 -17)
▪ Sinal de escrita e leitura da
RAM externa
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
22
Microcontrolador 8051
▪ Pinagem
▪ RST (9)
▪ Reset
▪ Um nível lógico 1 por dois ciclos
de máquina reseta o chip
▪ ALE/~PROG (30)
▪ ALE = Address Latch Enable
▪ Indica à memória externa que os
pinos AD0-AD7,A8-A15 têm o
endereço
▪ Instruções de acesso à
memória externa habilitam
esse sinal
▪ ~PROG
▪ Pulso de programação da
EPROM.
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
23
Microcontrolador 8051
▪ Pinagem
▪ ~PSEN (29)
▪ Program Store Enable
▪ Pulso de leitura de memória
externa
▪ ~EA/VPP (31)
▪ EA: External access Enable
▪ Quando ligado à VSS, executa o
programa na memória externa.
▪ VPP
▪ Recebe a tensão de
programação de 21V da EPROM
interna.
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
24
Microcontrolador 8051
▪ Pinagem
▪ XTAL1, XTAL2 (19, 18)
▪ Entrada para o oscilador
interno.
▪ Obs: usando um cristal de
12MHz, o ciclo de clock será de
1/ (12M) = 0,083µs
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
25
Mapa de memória de dados do 8051
FFH
FFH
128 BYTES DE
RAM SUPERIOR
REGISTRADORES
DE FUNÇÕES
ESPECIAIS
(SFR)
Endereçamento
indireto
Endereçamento
direto
80H
7FH
30H
2FH
128 BYTES DE
RAM INFERIOR
Endereçamento
Direto e Indireto
80H
Endereçável por bit
128 BYTES DE
RAM INFERIOR
Endereçamento
Direto e Indireto
20H
1FH
Registradores de
Propósito Geral
00H
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
26
Mapa de memória de dados do 8051
FFH
FFH
128 BYTES DE
RAM SUPERIOR
REGISTRADORES
DE FUNÇÕES
ESPECIAIS
(SFR)
Endereçamento
indireto
Endereçamento
direto
80H
7FH
MOV A,33H
Move o conteúdo do endereço
33h para o acumulador
80H
MOV A, @R0
Move o conteúdo do endereço
contido no registrador R0 para o
acumulador
30H
2FH
Endereçável por bit
20H
1FH
Registradores de
Propósito Geral
00H
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
OBS: endereçamento imediato
MOV A, #2
Move o valor 2 para o acumulador
O valor 2 está
na memória de
programa
27
Mapa de memória de dados do 8051
FFH
FFH
Endereçamento
indireto
Endereçamento
direto
PSW: Program Status Word REGISTER
1F
80H
7FH
BANCO 3
80H
18
17
BANCO 2
10
0F
30H
2FH
BANCO 1
Endereçável por bit
20H
1FH
08
07
BANCO 0
Registradores de
Propósito Geral
00H
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
00
R7
R6
R5
R4
R3
R2
R1
R0
R7
R6
R5
R4
R3
R2
R1
R0
R7
R6
R5
R4
R3
R2
R1
R0
R7
R6
R5
R4
R3
R2
R1
R0
RS0
(PSW.3)
REGISTRADORES
DE FUNÇÕES
ESPECIAIS
(SFR)
RS1
(PSW.4)
128 BYTES DE
RAM SUPERIOR
0
0
0
1
1
0
1
1
28
Mapa de memória de dados do 8051
FFH
FFH
REGISTRADORES
DE FUNÇÕES
ESPECIAIS
(SFR)
128 BYTES DE
RAM SUPERIOR
Endereçamento
indireto
80H
7FH
JNB 0x20.2, Address
Endereçamento
direto
Pula para Address se
o bit 20H.2 for 0
80H
27
30H
2FH
00
01
02
03
04
05
07
Endereçável por Bit
Endereçável por bit
20H
1FH
20
00
01
02
03
04
05
07
Registradores de
Propósito Geral
00H
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
29
REGISTRADORES DE FUNÇÕES
ESPECIAIS (SFR)
▪ ACC
▪ Acumulador. As instruções específicas do
acumulador referem-se a este
simplesmente como A.
▪ MOV A, #100
▪ A = 100 (em decimal)
▪B
▪ Registrador B
▪ Usado em operações de multiplicação e divisão.
▪ Pode ser usado para outras operações.
▪ MUL AB
▪ B:A = B × A
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
FFH
:
F0H
E0H
:
D0H
:
B8H
:
B0H
:
A8H
:
A0H
:
99H
98H
:
90H
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
87H
:
83H
82H
81H
80H
B
ACC
PSW
IP
P3
IE
P2
SBUF
SCON
P1
CKCON
AUXR
TH1
TH0
TL1
TL0
TMOD
TCON
PCON
DPH
DPL
SP
P0
30
REGISTRADORES DE FUNÇÕES
ESPECIAIS (SFR)
▪ PSW (Program Status Word)
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
FFH
:
F0H
E0H
:
D0H
:
B8H
:
B0H
:
A8H
:
A0H
:
99H
98H
:
90H
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
87H
:
83H
82H
81H
80H
B
ACC
PSW
IP
P3
IE
P2
SBUF
SCON
P1
CKCON
AUXR
TH1
TH0
TL1
TL0
TMOD
TCON
PCON
DPH
DPL
SP
P0
31
REGISTRADORES DE FUNÇÕES
ESPECIAIS (SFR)
▪ SP (Stack Pointer)
▪ Registrador de 8 bits que é incrementado
antes de um dado ser armazenado por uma
instrução PUSH ou CALL.
▪ No reset, o valor de SP = 07H
▪ Exemplo
▪ Suponha SP = 07H e A = 33H
▪ PUSH A
▪ Ao fim da execução tem-se:
▪ 33H no endereço 08H da RAM interna e SP = 08H
▪ POP 34H
▪ Ao fim da execução tem-se:
▪ 33H no endereço 34H da RAM interna e SP = 07H
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
FFH
:
F0H
E0H
:
D0H
:
B8H
:
B0H
:
A8H
:
A0H
:
99H
98H
:
90H
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
87H
:
83H
82H
81H
80H
B
ACC
PSW
IP
P3
IE
P2
SBUF
SCON
P1
CKCON
AUXR
TH1
TH0
TL1
TL0
TMOD
TCON
PCON
DPH
DPL
SP
P0
32
REGISTRADORES DE FUNÇÕES
ESPECIAIS (SFR)
▪ DPTR (Data Pointer) : 16 bits
▪ DPH : high byte : 8 bits
▪ DPL : low byte : 8 bits
▪ O registrador DPTR é usado para
endereçamento indireto de:
▪ Operação de leitura na memória de programa
▪ Operação de escrita/leitura na memória de
dados externa
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
FFH
:
F0H
E0H
:
D0H
:
B8H
:
B0H
:
A8H
:
A0H
:
99H
98H
:
90H
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
87H
:
83H
82H
81H
80H
B
ACC
PSW
IP
P3
IE
P2
SBUF
SCON
P1
CKCON
AUXR
TH1
TH0
TL1
TL0
TMOD
TCON
PCON
DPH
DPL
SP
P0
33
REGISTRADORES DE FUNÇÕES
ESPECIAIS (SFR)
▪ DPTR (Data Pointer)
▪ Exemplos:
▪ MOV DPTR,#0123H
▪ Carrega o DPTR com o dado imediato #0123H
▪ INC DPTR
▪ Incrementa DPTR : DPTR = DPTR + 1
▪ MOVX A, @ DPTR
▪ Ler o conteúdo da memória externa de DADOS
apontado pelo endereço em DPTR e salva em A
▪ MOVC A, @A + DPTR
▪ Ler o conteúdo da memória de PROGRAMA
(CODE) apontado por (A + DPTR) e salva em A
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
FFH
:
F0H
E0H
:
D0H
:
B8H
:
B0H
:
A8H
:
A0H
:
99H
98H
:
90H
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
87H
:
83H
82H
81H
80H
B
ACC
PSW
IP
P3
IE
P2
SBUF
SCON
P1
CKCON
AUXR
TH1
TH0
TL1
TL0
TMOD
TCON
PCON
DPH
DPL
SP
P0
34
REGISTRADORES DE FUNÇÕES
ESPECIAIS (SFR)
▪ P0, P1, P2 e P3
▪ Registradores (Latchs) das Portas
bidirecionais Port 0, Port 1, Port 2 e Port 3.
Fonte: http://www.mikroe.com/
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
FFH
:
F0H
E0H
:
D0H
:
B8H
:
B0H
:
A8H
:
A0H
:
99H
98H
:
90H
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
87H
:
83H
82H
81H
80H
B
ACC
PSW
IP
P3
IE
P2
SBUF
SCON
P1
CKCON
AUXR
TH1
TH0
TL1
TL0
TMOD
TCON
PCON
DPH
DPL
SP
P0
35
REGISTRADORES DE FUNÇÕES
ESPECIAIS (SFR)
▪ SBUF (Serial Data Buffer)
▪ De fato, são dois registradores separados:
▪ Um para transmissão (transmit buffer)
▪ Quando um dado é enviado para o SBUF, vai para o
transmit buffer e é transmitido serialmente
▪ Outro para recepção (receive buffer)
▪ Quando um dado é lido do SBUF, este vem do
receive buffer que foi recebido serialmente
▪ SCON (Serial Control Register)
▪ Registrador de controle da comunicação
serial
Fonte: http://www.mikroe.com
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
FFH
:
F0H
E0H
:
D0H
:
B8H
:
B0H
:
A8H
:
A0H
:
99H
98H
:
90H
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
87H
:
83H
82H
81H
80H
B
ACC
PSW
IP
P3
IE
P2
SBUF
SCON
P1
CKCON
AUXR
TH1
TH0
TL1
TL0
TMOD
TCON
PCON
DPH
DPL
SP
P0
36
REGISTRADORES DE FUNÇÕES
ESPECIAIS (SFR)
▪ Registradores de Timer/Counter
▪ Par de registradores do Timer/Counter0
▪ TH0, TL0  (16 bits)
▪ Par de registradores do Timer/Counter1
▪ TH1, TL1  (16 bits)
▪ TCON
▪ Controle de
Timer/Counter
▪ TMOD
▪ Modo de operação
de Timer/Counter
Fonte: http://www.mikroe.com
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
FFH
:
F0H
E0H
:
D0H
:
B8H
:
B0H
:
A8H
:
A0H
:
99H
98H
:
90H
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
87H
:
83H
82H
81H
80H
B
ACC
PSW
IP
P3
IE
P2
SBUF
SCON
P1
CKCON
AUXR
TH1
TH0
TL1
TL0
TMOD
TCON
PCON
DPH
DPL
SP
P0
37
REGISTRADORES DE FUNÇÕES
ESPECIAIS (SFR)
▪ IE
▪ Habilitação de interrupção
▪ IP
▪ Prioridade de interrupção
▪ PCON
▪ Power Control
▪ Idle ou power down
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
FFH
:
F0H
E0H
:
D0H
:
B8H
:
B0H
:
A8H
:
A0H
:
99H
98H
:
90H
:
:
8DH
8CH
8BH
8AH
89H
88H
87H
:
83H
82H
81H
80H
B
ACC
PSW
IP
P3
IE
P2
SBUF
SCON
P1
TH1
TH0
TL1
TL0
TMOD
TCON
PCON
DPH
DPL
SP
P0
38
Mapa de memória de programa do 8051
0xFFFF
0xFFFF
ROM
Externa
(até 64K)
EA = 1
EA = 0
ROM
Externa
(até 64K)
0x1000
0x1000
0x0FFF
0x0FFF
ROM
embarcada
(4K)
0x0000
0x0000
EA
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
39
Mapa de memória de programa do 8051
▪ Espaços reservados na memória de programa
0xFFFF
:
Porta Serial
Timer 1
Interrupções
Int. Ext. 1
Timer 0
Int. Ext. 0
Reset (PC)
ROM
(4K)
0x0023
0x001B
0x0013
0x000B
8 bytes
0x0003
0x0000
3 bytes
PC = Contador de Programa
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
40
Expansão de Memória do 8051
Fonte: http://www.mikroe.com
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
41
Ciclo de Instrução
do 8051
▪ Um ciclo de instrução
consiste de 6 estados
S1, S2, S3, S4, S5, S6
▪ Cada estado é dividido em
duas fases:
▪ P1: 1º ciclo de clock
▪ P2: 2º ciclo de clock
▪ Dessa forma, um ciclo de
instrução consiste de 12
ciclos de clock.
▪ De S1P1  S6P2
▪ Com um cristal de 12MHz,
então o ciclo de instrução é
igual a (1/12M)*12 = 1µs
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
42
Programação
Assembly
8051
Programação Assembly
▪ Ferramentas de simulação
▪ MCU 8051 IDE v1.4.7
▪ An open source IDE for MCS-51 based microcontrollers for
POSIX Systems, this software is licenced under the GNU GPL v2
licence.
▪ Download at http://mcu8051ide.sourceforge.net
▪ Proteus 8.0
▪ Ferramenta para o design de projetos eletrônicos baseado em
SPICE.
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
44
MCU 8051 IDE
▪ Execute o MCU 8051 IDE
▪ Criação de Projeto
▪ Project -> New
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
45
MCU 8051 IDE
▪ Execute o MCU 8051 IDE
▪ Criação de Projeto
▪ Project -> New
▪ Digite um nome para o projeto
▪ Indique a pasta que será salvo o
projeto
▪ Defina o processador
▪ Finalize
▪ OBS:
▪ Em “Select MCU”, pode-se obter
informações gerais sobre a CPU
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
46
MCU 8051 IDE
Área de edição de código
Simulador
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
47
MCU 8051 IDE
▪ Na área de edição de código, insira o seguinte código:
;****************************************
;*** PROGRAMA PISCA LED ******
;****************************************
INICIO:
ORG
LJMP
0000H
INICIO
ORG
CPL
MOV
DJNZ
0030H
P2.0
R0,#50
R0,$
SJMP
INICIO
END
; Diretiva que informa ao montador o endereço da próxima instrução
; Pula para o endereço (rótulo) "INICIO"
; Complementa o estado do bit 0 da porta P2
; Move o valor 50 em decimal para o registrador R0
; Decrementa o valor em R0 e pula para "$"(mesmo endereço) se for
; diferente de zero
; Pula para o endereço "INICIO"
; Diretiva que informa ao montador o FIM DO PROGRAMA
▪ Após, salve o código
▪ File  Save
▪ Monte o código
▪ Tools  compile ou F11
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
48
MCU 8051 IDE
O arquivo .hex é o que de fato
deve ser transferido ao
microcontrolador
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
49
MCU 8051 IDE – Iniciando a simulação
▪ Simulator  Start/Shutdown ou F2
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
A linha verde indica
“onde” está a simulação
50
MCU 8051 IDE – Simulação passo-a-passo
▪ Simulator  Step ou F7
▪ Executa a instrução corrente e pula para próxima
instrução
▪ Abaixo ver-se que a instrução LJMP INICIO foi executada
▪ Ou seja, foi realizado o pulo para o endereço INICIO
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
51
MCU 8051 IDE – Simulação passo-a-passo
▪ Próximo F7
▪ Executa CPL P2.0
▪ Observe que o valor de P2 muda
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
52
MCU 8051 IDE – Simulação passo-a-passo
▪ Próximo F7
▪ Executa MOV
R0,#50
▪ Observe que a RAM de Dados é modificada
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
53
MCU 8051 IDE – Simulação passo-a-passo
▪ Próximo F7
▪ Executa DJNZ
R0,$
▪ Observe que o valor em R0 é decrementado
▪ Observe que o “ponteiro” (linha verde) continua
no mesmo lugar.
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
54
MCU 8051 IDE – Simulação passo-a-passo
▪ Próximos 50 clicks em F7
▪ Executa a instrução DJNZ
R0,$
▪ Loop
50x
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
55
MCU 8051 IDE – Simulação passo-a-passo
▪ Próximo F7
▪ Executa JMP
INICIO
▪ Volta ao endereço INICIO
▪ Próximo F7
▪ Executa CPL
P2.0
▪ E continua o laço INFINITO
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
56
MCU 8051 IDE
▪ Programa: a cada 50 interações, o estado do bit
0 da porta 2 é modificado
▪ Se um LED for ligado a este pino, então este piscará
▪ Questão?
▪ Qual a frequência em que o LED piscará?
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
57
Cálculo da execução do programa
▪ Considerando um cristal de 12MHz
▪ Período de clock (Tc) = 83,3 ns  1/12MHz
▪ Ciclo de Instrução (Ti) = 1 µs  83,3 ns * 12
Instrução
Número de Ciclos de
Instrução por instrução
Número de Ciclos de
Instrução por loop
CPL P2.0
1
1
MOV R0, #50
1
1
DJNZ R0,$
2
2*50
SJMP INICIO
2
2
▪ Tempo de execução do loop (T L) = (1+1+2*50+2)* 1 µs = 104 µs
▪ Assim, o LED ficará ON por 104 µs e OFF por 104 µs
▪ Frequência de Oscilação do LED = 1/(2*T L) ≈ 4,8 kHz
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
58
Cálculo da execução do programa
▪ Qual a frequência caso o valor de inicial de R0
seja 250?
▪ Qual a frequência do LED caso o programa seja
modificado para o abaixo:
INICIO:
LOOP:
ORG
LJMP
0000H
INICIO
; Diretiva que informa ao montador o endereço da próxima instrução
; Pula para o endereço (rótulo) "INICIO"
ORG
CPL
MOV
MOV
DJNZ
DJNZ
SJMP
0030H
P2.0
R0,#250
R1,#250
R0,$
R1,LOOP
INICIO
; Complementa o estado do bit 0 da porta P2
; Move o valor 250 em decimal para o registrador R0
; Move o valor 250 em decimal para o registrador R1
; Decrementa o valor em R0 e pula para LOOP se for diferente de zero
; Decrementa o valor em R1 e pula para LOOP se for diferente de zero
; Pula para o endereço "INICIO"
END
; Diretiva que informa ao montador o FIM DO PROGRAMA
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
59
Inserção de breakpoints
▪ Compile o programa anterior e execute-o passo
a passo (???).
▪ Para executar um trecho de programa de uma
vez, pode-se inserir breakpoint.
▪ Click acima da numeração da linha desejada para
inserção de um breakpoint
▪ Para executar até o breakpoint
▪ Simulator  Run ou F9
▪ Observe o tempo de execução
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
60
Arquivo de listagem
▪ Contem informações sobre o código montado e
código montado.
▪ File  Open
▪ Filter = Code listing (*.lst)
▪ PISCA_LED.lst
Código de Máquina
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
61
Arquivo *.hex
▪ Contém o código de máquina que será gravado
no microcontrolador
▪ File  Open
▪ Filter = All files (*)
▪ PISCA_LED.hex
▪ Arquivo PISCA_LED.hex
:03000000020030CB
:0C003000B2A078FA79FAD8FED9FC80F46E
:00000001FF
Start code:
character em ASCII “:”
Byte count: Número de bytes do código
Address:
Endereço inicial da sequência de bytes de código
Record type: Valor entre 00 e 05 que especifica o tipo de campo de dado
Data:
Sequência de bytes de código
Checksum:
Byte de detecção de erro
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
Exemplos
- 00 indica que campo de dados (instruções)
- 01 indica fim de arquivo. Em geral, o
endereço especificado é 0000
62
Simulação no Proteus
▪ Monte o circuito abaixo no Proteus e rode o
código visto
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
63
Exemplos de circuitos com o 8051
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
64
Exemplos de circuitos com o 8051
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
65
Tarefas
▪ Utilizando o MCU 8051 IDE e/ou o Proteus,
monte os seguintes circuitos:
▪ Contador de eventos (use uma chave para emular o
evento) em que o número de evento em binário
apareça em 8 LED.
▪ Contador de eventos (use uma chave para emular o
evento) em que o número de evento em decimal
apareça em 1 display de 7 segmentos.
▪ Cronômetro com mostrador de minutos e segundos.
▪ Sistema de verificação de senha via teclado numérico
(keypad) 9x9.
▪ Se senha ok, LED on.
▪ Se senha incorreta, LED off e ALARME.
Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB
66
Download