1. Programação Assembly
8051 – Aula 3
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 1
2. Instrução de acesso à tabela
MOV DPTR , #TABELA
MOVC A , @A + DPTR
TABELA: DB 10,20,30,40,50,60
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 2
3. Interrupções
Quando uma interrupção é aceita, a CPU
guarda na memória de dados o endereço de
ROM que contém a próxima instrução do
programa normal que seria executada e
desloca-se para um novo endereço de memória
de programa específico daquela interrupção,
procurando por instruções da sub-rotina de
interrupção.
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 3
4. Propriedades
• Vetorada ou não vetorada: todas as
interrupções do 8051 são do tipo não
vetorada. Isso significa que ele possui um
endereço fixo de interrupção. Quando o
microcontrolador permite que o dispositivo
que o interrompeu envie o endereço do
desvio é chamada de vetorada.
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 4
5. Propriedades
• Mascaramento: é a propriedade de permitir
ou não que dispositivos internos ou externos
interrompam o microcontrolador. No 8051 as
interrupções são habilitadas por software.
• Prioridade: Define a prioridade de cada
evento de interrupção, para não haver
conflito de disputas de interrupção.
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 5
6. Propriedades
• Tipos de disparo: é propriedade das
interrupções externas. Pode-se programar o
microcontrolador para ser interrompido por
nível(0 ou 1) ou borda(subida ou descida).
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 6
7. Endereços das Interrupções
INTERRUPÇÃO ENDEREÇO
Reset 000H
Externa 0 003H
Timer 0 00BH
Externa 1 0013H
Timer 1 01BH
Serial 023H
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 7
8. Habilitação
REGISTRO IE (Interrupt enable)
EA - - ES ET1 EX1 ET0 EX0
SÍMBOLO FUNÇÃO
EA Todas as interrupções
ES Porta Serial
ET1 Timer 1
EX1 Interrupção externa 1
ET0 Timer 0
EX0 Interrupção externa 0
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 8
9. Prioridade das Interrupções
REGISTRO IP (Interrupt priority)
- - - PS PT1 PX1 PT0 PX0
SÍMBOLO FUNÇÃO
PS Porta Serial
PT1 Timer 1
PX1 Interrupção externa 1
PT0 Timer 0
PX0 Interrupção externa 0
1 -> Alta prioridade / 0 -> Baixa prioridade
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 9
10. Flags
Flag Interrupção
RI E TI Porta Serial
TF1 Timer 1
IE1 Interrupção externa 1
TF0 Timer 0
IE0 Interrupção externa 0
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 10
11. Interrupções externas 0 e 1
São utilizadas quando uma determinada sub-
rotina deve ser executada conforme um sinal
de controle externo, que pode ser uma chave,
um sensor, outro microcontrolador etc.
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 11
12. Interrupções externas 0 e 1
INTERRUPÇÃO BIT DE MODO DE
SINAL APLICADO
EXTERNA PROGRAMAÇÃO DISPARO
IT0 = 1 Borda
0
IT0 = 0 Nível
IT1 = 1 Borda
1
IT0 = 0 Nível
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 12
13. Temporizadores
O 8051 possui dois Temporizadores/Contadores
de 16 bits. Cada Timer é formado por duas
posições de RAM, a parte alta e a parte baixa.
TIMER
TH0 (Parte alta)
0
TL0 (Parte baixa)
TH1 (Parte alta)
1
TL1 (Parte baixa)
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 13
14. Temporizadores
Quando um timer começa a contar o registro é
incrementado a cada contagem. Inicialmente o
registro baixo é incrementado e quando este
estoura, o registro alto é incrementado.
𝑇𝑒𝑚𝑝𝑜 𝑡𝑜𝑡𝑎𝑙 𝑑𝑒 𝑐𝑜𝑛𝑡𝑎𝑔𝑒𝑚 × 𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑖𝑎
𝑁º 𝑑𝑒 𝑝𝑢𝑙𝑠𝑜𝑠 =
12
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 14
15. Contadores
Os registros baixos dos timers são
incrementados a cada transição de nível lógico
baixo ( 1 para 0) do sinal aplicado ao pinos
externo do respectivo timer.
TIMER PORTA
0 P3.4
1 P3.5
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 15
16. TMOD (registro de programação)
• Bits não-endereçáveis.
• Responsável pela programação dos dois
timers.
REGISTRO TMOD (Timer Mode Control)
GATE C/T M1 M0 GATE C/T M1 M0
TIMER 1 TIMER 0
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 16
17. TMOD (registro de programação)
• GATE: quando este bit é setado, o controle
liga/desliga do timer pode ser feito por um
sinal externo ao microcontrolador.
• C/T: quando C/T = 1, o timer funciona como
um contador e os pulsos vêm do pino
externo. Quando C/T = 0, funciona como
temporizador e os pulsos vêm do oscilador
interno.
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 17
18. TMOD (registro de programação)
• M1 E M0: determinam o modo de
funcionamento do timer de acordo com a
tabela abaixo.
M1 M0 Modo de Funcionamento
0 0 0
0 1 1
1 0 2
1 1 3
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 18
19. TMOD (registro de programação)
• Modo 0: Funciona como um contador de 13
bits. O contador é composto por todo o
registro alto (THx) e os 5 bits menos
significativos da parte baixa (TLx). O sinal de
flag será gerado quando o bit mais
significativo do registro alto mudar de 1 para
0. A contagem máxima é até 8192 pulsos.
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 19
20. TMOD (registro de programação)
• Modo 1: Funciona como um contador de 16
bits. A contagem máxima vai até 65535
pulsos.
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 20
21. TMOD (registro de programação)
• Modo 2: funciona como contador de 8 bits
com recarga automática. É composto apenas
pela parte baixa (TLx). A contagem máxima
será até 255. A função da parte alta é
guardar o byte que deverá ser carregado
automaticamente na parte alta.
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 21
22. TMOD (registro de programação)
• Modo 3: este modo só pode ser aplicado ao
timer 0. Neste modo o timer 0 será dividido
em dois timers de 8 bits.
5 de agosto de 2012 Minicurso: Assembly para 8051 GDESTE 22