microprocessadores e microcontroladores parte …jwilson/pdf/micro_parte_2_(8051).pdf · 11 18/04...

147
Universidade Federal de Goiás Escola de Engenharia Elétrica, Mecânica e de Computação 1 Prof. José Wilson Lima Nerys 1 Microprocessadores MICROPROCESSADORES E MICROCONTROLADORES José Wilson Lima Nerys Página: www.emc.ufg/~jwilson Emails: [email protected] e [email protected] Parte 2 Microcontrolador 8051

Upload: dinhdiep

Post on 21-Dec-2018

260 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

1Prof. José Wilson Lima Nerys 1 Microprocessadores

MICROPROCESSADORES E MICROCONTROLADORES

José Wilson Lima Nerys

Página: www.emc.ufg/~jwilsonEmails: [email protected] e [email protected]

Parte 2

Microcontrolador 8051

Page 2: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

2Prof. José Wilson Lima Nerys 2 Microprocessadores

2

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 3: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

3Prof. José Wilson Lima Nerys 3 Microprocessadores

Leitura de Tabela no 8085 x 8051

Mostra valores menores que 50H e valores maiores que 85H

Início

Configurações iniciais:

SP ß 2FH, DPTR ß #Tabela

R0 ß 00H, R7 ß 00H

A ß R7

A ß ((A + DPTR))

A < 50H?

P1 ß A

A > 85H?

Fim

R7 ß R7 + 1

N

S

N

S

A = FFH?S

N

Início

Configurações iniciais:

SP ß 2070H, HL ß 2050H

A ß ((H,L))

A < 50H?

Display ß A

A > 85H?

HL ß HL + 1

L ß A

N

S

N

S

A = 60H?N

S

Fim

Fluxograma

para o 8051

Fluxograma

para o 8085

Page 4: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

4Prof. José Wilson Lima Nerys 4 Microprocessadores

4

Endereço Mnemônico Endereço Dado Endereço Mnemônico

2000H LXI SP, 2070H 2050H 10H 2030H MVI C,50H

2003H LXI H,2050H 2051H 50H 2032H DCR C

2006H MOV A,M 2052H 25H 2033H JNZ 2032H

2007H CPI 50H 2053H 60H 2036H RET

2009H JC 2014H 2054H 65H

200CH CPI 85H 2055H A0H

200EH JC 201CH 2056H 70H

2011H JZ 201CH 2057H 90H

2014H PUSH H 2058H 85H 2069H

2015H CALL MOSTRA 2059H 87H 206AH

2018H CALL ATRASO 205AH 45H 206BH

201BH POP H 205BH 39H 206CH 1BH

201CH INX H 205CH C5H 206DH 20H

201DH MOV A,L 205DH 11H 206EH 55H

201EH CPI 60H 205EH 33H 206FH 20H

2020H JNZ 2006H 205FH D2H 2070H

2023H HLT

Assembly do 8085

Page 5: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

5Prof. José Wilson Lima Nerys 5 Microprocessadores

Rótulo Mnemônico Rótulo Mnemônico Rótulo Dado

0000H LJMP INICIO JC V2 TABELA: 10H

JZ V2 50H

ORG 30H MOSTRA: MOV P1,R0 25H

INICIO: MOV SP,#2FH LCALL ATRASO 60H

MOV DPTR,#TABELA V2: INC R7 65H

MOV R7,#00H SJMP V0 A0H

V0: MOV A,R7 70H

MOVC A,@A+DPTR ATRASO: MOV R1,#200 90H

CJNE A,#0FFH,V1 DJNZ R1,$ 85H

SJMP FIM RET 87H

V1: CLR CY 45H

MOV R0,A 39H

SUBB A,#50H C5H

JC MOSTRA 11H

MOV A,R0 33H

SUBB A,#85H D2H

FFH

Assem

bly

do 8

051

Page 6: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

6Prof. José Wilson Lima Nerys 6 Microprocessadores

6

Page 7: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

7Prof. José Wilson Lima Nerys 7 Microprocessadores

7

Page 8: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

8Prof. José Wilson Lima Nerys 8 Microprocessadores

8

Memória RAM

Page 9: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

9Prof. José Wilson Lima Nerys 9 Microprocessadores

9

Memória RAM

Page 10: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

10Prof. José Wilson Lima Nerys 10 Microprocessadores

10

Memória RAM

Page 11: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

11Prof. José Wilson Lima Nerys 11 Microprocessadores

11

Memória RAM

Page 12: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

12Prof. José Wilson Lima Nerys 12 Microprocessadores

12

MOV R0,#80H

MOV @R0,A

Conteúdo de A é armazenado

na posição 80H da memória

RAM

MOV 80H,A

Conteúdo de A é armazenado

no registrador especial 80H,

que corresponde à Porta P0

Page 13: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

13Prof. José Wilson Lima Nerys 13 Microprocessadores

Registradores

Especiais

Page 14: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

14Prof. José Wilson Lima Nerys 14 Microprocessadores

Registradores Especiais

Page 15: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

15Prof. José Wilson Lima Nerys 15 Microprocessadores

Algumas Instruções do 8051

Instrução Descrição

MOV A,#Dado8 Carrega acumulador com o Dado de 8 bits

MOV Rn,#Dado8 Carrega registrador Rn (n=0 a 7) com o Dado de 8 bits

MOV A,B Copia no registrador A (acumulador) o conteúdo do registrador B

MOV Rn,A Copia no registrador Rn (n = 0 a 7) o conteúdo do acumulador

MOV A,diretoCopia em A o conteúdo do registrador identificado pelo endereço

“direto”

MOV dir1,dir2Copia no registrador identificado pelo endereço “dir1” o conteúdo do

registrador identificado pelo endereço “dir2”

MOV @R0,A Copia o conteúdo de A na posição apontada por R0

MOV DPTR,#dado16 O registrador duplo DPTR recebe um dado de 16 bits

MOVC A,@A+DPTR Carrega acumulador com o conteúdo da posição apontada por A+DPTR

Page 16: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

16Prof. José Wilson Lima Nerys 16 Microprocessadores

Algumas Instruções do 8051

Instrução Descrição

CJNE A,#dado,EnderCompara conteúdo de A com o “dado”; se não forem iguais, desvia para

o endereço “Ender”

CJNE Rn,#dado,EnderCompara conteúdo do registrador Rn (n = 0 a 7) com o “dado”; se não

forem iguais, desvia para o endereço “Ender”

DJNZ Rn,desvioDecrementa o registrador Rn (n = 0 a 7); se o resultado não for zero,

desvia para “desvio”

SJMP ender Desvia para o endereço “ender”. SJMP = Short Jump (2 bytes de código)

LJMP ender Desvia para o endereço “ender”. LJMP = Long Jump (3 bytes de código)

JNZ ender Desvia para o endereço “ender”, se a flag Z = 0

JZ ender Desvia para “ender”, se a flag Z = 1

JNC ender Desvia para “ender”, se a flag CY = 0

JC ender Desvia para “ender”, se a flag CY = 1

Codificação: 80 XX, onde XX = número de bytes (em complemento de 2) a ser adicionado ao endereço

da próxima instrução, para desviar para o endereço “ender”

Page 17: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

17Prof. José Wilson Lima Nerys 17 Microprocessadores

Algumas Instruções do 8051

Instrução Descrição

ADD A,Rn Adiciona o conteúdo de Rn (n = 0 a 7) ao conteúdo do acumulador

ADD A,#dado8 Adiciona o “dado8”, de 8 bits ao conteúdo do acumulador

SUBB A,diretoSubtrai o conteúdo do registrador identificado pelo endereço “direto”, do

conteúdo do acumulador

SUBB A,@R0Subtrai o conteúdo da posição apontada pelo registrador R0 do conteúdo

do acumulador

RL A Rotaciona o conteúdo de A para a esquerda

RR A Rotaciona o conteúdo de A para a direita

DA A Faz o ajuste decimal do conteúdo de A

INC Rn Incrementa em uma unidade o conteúdo do registrador Rn

INC DPTR Incrementa em uma unidade o conteúdo do registrador duplo DPTR

CPL A Complementa o conteúdo do acumulador

Page 18: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

18Prof. José Wilson Lima Nerys 18 Microprocessadores

Algumas Instruções do 8051

Instrução Descrição

MUL AB

Multiplica o conteúdo de A pelo conteúdo de B. O resultado está em B A. O

resultado da multiplicação é um número de 16 bits, por isso precisa de dois

registradores para o resultado.

DIV AB Divide o conteúdo de A pelo conteúdo de B. A recebe o quociente e B o resto.

ANL A,#dado Faz a operação AND, bit a bit, entre o acumulador e o dado de 8 bits

ORL A,#dado Faz a operação OR, bit a bit, entre o acumulador e o dado de 8 bits

SWAP A

Faz a troca dos nibbles do acumulador, ou seja, o nibble mais significativo

passa a ocupar os quatro primeiros bits do acumulador e o nibble menos

significativo passa a ocupar os quatro últimos bits. Por exemplo, se

originalmente, A = 35 H, após a instrução, A = 53 H.

Page 19: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

19Prof. José Wilson Lima Nerys 19 Microprocessadores

Algumas Instruções do 8051

Operações com bits

Instrução Descrição

JB bit,desvio

Desvia para a posição “desvio”, caso o “bit” esteja setado (se bit=1).

Exemplo: Se F0 = 1, então a instrução JB F0,V1 faz o processamento desviar

para a posição “V1”

JNB bit,desvio Desvia para “desvio”, caso o “bit” seja zero (se bit = 0).

SETB bit Faz bit = 1

CLR bit Faz bit = 0

CPL bit Complementa o “bit”. Se bit = 1, então bit torna-se bit=0.

MOV bit,C Copia no “bit” o conteúdo da Flag de Carry.

Page 20: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

20Prof. José Wilson Lima Nerys 20 Microprocessadores

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 21: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

21Prof. José Wilson Lima Nerys 21 Microprocessadores

Contagem crescente

Rótulo Mnemônico Comentário sobre o Efeito da Operação Tempo

ORG 00H A próxima instrução estará no endereço 00h

LJMP INICIO Pula para o endereço indicado com o rótulo ́ inicio´

ORG 30H A próxima instrução estará no endereço 30h

INICIO: MOV A,#00H Carrega acumulador com valor 00h

V1: MOV P1,A Transfere para a porta P1 o conteúdo do acumulador 1 µs

INC A Incrementa em 1 o conteúdo do acumulador. A ß A + 1 1 µs

SJMP V1 Pula para o endereço indicado pelo rótulo ́ V1´ 2 µs

END Instrução obrigatória no fim de todo programa 4 µs

1 ORG 00H

0000 020030 2 LJMP INICIO

3

4 ORG 30H

0030 7400 5 INICIO: MOV A,#00H

0032 F590 6 V1: MOV P1,A

0034 04 7 INC A

0035 80FB 8 SJMP V1

9 END

Codificação:

V1 corresponde ao endereço

0032H = 0037 + FB

(considerando somente o

byte menos significativo)

Endereço

da próxima

instrução

Intervalo entre cada

dois envios para a

Porta P1: 4 µs

Período: 256 x 4 µs =

1024 µs

Page 22: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

22Prof. José Wilson Lima Nerys 22 Microprocessadores

Contagem crescente – Resultado visual (saída do Conversor Digital-Analógico):

Onda Dente de Serra

Rótulo Mnemônico Tempo

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV A,#00H

V1: MOV P1,A 1 µs

INC A 1 µs

SJMP V1 2 µs

END 4 µs

Intervalo entre cada dois envios para a Porta P1: 4 µs

Período calculado: 255 x 4 µs = 1020 µs

Período medido com o Proteus: 1020 µs

Cristal oscilador: 12 MHz

Page 23: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

23Prof. José Wilson Lima Nerys 23 Microprocessadores

23

Rótulo Mnemônico Comentário sobre o Efeito da Operação

ORG 00H A próxima instrução estará no endereço 00h

LJMP INICIO Pula para o endereço indicado com o rótulo ´inicio´

ORG 30H A próxima instrução estará no endereço 30h

INICIO: MOV A,#00H Carrega acumulador com valor 00h

V1: MOV P0,A Transfere para a porta P0 o conteúdo do acumulador

INC A Incrementa o conteúdo do acumulador

CJNE A,#0FFH,V1Compara conteúdo do acumulador com “30h”. Caso não seja

igual (Compare, Jump if Not Equal), desvia para “V1”

V2: MOV P0,A Transfere para a porta P0 o conteúdo do acumulador

DJNZ ACC,V2Decrementa conteúdo do acumulador e vai para “V2” se não

for “zero”

SJMP V1Pula para “V1”. Não precisa usar “LJMP” porque a distância é

curta.

END Instrução obrigatória no fim de todo programa

Contagem crescente e decrescente

Quando A = FFH, vai para a

próxima linha. Acaba o ciclo

crescente e começa o decrescente

Início

A ß 00H

Aß A + 1

A = FFH?

S

N

SN

P0 ß A

P0 ß A

Aß A - 1

A = 00?

Page 24: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

24Prof. José Wilson Lima Nerys 24 Microprocessadores

24

Rótulo Mnemônico Tempo Período

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV A,#00H

V1: MOV P0,A 1 µs

255

x 4

µs

= 1

020 µ

s

INC A 1 µs

CJNE A,#0FFH,V1 2 µs

V2: MOV P0,A 1 µs

255

x 3

µs=

765 µ

s

DJNZ ACC,V22 µs

SJMP V1

END

Contagem crescente e decrescente

Saída do Conversor Digital-Analógico: Onda Triangular

O primeiro semi-período (crescente: 1020 µs,

calculado e 1010 µs medido) é maior que o segundo

(decrescente: 765 µs calculado e 781 µs medido)

porque o número de instruções executadas é diferente

para o primeiro e para o segundo semi-período.

Page 25: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

25Prof. José Wilson Lima Nerys 25 Microprocessadores

25

Rótulo Mnemônico Tempo Período

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV A,#00H

V1: MOV P0,A 1 µs

255

x 4

µs

= 1

020 µ

s

INC A 1 µs

CJNE A,#0FFH,V1 2 µs

V2: MOV P0,A 1 µs

255

x 4

µs

=

1020 µ

s

NOP 1 µs

DJNZ ACC,V22 µs

SJMP V1

END

Contagem crescente e decrescente

Saída do Conversor Digital-Analógico: Onda Triangular

Com a inclusão da instrução NOP, os dois semi-

períodos ficaram com tempos calculados iguais e

tempos medidos muito próximos (1020 µs e 1030 µs)

Instrução NOP (No Operation) usada apenas para

gerar um atraso de 1 µs.

Page 26: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

26Prof. José Wilson Lima Nerys 26 Microprocessadores

Endereço Código Rótulo Mnemônico Comentário sobre o Efeito da Operação Tempo

ORG 00H A próxima instrução estará no endereço 00h

0000H 02 00 30 LJMP INICIO Pula para o endereço indicado com o rótulo ´inicio´

ORG 30H A próxima instrução estará no endereço 30h

0030H B2 90 INICIO: CPL P1.0 Complementa o bit 0 da Porta P1 1 µs

0032H 78 32 MOV R0,#50 Carrega registrador R0 com valor decimal 50 1 µs

0034H D8 FE DJNZ R0,$ Decrementa o conteúdo de R0, até R0 = 0 100 µs

0036H 80 F8 SJMP INICIO Retorna para o início 2 µs

0038H END Instrução obrigatória no fim de todo programa 104 µs

Onda quadrada no pino P1.0

Cristal oscilador: 12 MHz

Tempo calculado para meio período

Tempo medido para meio período com o Proteus: 105,10 µs

Page 27: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

27Prof. José Wilson Lima Nerys 27 Microprocessadores

27

Rótulo Mnemônico

CONTADOR EQU 07H

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV DPTR,#Tabela

MOV CONTADOR,#00h

Leitura de Tabela adaptada para ler 256 valores que, enviados para o Conversor DA,

resulta em uma curva senoidal

Mnemônico Tempo

V1: MOV A,CONTADOR 1 µs

MOVC A,@A+DPTR 2 µs

MOV P0,A 1 µs

INC CONTADOR 1 µs

SJMP V1 2 µs

Tempo entre leituras: 7 µs

Período senoide:

7 µs x 256 = 1792 µs

Como a Tabela de seno tem 256 valores, não há necessidade fazer uma

contagem desses valores, uma vez que o CONTADOR volta ao valor zero após

atingir o valor máximo FFh. Assim, a leitura volta para o início da Tabela após

CONTADOR = FFh.

Período medido: 1,80 ms ≡ 556 Hz

Page 28: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

28Prof. José Wilson Lima Nerys 28 Microprocessadores

28

Parte 1 Parte 2 Parte 3 Parte 4 Parte 5 Parte 6

DB 127 DB 205 DB 250 DB 243 DB 186 DB 104

DB 130 DB 208 DB 251 DB 241 DB 183 DB 101

DB 133 DB 210 DB 252 DB 240 DB 180 DB 98

DB 136 DB 213 DB 252 DB 239 DB 177 DB 95

DB 139 DB 215 DB 253 DB 237 DB 174 DB 91

DB 143 DB 217 DB 253 DB 235 DB 171 DB 88

DB 146 DB 219 DB 253 DB 234 DB 168 DB 86

DB 149 DB 221 DB 254 DB 232 DB 166 DB 83

DB 152 DB 223 DB 254 DB 230 DB 163 DB 80

DB 155 DB 225 DB 254 DB 228 DB 159 DB 77

DB 158 DB 227 DB 254 DB 226 DB 156 DB 74

DB 161 DB 229 DB 254 DB 224 DB 153 DB 71

DB 164 DB 231 DB 254 DB 222 DB 150 DB 68

DB 167 DB 233 DB 254 DB 220 DB 147 DB 66

DB 170 DB 235 DB 253 DB 218 DB 144 DB 63

DB 173 DB 236 DB 253 DB 216 DB 141 DB 60

DB 176 DB 238 DB 252 DB 214 DB 138 DB 58

DB 179 DB 239 DB 252 DB 211 DB 135 DB 55

DB 181 DB 241 DB 251 DB 209 DB 132 DB 52

DB 184 DB 242 DB 251 DB 207 DB 129 DB 50

DB 187 DB 243 DB 250 DB 204 DB 125 DB 47

DB 190 DB 245 DB 249 DB 202 DB 122 DB 45

DB 193 DB 246 DB 248 DB 199 DB 119 DB 43

DB 195 DB 247 DB 247 DB 196 DB 116 DB 40

DB 198 DB 248 DB 246 DB 194 DB 113 DB 38

DB 200 DB 249 DB 245 DB 191 DB 110 DB 36

DB 203 DB 250 DB 244 DB 188 DB 107 DB 34

Tabela

: seno

Page 29: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

29Prof. José Wilson Lima Nerys 29 Microprocessadores

Parte 7 Parte 8 Parte 9 Parte 10 Parte 11 Parte 12

DB 32 DB 7 DB 0 DB 13 DB 44 DB 87

DB 30 DB 6 DB 1 DB 15 DB 46 DB 90

DB 28 DB 5 DB 1 DB 16 DB 49 DB 93

DB 26 DB 4 DB 1 DB 18 DB 51 DB 96

DB 24 DB 3 DB 2 DB 19 DB 54 DB 99

DB 22 DB 3 DB 2 DB 21 DB 56 DB 102

DB 20 DB 2 DB 3 DB 23 DB 59 DB 105

DB 19 DB 2 DB 4 DB 25 DB 61 DB 108

DB 17 DB 1 DB 4 DB 27 DB 64 DB 111

DB 15 DB 1 DB 5 DB 29 DB 67 DB 115

DB 14 DB 0 DB 6 DB 31 DB 70 DB 118

DB 13 DB 0 DB 7 DB 33 DB 73 DB 121

DB 11 DB 0 DB 8 DB 35 DB 75 DB 124

DB 10 DB 0 DB 9 DB 37 DB 78 DB 127

DB 9 DB 0 DB 11 DB 39 DB 81

DB 8 DB 0 DB 12 DB 41 DB 84

Page 30: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

30Prof. José Wilson Lima Nerys 30 Microprocessadores

30

Gerador de Função com valores fixos de frequência para cada onda:

1 – Onda quadrada

2 – Onda dente de serra

3 – Onda triangular

4 – Onda senoidal

CONTADOR EQU 07H

QUAD EQU P2.0 Chave de escolha Onda quadrada

SERRA EQU P2.1 Chave de escolha Dente de serra

TRI EQU P2.2 Chave de escolha Triangular

SENO EQU P2.3 Chave de escolha Senoide

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV DPTR,#Tabela

MOV CONTADOR,#00h

V1: MOV A,#00H

JNB QUAD, QUADRADA Se QUAD = 0 quadrada

JNB SERRA, DENTE_SERRA

JNB TRI, TRIANGULAR

JNB SENO, SENOIDAL Se SENO = 0 Senoidal

SJMP V1

Primeira parte

do programa:

Page 31: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

31Prof. José Wilson Lima Nerys 31 Microprocessadores

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 32: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

32Prof. José Wilson Lima Nerys 32 Microprocessadores

32

Leitura de Tabela com Quantidade de Dados menor que 256

Usando tabela para acionamento de motor de passo

Page 33: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

33Prof. José Wilson Lima Nerys 33 Microprocessadores

33

Rótulo Mnemônico

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV DPTR,#Tabela

V1: MOV R7,#00h

Acionamento de Motor de Passo com Passo

Completo e Meio Passo

Rótulo Mnemônico

V2: MOV A,R7

MOVC A,@A+DPTR

MOV P1,A

LCALL ATRASO

INC R7

CJNE R7,#04H,V2

SJMP V1

Rótulo Tabela

Passo

Completo

Tabela

Meio Passo

Tabela: DB 03H DB 01H

DB 06H DB 03H

DB 0CH DB 02H

DB 09H DB 06H

DB 04H

DB 0CH

DB 08H

DB 09H

END END

Essa tabela, com apenas 4 valores, pode ser usada para o acionamento de um

motor de passo (PASSO COMPLETO). A tabela com 8 valores é para

acionamento do motor de passo com MEIO PASSO. O motor deve estar

conectado, através de um driver, ao nibble inferior da Porta P1.

Offset R7

0

1

2

3

4

5

6

7

8A subrotina de atraso de

tempo não foi incluída

Page 34: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

34Prof. José Wilson Lima Nerys 34 Microprocessadores

Acionamento de Motor de Passo

Driver ULN 2803

Capacidade de corrente: 500 mA

Tensão máxima no pino COM: 50 V

Page 35: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

35Prof. José Wilson Lima Nerys 35 Microprocessadores

Rótulo Mnemônico

CH0 EQU P2.0

CH1 EQU P2.1

CH2 EQU P2.2

CH3 EQU P2.3

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

V1: MOV R7,#00h

Usando Chaves externas para

escolher a configuração do

acionamento

Rótulo Mnemônico

V0: JB CH0,VCH1

MOV DPTR,#Tabela1

SJMP V2

VCH1: JB CH1,VCH2

MOV DPTR,#Tabela2

SJMP V2

VCH2: JB CH2,VCH3

MOV DPTR,#Tabela3

SJMP V2

VCH3: JB CH3,V0

MOV DPTR,#Tabela4

V2: MOV A,R7

MOVC A,@A+DPTR

CJNE A,#0FFH,V4

SJMP V1

V4: MOV P1,A

LCALL ATRASO

INC R7

SJMP V2

CH0 sentido horário com passo completo

CH1 sentido anti-horário com passo completo

CH2 sentido horário com meio passo

CH3 sentido anti-horário com meio passo

Rótulo Mnemônico

ATRASO: MOV R0,#80

V3: MOV R1,#25

DJNZ R1,$

DJNZ R0,V3

RET

Tabela1: DB 03H, 06H, 0CH, 09H, 0FFH

Tabela2: DB 09H, 0CH, 06H, 03H, 0FFH

Tabela3: DB 01H, 03H, 02H, 06H, 04H, 0CH, 08H, 09H, 0FFH

Tabela4: DB 09H, 08H, 0CH, 04H, 06H, 02H, 03H, 01H, 0FFH

Tarefa:

1. Escolher uma das chaves para

Ligar/Desligar

2. Escolher uma das chaves para definir o

sentido horário ou anti-horário

3. Escolher uma das chaves para definir se o

acionamento é com meio passo ou passo

completo

Page 36: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

36Prof. José Wilson Lima Nerys 36 Microprocessadores

Mostra em P1 o Maior valor

de uma Tabela

R0 recebe o maior valor,

antes de mostrar em P1

Início

Configurações iniciais:

SP ß 2FH, DPTR ß #Tabela

R0 ß 00H, R7 ß 00H

A ß R7

A ß ((A + DPTR))

A = FF?

P1 ß R0A >= R0?

Fim

R0 ß A

R7 ß R7 + 1

NS

N

S

Page 37: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

37Prof. José Wilson Lima Nerys 37 Microprocessadores

Rótulo Mnemônico

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV DPTR,#Tabela

MOV R0,#00h

MOV R7,#00H

Rótulo Mnemônico

V1: MOV A,R7

MOVC A,@A+DPTR

CJNE A,#0FFH,SEGUE

MOV P1,R0

SJMP FIM

SEGUE: CLR CY

MOV B,A

SUBB A,R0

JC V2

MOV R0,B

V2: INC R7

SJMP V1

Rótulo Mnemônico

Tabela: DB 0A3H

DB 16H

DB 05H

DB 09H

DB 0A1H

DB 35H

DB 0C5H

DB 72H

DB 40H

DB 0FFH

FIM: END

Offset R7

0

1

2

3

4

5

6

7

8

9

Mostra em P1 o Maior valor de uma Tabela

Page 38: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

38Prof. José Wilson Lima Nerys 38 Microprocessadores

Rótulo Mnemônico

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV A,#00H

V1: MOV P1,A

ADD A,#01H

DA A

CJNE A,#60H,V1

SJMP INICIO

END

Contagem decimal crescente de 0 a 59 e decrescente de 59 a 0

Rótulo Mnemônico

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV A,#60H

V1: ADD A,#99H

DA A

MOV P1,A

CJNE A,#00H,V1

SJMP INICIO

END

Enquanto A < 60H, continua contagem

crescenteEnquanto A > 00H, continua contagem decrescente

Page 39: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

39Prof. José Wilson Lima Nerys 39 Microprocessadores

Relógio HH:MM:SS

Page 40: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

40Prof. José Wilson Lima Nerys 40 Microprocessadores

Relógio HH:MM:SSRÓTULO MNEMÔNICO

SEG EQU 10H

MIN EQU 11H

HORA EQU 12H

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

V1: MOV SEG,#00H

MOV MIN,#00H

MOV HORA,#00H

V2: MOV P2,SEG

MOV P1,MIN

MOV P0,HORA

LCALL ATRASO

RÓTULO MNEMÔNICO

MOV A,SEG

ADD A,#01H

DA A

MOV SEG,A

CJNE A,#60H,V2

MOV SEG,#00H

MOV A,MIN

ADD A,#01H

DA A

MOV MIN,A

CJNE A,#60H,V2

MOV MIN,#00H

MOV A,HORA

RÓTULO MNEMÔNICO

ADD A,#01H

DA A

MOV HORA,A

CJNE A,#24H,V2

SJMP V1

ATRASO: MOV R0,#250

V3: MOV R1,#250

DJNZ R1,$

DJNZ R0,V3

RET

END

Page 41: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

41Prof. José Wilson Lima Nerys 41 Microprocessadores

Cronômetro: MM:SS

Page 42: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

42Prof. José Wilson Lima Nerys 42 Microprocessadores

Cronômetro Decrescente: MM:SS

RÓTULO MNEMÔNICO

MIN EQU 11H

SEG EQU 12H

BUZZER EQU P3.7

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

CLR BUZZER

MOV MIN,#20H

MOV SEG,#00H

V1: MOV P2,MIN

MOV P1,SEG

LCALL ATRASO

RÓTULO MNEMÔNICO

MOV A,SEG

ADD A,#99H

DA A

MOV SEG,A

CJNE A,#99H,V1

MOV SEG,#59H

MOV A,MIN

ADD A,#99H

DA A

MOV MIN,A

CJNE A,#99H,V1

MOV MIN,#00H

MOV SEG,#00H

RÓTULO MNEMÔNICO

MOV P2,MIN

MOV P1,SEG

SETB BUZZER

MOV R7,#10

V2: LCALL ATRASO

DJNZ R7,V2

CLR BUZZER

SJMP $

ATRASO: MOV R0,#250

V3: MOV R1,#250

DJNZ R1,$

DJNZ R0,V3

RET

END

Page 43: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

43Prof. José Wilson Lima Nerys 43 Microprocessadores

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 44: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

44Prof. José Wilson Lima Nerys 44 Microprocessadores

Interrupções do 8051

Registradores associados à interrupção:

Registrador de Habilitação: IE (Interrupt Enable) = Registrador A8h

Registrador de Prioridades: IP (Interrupt Priority) = Registrador B8h

Registrador de Controle: TCON (Timer Control) = Registrador 88h

Interrupção Solicitada Endereço de desvio

Reset 0000h

INT0\ 0003h

Timer/counter 0 000Bh

INT1\ 0013h

Timer/counter 1 001Bh

Canal Serial 0023h

Endereços de Desvio das Interrupções:

Page 45: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

45Prof. José Wilson Lima Nerys 45 Microprocessadores

Bit 7 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

EA x x ES ET1 EX1 ET0 EX0

Registrador de Habilitação: IE (Interrupt Enable) = Registrador A8h

EA Enable All. Com EA = 1, todas as interrupções podem ser habilitadas

individualmente. Com EA = 0, ficam todas mascaradas.

ES Enable Serial. Com ES = 1, a interrupção pelo canal serial fica habilitada.

Com ES = 0 os pedidos de interrupção da serial são ignorados.

ET1 Enable Timer 1. Com ET1 = 1, as interrupções pedidas pelo Timer 1

são atendidas. Com ET1 = 0 elas são ignoradas.

EX1 Enable External Interrupt 1. Com EX1 = 1, as interrupções pedidas através

do pino P3.3 são atendidas. Com EX1 = 0 elas são ignoradas.

ET0 Enable Timer 0. Com ET0 = 1, as interrupções pedidas pelo Timer 0

são atendidas. Com ET0 = 0 elas são ignoradas.

EX0 Enable External Interrupt 0. Com EX0 = 1, as interrupções pedidas através

pino P3.2 são atendidas. Com EX0 = 0 elas são ignoradas.

Page 46: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

46Prof. José Wilson Lima Nerys 46 Microprocessadores

TCON = TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Registrador de Controle: TCON (Timer Control) = Registrador 88h

IE1 Interrupt 1 Edge Flag - É setado pelo hardware quando uma interrupção externa

através de INT1\ é detectada. É zerada quando da execução da instrução RETI

(retorno da subrotina de atendimento).

IT1 (Interrupt 1 Type) - Quando IT1 = 1 a interrupção externa 1 será reconhecida pela

transição de 1 para 0 no pino P3.3. Quando IT1 = 0, a interrupção é reconhecida

quando o sinal no pino P3.3 está em nível baixo (0 = interrupção por nível).

IE0 (Interrupt 0 Edge Flag) - É setado pelo hardware quando uma interrupção externa

através de INT0\ é detectada. É zerada quando da execução da instrução RETI.

IT0 (Interrupt 0 Type) - Quando IT0 = 1 a interrupção externa 0 será reconhecida pela

transição de 1 para 0 no pino INTO\. Quando IT0 = 0, a interrupção é reconhecida

quando o sinal no pino INTO\ está em nível baixo (0).

Page 47: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

47Prof. José Wilson Lima Nerys 47 Microprocessadores

IP = X X X PS PT1 PX1 PT0 PX0

Registrador de Prioridade: IP (Interrupt Priority) = Registrador B8h

PS Priority of Serial Port Interrupt Sendo PS = 1, a interrupção serial tem

prioridade alta.

PT1 Priority of Timer Interrupt 1 Sendo PT1 = 1, a interrupção do temporizador

1 tem prioridade alta.

PX1 Priority of External Interrupt 1 Sendo PX1 = 1, a interrupção externa 1

tem prioridade alta.

PT0 Priority of Timer Interrupt 0 Sendo PT0 = 1, a interrupção do temporizador

0 tem prioridade alta.

PX0 Priority of External Interrupt 0 Sendo PX0 = 1, a interrupção externa 0

tem prioridade alta.

Page 48: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

48Prof. José Wilson Lima Nerys 48 Microprocessadores

Uma interrupção ter prioridade alta (Prioridade 1) significa que ela será atendida

sempre que solicitada, mesmo quando o programa está executando uma outra

interrupção. No caso de todos os canais de interrupção terem prioridade 0 ou 1, a

escala de prioridade é como segue:

Interrupção Prioridade

Externa 0 Maior

Temporizador 0

Externa 1

Temporizador 1

Serial Menor

Page 49: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

49Prof. José Wilson Lima Nerys 49 Microprocessadores

Usando Interrupções (antes de estudar interrupções)

Para escolher o valor inicial do cronômetro e para iniciar a contagem

RÓTULO MNEMÔNICO COMENTÁRIO

ORG 00H

LJMP INICIO

ORG 03H Endereço da Interrupção externa 0 (EX0)

MOV A,MIN A recebe o valor atual dos Minutos

ADD A,#01H Acrescenta 01H ao conteúdo de A

DA A Faz o ajuste decimal do conteúdo de A

MOV MIN,A Transfere para MIN o conteúdo atualizado dos minutos

RETI Retorna da Interrupção externa 0

ORG 13H Endereço da Interrupção externa 0 (EX1)

SETB F0 Faz F0 = 1 para dar início à contagem

RETI Retorna da interrupção externa 1

Page 50: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

50Prof. José Wilson Lima Nerys 50 Microprocessadores

Usando Interrupções (antes de estudar interrupções)

Para escolher o valor inicial do cronômetro e para iniciar a contagem

RÓTULO MNEMÔNICO COMENTÁRIO

ORG 30H

INÍCIO: MOV SP,#2FH

MOV IE,#85H Habilita as interrupções externas 0 e 1

MOV TCON,#05H As interrupções externas 0 e 1 são por transição

CLR F0 Limpa a flag F0, que é usada para iniciar a contagem

MOV SEG,#00H Faz o registrador SEG = 0

CLR BUZZER Limpa a saída que aciona o alarme

V1: MOV P1,SEG Mostra valor atual de MINuto e SEGundo

MOV P2,MIN

JNB F0,V1 Aguarda enquanto F0 = 0

Page 51: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

51Prof. José Wilson Lima Nerys 51 Microprocessadores

Rotação de Leds à esquerda (CH0 = 0) e à direita (CH1 = 0)

Rótulo Mnemônico

CH0 EQU P3.2

CH1 EQU P3.3

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV A,#01H

V1: JB CH0,VCH1

Rótulo Mnemônico

MOV P1,A

RL A

LCALL ATRASO

SJMP V1

VCH1: JB CH1,V1

MOV P1,A

RR A

LCALL ATRASO

SJMP V1

Rótulo Mnemônico

ATRASO: MOV R0,#100

V2: MOV R1,#200

DJNZ R1,$

DJNZ R0,V2

RET

END

Page 52: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

52Prof. José Wilson Lima Nerys 52 Microprocessadores

Leds piscando (CH0 = 0) e alternando (CH1 = 0)

Rótulo Mnemônico

CH0 EQU P3.2

CH1 EQU P3.3

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV R6,#00H

MOV R7,#55H

V1: JB CH0,VCH1

Rótulo Mnemônico

MOV P1,R6

MOV A,R6

LCALL ATRASO

CPL A

MOV R6,A

SJMP V1

VCH1: JB CH1,V1

MOV P1,R7

MOV A,R7

LCALL ATRASO

CPL A

MOV R7,A

SJMP V1

Rótulo Mnemônico

ATRASO: MOV R0,#100

V2: MOV R1,#200

DJNZ R1,$

DJNZ R0,V2

RET

END

Page 53: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

53Prof. José Wilson Lima Nerys 53 Microprocessadores

Multiplicação e Divisão de Números de 8 bits

Rótulo Mnemônico

ORG 00H

LJMP INICIO

ORG 00H

INICIO: MOV SP,#2FH

MOV A,#200

MOV B,#40

MUL AB

JB P3.2,$

MOV P2,A

MOV P1,B

END

Rótulo Mnemônico

ORG 00H

LJMP INICIO

ORG 00H

INICIO: MOV SP,#2FH

MOV A,#200

MOV B,#40

DIV AB

JB P3.2,$

MOV P2,A

MOV P1,B

END

Page 54: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

54Prof. José Wilson Lima Nerys 54 Microprocessadores

Adição e Subtração de Números de 16 bits

Page 55: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

55Prof. José Wilson Lima Nerys 55 Microprocessadores

; ADIÇÃO DE NÚMEROS DE 16 BITS Z = X + Y

XH EQU 10H ; Número X de 16 bits

XL EQU 11H

YH EQU 12H ; Número Y de 16 bits

YL EQU 13H

ZH EQU 14H ; Resultado da adição de 16 bits

ZL EQU 15H

ZOV BIT 00H ; Flag de carry do resultado de 16 bits

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV XH,#40H

MOV XL,#00H

MOV YH,#35H

MOV YL,#50H

MOV A,XL

ADD A,YL ; Adição do byte inferior, sem carry

MOV ZL,A

MOV A,XH

ADDC A,YH ; Adição do byte superior, com carry

MOV ZH,A

MOV ZOV,C

END

Page 56: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

56Prof. José Wilson Lima Nerys 56 Microprocessadores

; SUBTRAÇÃO DE NÚMEROS DE 16 BITS Z = X - Y

XH EQU 10H ; Número X de 16 bits

XL EQU 11H

YH EQU 12H ; Número Y de 16 bits

YL EQU 13H

ZH EQU 14H ; Resultado da adição de 16 bits

ZL EQU 15H

ZOV BIT 00H ; Flag de carry do resultado de 16 bits

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV XH,#40H

MOV XL,#00H

MOV YH,#35H

MOV YL,#50H

MOV A,XL

CLR CY

SUBB A,YL

MOV ZL,A

MOV A,XH

SUBB A,YH

MOV ZH,A

MOV ZOV,C

END

Page 57: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

57Prof. José Wilson Lima Nerys 57 Microprocessadores

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 58: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

58Prof. José Wilson Lima Nerys 58 Microprocessadores

Programa que envia uma contagem crescente para a porta P1 a cada solicitação da

interrupção INT0 (através do pino P3.2).

RÓTULO MNEMÔNICO

ORG 00H

LJMP INICIO

ORG 03H

LJMP CONTAGEM

ORG 30H

INICIO: MOV SP, #2FH

MOV IE, #81H

MOV TCON, #01H

MOV A, #00H

SJMP $

RÓTULO MNEMÔNICO

CONTAGEM: MOV P1,A

INC A

LCALL ATRASO

CJNE A,#00H,CONTAGEM

RETI

ATRASO: MOV R0,#10

V1: MOV R1,#100

DJNZ R1, $

DJNZ R0, V1

RET

END

Exem

plo

s

Habilita interrupção externa 0 por transição

Laço infinito aguardando interrupção

Contagem encerra quando A retorna para 00

Page 59: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

59Prof. José Wilson Lima Nerys 59 Microprocessadores

Programa que envia uma contagem crescente para a porta P1 a cada solicitação da

interrupção INT0 e uma decrescente a cada solicitação da INT1.

RÓTULO MNEMÔNICO

ORG 00H

LJMP INICIO

ORG 03H

LJMP ATENDE0

ORG 13H

LJMP ATENDE1

ORG 30H

INICIO: MOV SP, #2FH

MOV IE, #85H

MOV TCON, #05H

SJMP $

RÓTULO MNEMÔNICO

ATENDE0: PUSH ACC

MOV A,#00H

V1: MOV P1,A

INC A

LCALL ATRASO

CJNE A,#00H,V1

POP ACC

RETI

RÓTULO MNEMÔNICO

ATENDE1: PUSH ACC

MOV A,#0FFH

V2: MOV P1,A

LCALL ATRASO

DEC A

CJNE A,#0FFH,V2

POP ACC

RETI

ATRASO: MOV R0,#10

V3: MOV R1,#100

DJNZ R1, $

DJNZ R0, V3

RET

END

Exemplos

Habilita Interrupções INT0

e INT1 por transição

Laço infinito aguardando interrupção

Page 60: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

60Prof. José Wilson Lima Nerys 60 Microprocessadores

Programa que envia uma contagem decimal crescente para a porta P1 a cada solicitação da

interrupção INT0 e uma decimal decrescente a cada solicitação da INT1.

RÓTULO MNEMÔNICO

ORG 00H

LJMP INICIO

ORG 03H

LJMP ATENDE0

ORG 13H

LJMP ATENDE1

ORG 30H

INICIO: MOV SP, #2FH

MOV IE, #85H

MOV TCON, #05H

MOV A,#00H

SJMP $

RÓTULO MNEMÔNICO

ATENDE0: PUSH ACC

V1: MOV P1,A

ADD A,#01H

DA A

LCALL ATRASO

CJNE A,#00H,V1

POP ACC

RETI

RÓTULO MNEMÔNICO

ATENDE1: PUSH ACC

V2: ADD A,#99H

DA A

MOV P1,A

LCALL ATRASO

CJNE A,#00H,V2

POP ACC

RETI

ATRASO: MOV R0,#250

V3: MOV R1,#250

DJNZ R1, $

DJNZ R0, V3

RET

END

Exemplos

Habilita Interrupções INT0

e INT1 por transição

Laço infinito aguardando interrupção

Adiciona 1 e faz

ajuste decimal Subtrai 1 e faz

ajuste decimal

Page 61: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

61Prof. José Wilson Lima Nerys 61 Microprocessadores

Programa que envia uma contagem crescente para a porta P1 a cada solicitação da

interrupção INT0 e uma decrescente a cada solicitação da INT1 (Prioridade alta).

RÓTULO MNEMÔNICO

ORG 00H

LJMP INICIO

ORG 03H

LJMP ATENDE0

ORG 13H

LJMP ATENDE1

ORG 30H

INICIO: MOV SP, #2FH

MOV IE, #85H

MOV TCON, #05H

MOV IP,#04H

SJMP $

RÓTULO MNEMÔNICO

ATENDE0: PUSH ACC

MOV A,#00H

V1: MOV P1,A

INC A

LCALL ATRASO

CJNE A,#00H,V1

POP ACC

RETI

RÓTULO MNEMÔNICO

ATENDE1: PUSH ACC

MOV A,#0FFH

V2: MOV P1,A

LCALL ATRASO

DEC A

CJNE A,#0FFH,V2

POP ACC

RETI

ATRASO: MOV R0,#10

V3: MOV R1,#100

DJNZ R1, $

DJNZ R0, V3

RET

END

Exemplos

Habilita Interrupções INT0

e INT1 por transição.

INT1 tem prioridade alta

Laço infinito aguardando interrupção

Page 62: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

62Prof. José Wilson Lima Nerys 62 Microprocessadores

Programa rotaciona Leds conectados à porta P1.

INT0 rotaciona à esquerda; INT1 rotaciona à direita.

RÓTULO MNEMÔNICO

ORG 00H

LJMP INICIO

ORG 03H

LJMP ATENDE0

ORG 13H

LJMP ATENDE1

ORG 30H

INICIO: MOV SP, #2FH

MOV IE, #85H

MOV TCON, #05H

SJMP $

RÓTULO MNEMÔNICO

ATENDE0: PUSH ACC

MOV A,#01H

V1: MOV P1,A

RL A

LCALL ATRASO

CJNE A,#01H,V1

POP ACC

RETI

RÓTULO MNEMÔNICO

ATENDE1: PUSH ACC

MOV A,#80H

V2: MOV P1,A

LCALL ATRASO

RR A

CJNE A,#80H,V2

POP ACC

RETI

ATRASO: MOV R0,#250

V3: MOV R1,#250

DJNZ R1, $

DJNZ R0, V3

RET

END

Exemplos

Habilita Interrupções INT0

e INT1 por transição

Laço infinito aguardando interrupção

Page 63: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

63Prof. José Wilson Lima Nerys 63 Microprocessadores

RÓTULO MNEMÔNICO

ORG 00H

LJMP INICIO

ORG 03H

LJMP ATENDE0

ORG 13H

LJMP ATENDE1

ORG 30H

INICIO: MOV SP, #2FH

MOV IE, #85H

MOV TCON, #05H

MOV IP,#04H

SJMP $

RÓTULO MNEMÔNICO

ATENDE0: PUSH ACC

MOV A,#01H

V1: MOV P1,A

RL A

LCALL ATRASO

CJNE A,#01H,V1

POP ACC

RETI

RÓTULO MNEMÔNICO

ATENDE1: PUSH ACC

MOV A,#80H

V2: MOV P1,A

LCALL ATRASO

RR A

CJNE A,#80H,V2

POP ACC

RETI

ATRASO: MOV R0,#250

V3: MOV R1,#250

DJNZ R1, $

DJNZ R0, V3

RET

END

Exemplos

Habilita Interrupções INT0

e INT1 por transição.

INT1 tem prioridade alta

Laço infinito aguardando interrupção

Programa rotaciona Leds conectados à porta P1.

INT0 rotaciona à esquerda; INT1 rotaciona à direita (com prioridade alta).

Page 64: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

64Prof. José Wilson Lima Nerys 64 Microprocessadores

Programa rotaciona Motor de Passo conectado ao nibble inferior da porta P1.

INT0 rotaciona para a esquerda; INT1 rotaciona para a direita.

RÓTULO MNEMÔNICO

ORG 00H

LJMP INICIO

ORG 03H

LJMP ATENDE0

ORG 13H

LJMP ATENDE1

ORG 30H

INICIO: MOV SP, #2FH

MOV IE, #85H

MOV TCON, #05H

MOV A,#11H

SJMP $

RÓTULO MNEMÔNICO

ATENDE0: PUSH ACC

MOV R7,#18

V1: MOV P1,A

RL A

LCALL ATRASO

DJNZ R7,V1

POP ACC

RETI

RÓTULO MNEMÔNICO

ATENDE1: PUSH ACC

MOR R7,#36

V2: MOV P1,A

RR A

LCALL ATRASO

DJNZ R7,V2

POP ACC

RETI

ATRASO: MOV R0,#250

V3: MOV R1,#250

DJNZ R1, $

DJNZ R0, V3

RET

END

Exemplos

Habilita Interrupções INT0

e INT1 por transição

Laço infinito aguardando interrupção

São 18 passos de 5º

Total: 90º

Page 65: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

65Prof. José Wilson Lima Nerys 65 Microprocessadores

65

Rótulo Mnemônico

ORG 00H

LJMP INICIO

ORG 03H

LJMP MAIOR

ORG 13H

LJMP MENOR

INT0 mostra em P1 maior valor de uma Tabela. INT1 mostra o menor valor

Rótulo Mnemônico

ORG 30H

INICIO: MOV SP,#2FH

MOV IE,#85H

MOV TCON,#05H

MOV DPTR,#TABELA

V1: MOV R7,#00H

MOV R0,#00H

MOV R1,#0FFH

SJMP V1

Page 66: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

66Prof. José Wilson Lima Nerys 66 Microprocessadores

66

Rótulo Mnemônico

MAIOR: MOV A,R7

MOVC A,@A+DPTR

CJNE A,#0FFH,V2

MOV P1,R0

RETI

V2: CLR CY

MOV B,A

SUBB A,R0

JC V3

MOV R0,B

V3: INC R7

SJMP MAIOR

INT0 mostra em P1 maior valor de uma Tabela. INT1 mostra o menor valor

Rótulo Mnemônico

MENOR: MOV A,R7

MOVC A,@A+DPTR

CJNE A,#0FFH,V4

MOV P1,R1

RETI

V4: CLR CY

MOV B,A

SUBB A,R1

JNC V5

MOV R1,B

V5: INC R7

SJMP MENOR

Rótulo Dado

TABELA: DB 05H

DB 35H

DB 12H

DB 98H

DB 0A1H

DB 0B5H

DB 5AH

DB 09H

DB 72H

DB 40H

DB 0FFH

END

Page 67: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

67Prof. José Wilson Lima Nerys 67 Microprocessadores

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 68: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

68Prof. José Wilson Lima Nerys 68 Microprocessadores

68

Breve Introdução aos Conversores AD e DA

ADC DACMicro-

controladorSinal

AnalógicoSinal

Analógico

Sinal Digital

Sinal Digital

Como os dados de um microprocessador estão na forma digital e os dados do mundo

exterior estão na forma analógica (contínua), é necessário fazer a conversão entre

esses dados. Assim, tem-se o Conversor Analógico-Digital (ADC), que faz a

conversão de sinal analógico para sinal digital e o Conversor Digital-Analógico (DAC),

que faz a conversão de sinal digital para sinal analógico.

Velocidade

Temperatura

Tensão

Corrente

Pressão

Page 69: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

69Prof. José Wilson Lima Nerys 69 Microprocessadores

69

)2222( 0

3

1

2

2

1

3

0 DDDDR

VI REF

R

VI REF3

R

VI REF

22

R

VI REF

41

R

VI REF

80

Conversor DA Básico de 4 bits

0123 IIIII

)125,025,05,0( 0123 DDDDR

VI REF

IRV saídasaída

Page 70: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

70Prof. José Wilson Lima Nerys 70 Microprocessadores

70

Conversor DA Básico

De 4 bits

D3 D2 D1 D0

Corrente saída

(Vref = 5 V e R = 5 kΩ)

Fração do

máximo

0 0 0 0 0 0

0 0 0 1 0.125 1/15

0 0 1 0 0.250 2/15

0 0 1 1 0.375 3/15

0 1 0 0 0.500 4/15

0 1 0 1 0.625 5/15

0 1 1 0 0.750 6/15

0 1 1 1 0.875 7/15

1 0 0 0 1.000 8/15

1 0 0 1 1.125 9/15

1 0 1 0 1.250 10/15

1 0 1 1 1.375 11/15

1 1 0 0 1.500 12/15

1 1 0 1 1.625 13/15

1 1 1 0 1.750 14/15

1 1 1 1 1.875 15/15

Page 71: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

71Prof. José Wilson Lima Nerys 71 Microprocessadores

71

Conversor DA Básico de 4 bits

máx

1 LSB

0

Page 72: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

72Prof. José Wilson Lima Nerys 72 Microprocessadores

72

Resolução de um DA

(a) Cada degrau (menor incremento possível) corresponde a 1 LSB

(bit menos significativo)

(b) Número de degraus de um conversor: 2n – 1, onde n é o número de bits.

Para n = 4 15 degraus.

Resolução: É a relação entre o menor incremento possível, 1 LSB e a saída máxima.

Resolução = , onde n é número de bits.

No caso de n = 4 Resolução = 1/15

Resolução Percentual = Resolução 100%

No caso de 4 bits Resolução Percentual = 6.67%

12

1

n

Page 73: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

73Prof. José Wilson Lima Nerys 73 Microprocessadores

73

Resolução do DA versus Número de bits

Número de bits ResoluçãoResolução

Percentual (%)

4 1/15 6,67

8 1/255 0,392

10 1/1023 0,09775

12 1/4095 0,02442

16 1/65535 0,000381

Page 74: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

74Prof. José Wilson Lima Nerys 74 Microprocessadores

74

Conversor DA com resistores em escada

Page 75: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

75Prof. José Wilson Lima Nerys 75 Microprocessadores

75

Conversor DAC 0808

Page 76: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

76Prof. José Wilson Lima Nerys 76 Microprocessadores

76

Conversor ADC Básico

Page 77: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

77Prof. José Wilson Lima Nerys 77 Microprocessadores

77

Conversor ADC com Aproximação Sucessiva

Page 78: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

78Prof. José Wilson Lima Nerys 78 Microprocessadores

78

Conversor ADC 0804

Sinais de Controle

CS\ habilita o CI

RD\ habilita a saída dos dados

RW\ trigger

Saída

Page 79: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

79Prof. José Wilson Lima Nerys 79 Microprocessadores

79

Diagrama de Temporização do Conversor ADC0804

Tempo de conversão

aproximado: 100 µs

Page 80: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

80Prof. José Wilson Lima Nerys 80 Microprocessadores

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 81: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

81Prof. José Wilson Lima Nerys 81 Microprocessadores

81

Programa para leitura do Conversor AD

Rótulo Instrução

CS EQU P3.4

RS EQU P3.5

RW EQU P3.6

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

V1: LCALL LE_AD

MOV P1,A

SJMP V1

Rótulo Instrução

LE_AD: CLR CS

LCALL ATRASO

SETB RW

LCALL ATRASO

CLR RW

LCALL ATRASO

SETB RW ; Começa a conversão

SETB CS

JB P3.3,$ ; Aguarda fim de conversão

CLR CS

CLR RS ; Liberada dados na saída

LCALL ATRASO

MOV A,P2 ; Transfere resultado para A

SETB RS

SETB CS

RET

Rótulo Instrução

ATRASO: MOV R0,#50

DJNZ R0,$

RET

END

Loop infinito: Chama subrotina de

Leitura do AD e mostra resultado em A

Loop infinito:

Aguarda sinal de fim

de conversão.

Pino INTR do AD

conectado ao pino

P3.3 do 8051

Page 82: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

82Prof. José Wilson Lima Nerys 82 Microprocessadores

WR\

INTR

RS\

CS\

Temporização no problema anterior

Início da conversão

Fim da conversão

Leitura habilitada

(libera dados na saída)

Page 83: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

83Prof. José Wilson Lima Nerys 83 Microprocessadores

83

Programa 2: Conversor AD usando interrupção

83

Rótulo Instrução

ORG 00H

LJMP INICIO

ORG 03H

MOV A,P2

RETI

ORG 30H

INICIO: MOV SP,#2FH

MOV IE,#81H

MOV TCON,#01H

V1: MOV P1,A

SJMP V1

END

Loop infinito: O conteúdo de A é copiado na porta P1 (Leds). A

atualização de A ocorre a cada final de conversão, através da

interrupção externa zero.

A cada fim de conversão do conversor AD, um sinal de pedido de

interrupção é enviado ao 8051, através do pino P3.2 (interrupção zero).

Assim, o processamento desvia para o endereço 03H, onde o resultado

da conversão (disponibilizado na porta P2) é transferido para A

Interrupção externa zero é habilitada por transição.

O conversor AD está operando de forma independente e

ininterrupta. O sinal de final de conversão é usado para

dar início à próxima conversão.

Page 84: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

84Prof. José Wilson Lima Nerys 84 Microprocessadores

84

Uso do Teclado com Interrupção

(Decodificador de teclado: 74C922) Sinal alto (saída) quando

a conversão acaba

Sinal baixo (entrada)

para liberar o

resultado na saída

A B C D

Pedido de interrupção

para o 8051 (na transição

de alto para baixo)

A saída (AD3, AD2, AD1, AD0) do

decodificador 74C922 é conectado ao

nibble inferior da Porta P2

Page 85: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

85Prof. José Wilson Lima Nerys 85 Microprocessadores

85

Uso do Teclado com Interrupção

(Decodificador de teclado: 74C922)

Loop infinito: Mostra o conteúdo de A, que é atualizado, através da

interrupção externa 1, a cada vez que o teclado é pressionado

interrupção externa 1 por transição

Endereço da interrupção externa 1

O conteúdo da porta P2 é copiado no acumulador.

A instrução ANL A,#0FH (AND) elimina o nibble superior da

leitura de P2.

Rótulo Instrução

ORG 00H

LJMP INICIO

ORG 13H

MOV A,P2

ANL A,#0FH

RETI

ORG 30H

INICIO: MOV SP,#2FH

MOV IE,#84H

MOV TCON,#04H

V1: MOV P1,A

SJMP V1

END

Page 86: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

86Prof. José Wilson Lima Nerys 86 Microprocessadores

86

Uso do Teclado com Interrupção

(Decodificador de teclado: 74C922)

Rótulo Instrução

ORG 00H

LJMP INICIO

ORG 13H

LJMP LE_TECLADO

ORG 30H

INICIO: MOV SP,#2FH

MOV IE,#84H

MOV TCON,#04H

CLR F0

V1: MOV P1,A

SJMP V1

Rótulo Instrução

LE_TECLADO: JB F0,NIBBLE2

MOV A,P2

ANL A,#0FH

SWAP A

MOV B,A

SETB F0

RETI

NIBBLE2: MOV A,P2

ANL A,#0FH

ORL A,B

CLR F0

RETI

END

Leitura do dígito superior do número de

dois dígitos.

O dado lido de P2 passa por uma operação

AND para eliminar o nibble superior (lixo).

A instrução SWAP A transfere o dado lido

(nibble inferior) para o nibble superior. O

resultado é guardado em B. A flag F0 é

setada para direcionar a próxima

interrupção para NIBBLE2.

Nesse programa o Teclado é usado para

“entrar” com um número de dois dígitos.

Leitura do dígito inferior do número de dois

dígitos.

O dado lido de P2 passa por uma operação AND

para eliminar o nibble superior (lixo).

A instrução OR entre junta conteúdo de A (dígito

inferior) com o conteúdo de B (dígito superior).

A flag F0 é zerada para direcionar a próxima

interrupção para a primeira parte dessa subrotina.

Loop infinito: Mostra o conteúdo de A, que é atualizado, através da

interrupção externa 1, a cada vez que o teclado é pressionado

Page 87: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

87Prof. José Wilson Lima Nerys 87 Microprocessadores

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 88: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

88Prof. José Wilson Lima Nerys 88 Microprocessadores

O 8051 tem 2 temporizadores/contadores de 16 bits que podem operar de

4 modos distintos:

Modo 0 Contador/Temporizador de 13 bits com divisor de frequência de

até 32 vezes. Pode contar até 8192 (32 255).

Modo 1 Contador/Temporizador de 16 bits. Pode contar até 65535.

Modo 2 2 contadores/temporizadores de 8 bits com recarga automática.

Modo 3 2 contadores/temporizadores independentes de 8 bits.

Temporizadores

O microcontrolador AT89S8252 possui 3 temporizadores.

Page 89: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

89Prof. José Wilson Lima Nerys 89 Microprocessadores

Temporizadores

TMOD = G1 C/T1 M11 M10 G0 C/T0 M01 M00

Os registradores que comandam o Contador-Temporizador são:

TCON = TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Registrador de Controle: TCON (Timer Control) = Registrador 88h

Registrador do Temporizador: TMOD (Timer Mode) = Registrador 89h

0 0 Modo 0

0 1 Modo 1

1 0 Modo 2

1 1 Modo 3

0 0 Modo 0

0 1 Modo 1

1 0 Modo 2

1 1 Modo 3

Temporizador zeroTemporizador 1

Page 90: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

90Prof. José Wilson Lima Nerys 90 Microprocessadores

90

Temporizadores

TMOD = G1 C/T1 M11 M10 G0 C/T0 M01 M00

G GateSendo 0, o disparo do temporizador/contador é interno,

através de TR. Sendo 1, o disparo pode ser através de TR ou

através do pino externo P3.2 (INT0\) ou P3.3 (INT1\).

C/T\ Sendo 0, a operação é como temporizador, onde a freqüência de

operação é 1/12 da frequência do cristal oscilador.

Sendo 1, a frequência é determinada por um componente externo,

através do pino P3.4 (T0) ou P3.5 (T1).

Registrador do Temporizador: TMOD (Timer Mode) = Registrador 89h

Page 91: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

91Prof. José Wilson Lima Nerys 91 Microprocessadores

91

Temporizadores

TCON = TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TR Quando G = 0, fazendo-se TR = 1, o temporizador inicia a

contagem a partir do valor armazenado em TH e TL. TR = 0

para o temporizador.

TF A cada fim de contagem TF é setado (TF = 1) pelo hardware.

Se a interrupção do temporizador estiver habilitada, ocorre o

desvio para o endereço correspondente, 0Bh para o temporizador

0 e 1Bh para o temporizador 1.

Registrador de Controle: TCON (Timer Control) = Registrador 88h

Page 92: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

92Prof. José Wilson Lima Nerys 92 Microprocessadores

92

Temporizadores

Lógica para

habilitar contagem

Page 93: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

93Prof. José Wilson Lima Nerys 93 Microprocessadores

93

O bit C/T\ do registrador TMOD define se o funcionamento é como contador

(C/T\ = 1), ou como temporizador (C/T\ = 0).

Como temporizador, o clock é interno, vindo do oscilador.

A frequência é 1/12 da frequência do cristal oscilador.

Como contador, o clock é externo, vindo através de T0 (P3.4).

O pino Gate\ define se o sinal de disparo do contador/temporizador vem

através de software (bit TR0), ou de um sinal externo, através do pino INT0\

(P3.2).

Se Gate\ = 0, o comando SETB TR0 dispara o contador/temporizador e CLR

TR0 interrompe.

Temporizadores

Page 94: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

94Prof. José Wilson Lima Nerys 94 Microprocessadores

94

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV TMOD,#01H

MOV TH0,#HIGH(55535)

MOV TL0,#LOW(55535)

SETB TR0

SJMP $

END

Exemplos com temporizadores e contadores

Nesse exemplo o temporizador zero foi

configurado para o modo 1

(TMOD = 0000 0001) e a primeira

contagem começa do valor 55.535.

Toda contagem vai até 65.535, e,

então, o valor de TH0-TL0 torna-se

zero e a contagem continua.

A contagem não para, enquanto TR0

permanecer em nível lógico alto

(TR0 = 1).

Assim, a primeira contagem, nesse

exemplo, conta 10.000 pulsos. A partir

da segunda contagem, no entanto,

TH0-TL0 contam, continuamente, de 0

a 65.535.TH0 = D8H

TL0 = EFH

Cristal de 12 MHz

Page 95: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

95Prof. José Wilson Lima Nerys 95 Microprocessadores

Exemplos com temporizadores e contadores

Nesse exemplo o temporizador zero foi

configurado para o modo 1

(TMOD = 0000 0001). Ao contrário do

exemplo anterior, todas as contagens

começam do valor 15.535 porque, a cada final

de contagem (quando TF0 = 1), o

processamento retorna para V1, onde os

valores de TH0 e TL0 são recarregados.

Assim, a contagem é de 50.000 pulsos. Sendo

o cristal de 12 MHz, o contador conta 50 ms.

O exemplo também apresenta uma forma de

verificar o tempo de contagem do

temporizador, gerando uma onda quadrada no

pino P1.0.

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV TMOD,#01H

V1: MOV TH0,#HIGH(15535)

MOV TL0,#LOW(15535)

SETB TR0

CPL P1.0

JNB TF0,$

CLR TF0

SJMP V1

ENDLoop de espera do fim da contagem

A Flag TF0 (fim de contagem) deve ser zerada antes de recarregar TH0 e TL0

Cristal de 12 MHz

Page 96: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

96Prof. José Wilson Lima Nerys 96 Microprocessadores

Exemplos com temporizadores e contadores

Esse exemplo é idêntico ao anterior, com a

diferença de usar um cristal oscilador de

11.0592 MHz.

Dessa forma, cada período do temporizador

corresponde a 1,085 µs, ao invés de 1 µs.

Assim, para gerar uma contagem de 50 ms, são

necessários 46.080 pulsos, ou seja, a contagem

deve começar de TH0-TL0 = 4BFFH, que

corresponde ao número decimal 19.455.

No programa poderia ter sido usado:

MOV TH0, #HIGH(19455)

MOV TL0,#LOW(19455)

Cristal de 11.0592 MHz

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV TMOD,#01H

V1: MOV TH0,#4BH

MOV TL0,#0FFH

SETB TR0

CPL P1.0

JNB TF0,$

CLR TF0

SJMP V1

END

Page 97: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

97Prof. José Wilson Lima Nerys 97 Microprocessadores

Exemplos com temporizadores e contadores

Nesse exemplo, o temporizador zero, no modo

1, gera uma onda quadrada com período de

100 ms (contagem de 19455 a 65535, com

cristal de 11.0592 MHz).

No entanto, o disparo do temporizador é

EXTERNO, através do pino P3.2 (uma chave

tipo push-button deve ser conectada entre o

pino P3.2 e o Terra). Com P3.2 = 0, o

temporizador fica parado; com P3.2 = 1, o

temporizador prossegue a contagem.

Cristal de 11.0592 MHz

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV TMOD,#09H

SETB TR0

V1: MOV TH0,#HIGH(19455)

MOV TL0,#LOW(19455)

CPL P1.0

JNB TF0,$

CLR TF0

SJMP V1

END

TMOD = 09H = 0000 1001 Pino G\ = 1

(disparo externo) e M1-M0 = 01

(temporizador zero no modo 1)

A Flag TR0 é setada para habilitar esse disparo externo.

Page 98: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

98Prof. José Wilson Lima Nerys 98 Microprocessadores

Exemplos com temporizadores e contadores

Nesse exemplo tem-se um CONTADOR no modo 1 (16

bits).

O Sinal de clock é aplicado ao pino P3.4.

Duas situações podem ser criadas, no Proteus:

1. Conectar uma chave entre os pinos P3.4 e o Terra. A

cada pulso dessa chave, a contagem em TH0-TL0 é

incrementada em 1.

2. Conectar um gerador de função, com pulso quadrado,

ao pino P3.4. A contagem em TH0-TL0 seguirá esse

clock.,

Cristal de 11.0592 MHz

TMOD = 05H = 0000 0101 Pino C/T\ = 1 (contador) e

M1-M0 = 01 (contador zero no modo 1)

A Flag TR0 é setada para o início da contagem

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV TMOD,#05H

SETB TR0

V1: MOV P2,TH0

MOV P1,TL0

SJMP V1

END

O valor de TH0 é mostrado

na porta P2

O valor de TL0 é mostrado

na prota P1

Page 99: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

99Prof. José Wilson Lima Nerys 99 Microprocessadores

Exemplos com temporizadores e contadores

Nesse exemplo tem-se um CONTADOR no modo 0 (13

bits).

O Sinal de clock é aplicado ao pino P3.4. As mesmas

situações do exemplo anterior podem ser utilizadas.

A diferença é que os valores mostrados em P2 e P1 são

diferentes:

P1 (valor de TL0) mostra uma contagem de 00h até 1Fh,

continuamente.

Ao final de cada contagem, o valor mostrado em P2 (valor

de TH0) é incrementado em 1

Cristal de 11.0592 MHz

TMOD = 04H = 0000 0100 Pino C/T\ = 1 (contador) e

M1-M0 = 00 (contador zero no modo 0)

A Flag TR0 é setada para o início da contagem

O valor de TH0 é mostrado

na porta P2

O valor de TL0 é mostrado

na prota P1

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV TMOD,#04H

SETB TR0

V1: MOV P2,TH0

MOV P1,TL0

SJMP V1

END

Page 100: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

100Prof. José Wilson Lima Nerys 100 Microprocessadores

Exemplos com temporizadores e contadores

Nesse exemplo tem-se um CONTADOR no modo 2

(8 bits com recarga automática).

No modo 2 (recarga automática), cada nova contagem

começa do valor de TH0. Assim, no programa mostrado,

cada nova contagem começa de TH0 = 40H.

O sinal de clock deve ser conectado ao pino P3.4.

Cristal de 11.0592 MHz

TMOD = 06H = 0000 0110 Pino C/T\ = 1 (contador) e

M1-M0 = 10 (contador zero no modo 0)

Valor da recarga

O valor de TH0 é mostrado na porta P2

O valor de TL0 é mostrado na prota P1

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV TMOD,#06H

SETB TR0

MOV TH0,#40H

V1: MOV P2,TH0

MOV P1,TL0

SJMP V1

END

Page 101: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

101Prof. José Wilson Lima Nerys 101 Microprocessadores

Exemplos com temporizadores e contadores

Nesse exemplo tem-se um CONTADOR no modo 2

(8 bits com recarga automática).

É idêntico ao exemplo anterior, com uma exceção:

A interrupção externa zero (por transição) é usada para

incrementar em 5 o valor da recarga, TH0.

Assim, cada nova contagem começa do valor anterior de

TH0 + 5.

Cristal de 11.0592 MHz

Subrotina de atendimento da interrupção externa zero

IE = 81h = 1000 0001 Interrupção externa zero

habilitada

TCON = 01H = 0000 0001 Interrupção externa zero por

transição

ORG 00H

LJMP INICIO

ORG 03H

MOV A,TH0

ADD A,#5

MOV TH0,A

RETI

ORG 30H

INICIO: MOV SP,#2FH

MOV IE,#81H

MOV TCON,#01H

MOV TMOD,#06H

SETB TR0

MOV TH0,#40H

V1: MOV P2,TH0

MOV P1,TL0

SJMP V1

END

Page 102: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

102Prof. José Wilson Lima Nerys 102 Microprocessadores

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 103: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

103Prof. José Wilson Lima Nerys 103 Microprocessadores

Exemplos com temporizadores e contadores COM INTERRUPÇAO

Nesse exemplo tem-se um TEMPORIZADOR no

modo 1 (16 bits), com interrupção ao final de cada

contagem.

A cada final de contagem (de 19455 a 65535) o

processamento desvia para o endereço 0BH.

Nesse endereço, recarrega-se TH0 e TL0 e

complementa-se o pino P1.0 (gera onda

quadrada).

Com uma contagem de 46080 e um cristal de

11.0592 MHz, tem 50 ms para cada meio período

(onda quadrada com 100 ms de período)

Cristal de 11.0592 MHz

IE = 1000 0010 Interrupção do temporizador

zero habilitada.

Subrotina de atendimento da interrupção do

temporizador zero.

ORG 00H

LJMP INICIO

ORG 0BH

MOV TH0,#HIGH(19455)

MOV TL0,#LOW(19455)

CPL P1.0

RETI

ORG 30H

INICIO: MOV SP,#2FH

MOV IE,#82H

MOV TMOD,#01H

MOV TH0,#HIGH(19455)

MOV TL0,#LOW(19455)

SETB TR0

SJMP $

END

Loop infinito esperando interrupção

Page 104: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

104Prof. José Wilson Lima Nerys 104 Microprocessadores

Exemplos com temporizadores e contadores COM INTERRUPÇAO

Nesse exemplo tem-se um TEMPORIZADOR no modo 1 (16 bits),

com interrupção ao final de cada contagem.

A cada final de contagem (de 19455 a 65535) o processamento

desvia para o endereço 0BH. Nesse endereço, recarrega-se TH0 e

TL0. No entanto, o pino P1.0 somente é complementado a 10

passagens pela subrotina (R0 = 10).

Com uma contagem de 46080 e um cristal de 11.0592 MHz, tem 50

ms para cada meio período, mas o pino P1. 0 é complementado a

cada 10 x 50 ms = 0,5 s (resulta em onda quadrada com 1,0 s de

período)

Cristal de 11.0592 MHz

IE = 1000 0010 Interrupção do temporizador zero habilitada.

Subrotina de atendimento da interrupção do temporizador zero.

P1.0 somente é complementado a cada 10 atendimentos dessa

subrotina.

Loop infinito esperando interrupção

ORG 00H

LJMP INICIO

ORG 0BH

MOV TH0,#HIGH(19455)

MOV TL0,#LOW(19455)

DJNZ R0,V1

CPL P1.0

MOV R0,#10

V1: NOP

RETI

ORG 30H

INICIO: MOV SP,#2FH

MOV IE,#82H

MOV TMOD,#01H

MOV TH0,#HIGH(19455)

MOV TL0,#LOW(19455)

MOV R0,#10

SETB TR0

SJMP $

END

R0 = 10 contador para contar 10 vezes 50 ms

Page 105: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

105Prof. José Wilson Lima Nerys 105 Microprocessadores

Exemplos com temporizadores e contadores COM INTERRUPÇAO

Nesse exemplo tem-se o TEMPORIZADOR zero no modo 0 (13

bits) e o TEMPORIZADOR 1 no modo 1 (16 bits)

Ambos começam a contagem de 0 e ambos utilizam suas

interrupções.

Ao final de cada contagem de 13 bits (0 a 8.191) o processamento

desvia para o endereço 0Bh, onde o pino P1.0 é complementado

(gerando uma onda quadrada no pino P1.0).

Ao final de cada contagem de 16 bits (0 a 65.535) o processamento

desvia para o endereço 1Bh, onde o pino P1.1 é complementado

(gerando uma onda quadrada no pino P1.1).

Cristal de 11.0592 MHz

IE = 1000 1010 Interrupções dos temporizadores zero e 1

habilitadas.

TMOD = 10h = 0001 0000 Temporizador zero no modo 0 (13 bits);

Temporizador 1 modo 1 (16 bits)

ORG 00H

LJMP INICIO

ORG 0BH

CPL P1.0

RETI

ORG 1BH

CPL P1.1

RETI

ORG 30H

INICIO: MOV SP,#2FH

MOV IE,#8AH

MOV TMOD,#10H

SETB TR0

SETB TR1

SJMP $

END

Page 106: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

106Prof. José Wilson Lima Nerys 106 Microprocessadores

106

Exemplos com temporizadores e contadores COM INTERRUPÇAO

Período da onda quadrada no modo zero:

17,77 ms

Período da onda quadrada no modo 1:

141,92 ms

1 período no modo 16 bits corresponde a

8 períodos do modo 13 bits.

Page 107: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

107Prof. José Wilson Lima Nerys 107 Microprocessadores

107

RÓTULO MNEMÔNICO

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP, #2FH

MOV TMOD,#01H

V1: CPL P1.0

LCALL ATRASO

SJMP V1

RÓTULO MNEMÔNICO

ATRASO: MOV R0,#20

V2: MOV TH0,#3CH

MOV TL0,#0AFH

SETB TR0

ESPERA: JNB TF0, ESPERA

CLR TF0

DJNZ R0, V2

CLR TR0

RET

END

Programa com uma subrotina de atraso de tempo com temporizador

Onda quadrada em P1.0

Cristal oscilador: 12 MHz

Contador conta de 15.535

até 65.535 (50.000 pulsos)

São 20 contagens de 50 ms

(tempo total: 1 s)

Espera o final de cada

contagem do temporizador

Limpa a flag que indica fim de contagem

Decrementa R0; se não der zero,

volta para nova contagem de 50 ms

Dispara o temporizador

Para o temporizador

Page 108: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

108Prof. José Wilson Lima Nerys 108 Microprocessadores

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 109: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

109Prof. José Wilson Lima Nerys 109 Microprocessadores

Relógio HH:MM:SS

Page 110: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

110Prof. José Wilson Lima Nerys 110 Microprocessadores

Relógio HH:MM:SS

SEG EQU 10H

MIN EQU 11H

HORA EQU 12H

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV TMOD,#01H

CLR P3.7

V1: MOV SEG,#00H

MOV MIN,#00H

MOV HORA,#00H

V2: MOV P1,SEG

MOV P2,MIN

MOV P0,HORA

LCALL ATRASO

MOV A,SEG

ADD A,#01H

DA A

MOV SEG,A

CJNE A,#60H,V2

MOV SEG,#00H

MOV A,MIN

ADD A,#01H

DA A

MOV MIN,A

CJNE A,#60H,V2

MOV MIN,#00H

MOV A,HORA

ADD A,#01H

DA A

MOV HORA,A

CJNE A,#24H,V2

SJMP V1

ATRASO:

SETB TR0

V3: MOV TH0,#HIGH(15535)

MOV TL0,#LOW(15535)

JNB TF0,$

CLR TF0

DJNZ R0,V3

MOV R0,#20

CLR TR0

RET

END

Cristal de 12 MHz

Subrotina de atraso de 1 s

Page 111: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

111Prof. José Wilson Lima Nerys 111 Microprocessadores

HH MM SS

Page 112: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

112Prof. José Wilson Lima Nerys 112 Microprocessadores

Cronômetro: MM:SS

Page 113: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

113Prof. José Wilson Lima Nerys 113 Microprocessadores

SEG EQU 10H

MIN EQU 11H

BUZZER EQU P3.7

ORG 00H

LJMP INICIO

ORG 03H MOV A,MIN

ADD A,#01H

DA A

MOV MIN,A

RETI

ORG 13H SETB F0

RETI

;======Configurações iniciais

ORG 30H

INICIO: MOV SP,#2FH

MOV TMOD,#01H

MOV IE,#85H

MOV TCON,#05H

MOV R0,#20

CLR F0

CLR BUZZER

MOV SEG,#00H

V4: MOV P2,MIN

MOV P1,SEG

JNB F0,V4

;--------------------------------------

V1: MOV P2,MIN

MOV P1,SEG

LCALL ATRASO

MOV A,SEG

ADD A,#99H

DA A

MOV SEG,A

CJNE A,#99H,V1

MOV SEG,#59H

MOV A,MIN

ADD A,#99H

DA A

MOV MIN,A

CJNE A,#99H,V1

MOV MIN,#00H

MOV SEG,#00H

MOV P2,MIN

MOV P1,SEG

SETB BUZZER

MOV R7,#3

V2: LCALL ATRASO

DJNZ R7,V2

CLR BUZZER

CLR F0

SJMP INICIO

ATRASO: SETB TR0

V3: MOV TH0,#3CH

MOV TL0,#0AFH

JNB TF0,$

CLR TF0

DJNZ R0,V3

MOV R0,#20

CLR TR0

RET

END

1 sCristal de 12 MHz

Page 114: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

114Prof. José Wilson Lima Nerys 114 Microprocessadores

MM SS

Page 115: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

115Prof. José Wilson Lima Nerys 115 Microprocessadores

115

Acionamento temporizado de Motor de Corrente Contínua:

1. Motor gira no sentido horário por 10 s e para por 5 s

2. Motor gira no sentido anti-horário por 10 s e para.

IN1 EQU P2.3

IN2 EQU P2.2

LIGA EQU P3.2

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV TMOD,#01H

MOV R0,#20

V0: JB LIGA,$

SETB IN1

CLR IN2

MOV R7,#10

V1: LCALL ATRASO

DJNZ R7,V1

CLR IN1

CLR IN2

MOV R7,#5

V2: LCALL ATRASO

DJNZ R7,V2

CLR IN1

SETB IN2

MOV R7,#10

V4: LCALL ATRASO

DJNZ R7,V4

CLR IN1

CLR IN2

SJMP V0

ATRASO: SETB TR0

V3: MOV TH0,#3CH

MOV TL0,#0AFH

JNB TF0,$

CLR TF0

DJNZ R0,V3

MOV R0,#20

CLR TR0

RET

END

Cristal de 12 MHz

Page 116: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

116Prof. José Wilson Lima Nerys 116 Microprocessadores

116

Acionamento temporizado de Motor de Passo:

1. Motor gira no sentido horário por 10 s e para por 5 s

2. Motor gira no sentido anti-horário por 10 s e para.

ORG 00H

LJMP INICIO

ORG 0BH

LJMP TEMPO_R7s

;===== Configurações =====

ORG 30H

INICIO: MOV SP,#2FH

MOV IE,#82H

MOV TMOD,#01H

MOV TH0,#4BH

MOV TL0,#0FFH

MOV R0,#20

LIGA: JB P3.2,$

CLR TR0

CLR F0

MOV R7,#10

SETB TR0

MOV A,#01H

DIRETO: MOV P1,A

LCALL ATRASO

RL A

CJNE A,#10H,VF0

MOV A,#01H

VF0: JNB F0,DIRETO

CLR TR0

CLR F0

MOV R7,#5

SETB TR0

JNB F0,$

CLR TR0

CLR F0

MOV R7,#10

SETB TR0

MOV A,#08H

REVERSO:MOV P1,A

LCALL ATRASO

RR A

CJNE A,#80H,VF1

MOV A,#08H

VF1: JNB F0,REVERSO

SJMP LIGA

;== Atraso para o motor de passo

ATRASO: MOV R6,#150

V1: MOV R5,#250

DJNZ R5,$

DJNZ R6,V1

RET

;----------------------------------------------

TEMPO_R7s:

DJNZ R0,SAI

MOV R0,#20

DJNZ R7,SAI

SETB F0

SAI: MOV TH0,#4Bh

MOV TL0,#0FFH

RETI

END

Cristal de 11.0592 MHz

Page 117: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

117Prof. José Wilson Lima Nerys 117 Microprocessadores

117

Temporizador no modo 2 – recarga automática (Temp_9_6A)

Modo 2 com interrupção – complementa TH

Modo 2 com interrupção – complementa TH e P1.0

PWM fixo para acionamento de motor CC

Incrementa TH e complementa P1.0

• Aciona motor CC com velocidade variável

• Aciona motor CC com velocidade variável e mudança de sentido de rotação

Page 118: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

118Prof. José Wilson Lima Nerys 118 Microprocessadores

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 119: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

119Prof. José Wilson Lima Nerys 119 Microprocessadores

119

Comunicação

Serial

Page 120: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

120Prof. José Wilson Lima Nerys 120 Microprocessadores

120

A comunicação serial consiste em enviar ou receber pacotes de

informação bit a bit.

No caso do 8051 o canal de comunicação serial é do tipo ”full duplex”,

o que significa que ele pode, ao mesmo tempo, receber e transmitir

dados.

Uma grande questão da transmissão serial é

“como informar o receptor do início e do final do pacote de

informação”,

ou seja, qual o primeiro bit da informação e qual é o último.

Assim, existem dois tipos de comunicação:

síncrona e assíncrona.

Comunicação Serial

Page 121: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

121Prof. José Wilson Lima Nerys 121 Microprocessadores

121

Na comunicação serial síncrona, são utilizados dois canais:

um para transmitir/receber os dados e outro para transmitir/receber o

sinal de sincronismo.

No caso do 8051 a transmissão e também a recepção síncrona de

dados são feitas através do pino RxD (pino P3.0).

O pino TxD (pino P3.1) é usado para o sinal de sincronismo.

Page 122: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

122Prof. José Wilson Lima Nerys 122 Microprocessadores

122

Na comunicação assíncrona não há a sinal de sincronismo e, portanto, alguns

cuidados especiais devem ser tomados:

As taxas de recepção e de transmissão devem ser iguais.

Um bit de início e outro de fim de transmissão devem ser enviados, além dos dados.

O bit de início de transmissão é zero, isto porque o canal normalmente fica em

repouso no nível lógico alto.

Assim, a primeira passagem para zero, após a habilitação da transmissão, é

interpretada como o sinal de início.

O sinal de parada é de nível lógico alto, após ser recebida a quantidade de bits

previstos.

Além do bit de início (Start bit) e do bit de fim (Stop bit), também pode existir um

terceiro bit extra, que é o bit de paridade, usado para verificar a consistência dos

dados.

Page 123: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

123Prof. José Wilson Lima Nerys 123 Microprocessadores

123

Formato da Comunicação Serial Assíncrona

Page 124: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

124Prof. José Wilson Lima Nerys 124 Microprocessadores

124

Registrador SCON – Configuração da Comunicação Serial

Page 125: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

125Prof. José Wilson Lima Nerys 125 Microprocessadores

125

Taxa de comunicação (baud rate): igual à frequência de clock dividida por 12.

Recepção: Fica habilitada fazendo REN = 1 e RI = 0.

Ao final da recepção o bit RI é setado por hardware, e deve ser

ressetado por software (CLR RI) antes da recepção seguinte.

O conteúdo recebido é transferido para o registrador SBUF.

Transmissão: É iniciada automaticamente quando o conteúdo de um

registrador é transferido para o registrador SBUF.

Ao final da transmissão o bit TI é setado por hardware, e deve ser

ressetado por software (CLR TI) antes da transmissão seguinte.

Obs.: Há um registrador SBUF para transmissão e outro para recepção

Serial – Modo 0 (síncrono – registrador de deslocamento)

Page 126: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

126Prof. José Wilson Lima Nerys 126 Microprocessadores

126

Rótulo Instruções

MOV SCON,#00H

MOV A,#00H

V1: MOV SBUF,A

JNB TI,$

CLR TI

INC A

SJMP V1

END

Sinais de RxD e TxD durante uma

transmissão síncrona

Instrução que dá início à transmissão

Aguarda a transmissão de todos os bits.

Quando o processo acaba, o micro faz TI = 1.

Page 127: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

127Prof. José Wilson Lima Nerys 127 Microprocessadores

127

Taxa de comunicação (baud rate):

O pacote de comunicação inclui 8 bits de dados,

1 bit de start e um bit de stop.

Recepção: Fica habilitada fazendo REN = 1 e RI = 0.

Tem início quando há uma transição de nível alto para baixo no pino P3.0 (RxD)

Ao final da recepção o bit RI é setado por hardware, e deve ser ressetado por

software (CLR RI) antes da recepção seguinte.

O conteúdo recebido é transferido para o registrador SBUF.

Transmissão: É iniciada automaticamente quando o conteúdo de um

registrador é transferido para o registrador SBUF.

Ao final da transmissão o bit TI é setado por hardware, e deve ser ressetado

por software (CLR TI) antes da transmissão seguinte.

Serial – Modo 1 (assíncrono de 8 bits)

Bit 7 do registrador especial PCON

Recarga do Temporizador 1

no modo 2

Page 128: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

128Prof. José Wilson Lima Nerys 128 Microprocessadores

Rótulo Instruções

MOV SCON,#40H

MOV TMOD,#20H

MOV TH1,#0FDH

MOV TL1,#0FDH

SETB TR1

MOV A,#00H

V1: MOV SBUF,A

JNB TI,$

CLR TI

INC A

SJMP V1

END

Sinal de TxD (P3.1) durante uma

transmissão assíncrona no modo 1

Instrução que dá início à transmissão

Aguarda a transmissão de todos os bits.

Quando o processo acaba, o micro faz TI = 1.

Configura serial modo 1 (assíncrono modo 1)

Timer 1 no modo 2. Baud rate de 9600 bps, para

cristal de 11,0592 MHz.

Page 129: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

129Prof. José Wilson Lima Nerys 129 Microprocessadores

129

Transmissão Serial no Modo 1 ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV SCON,#40H

MOV TMOD,#20H

MOV TH1,#0FDH

MOV TL1,#0FDH

SETB TR1

MOV DPTR,#MSG1

V1: MOV R7,#00

V2: MOV A,R7

MOVC A,@A+DPTR

CJNE A,#0FFH,ENVIA

SJMP V1

ENVIA: MOV SBUF,A

JNB TI,$

CLR TI

INC R7

SJMP V2

MSG1: DB 'HELLO WORLD!!!', 0DH, 0FFH

MSG2: DB 'MICRO 2017 ', 0Dh, 0FFH

end Código ASCII para mudança de linha

Baud-rate de 9600 bps, no modo 1

Cristal oscilador: 11,0592 MHz

Page 130: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

130Prof. José Wilson Lima Nerys 130 Microprocessadores

130

; Transmissão de mensagem via serial. Cristal: 11.0592 MHz. Taxa de transmissão: 4800 bps

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH ; Posição inicial da Pilha: 2FH

MOV SCON,#40H ; Serial no modo 1: assíncrona de 8 bits

MOV TMOD,#20H ; Timer 1 no modo 2 (recarga automática)

MOV TH1,#0FAH ; Valor da recarga: FAH baud rate: 4800 bps

SETB TR1 ; Dispara Timer 1

MOV DPTR,#MSG ; DPTR assume o valor do endereço inicial da tabela MSG

V2: MOV R7,#00H ; Offset para leitura da MSG assume valor inicial 00H

V3: MOV A,R7 ; Acumulador recebe o valor atual do Offset

MOVC A,@A+DPTR ; Acumulador recebe o conteúdo da posição A+DPTR da MSG

CJNE A,#0FFH,V1 ; Verifica se A = FFH (fim da MSG). Se não for, desvia para V1

SJMP V2 ; Retorna para V2 após cada fim de MSG

V1: MOV SBUF,A ; Transfere de A para SBUF o valor ser transmitido via serial

JNB TI,$ ; Aguarda final da transmissão do conteúdo de SBUF

CLR TI ; Limpa a flag TI, de transmissão serial

INC R7 ; Incrementa o valor do Offset

SJMP V3 ; Retorna para V3, para ler o próximo caractere de MSG

MSG: DB ' MICRO 2016 ', 0DH, 0FFH

MSG1: DB 4DH, 49H, 43H, 52H, 4FH, 20H, 32H, 30H, 31H, 37H, 0DH, 0FFH

END

As mensagens MSG e MSG1

são equivalentes

Page 131: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

131Prof. José Wilson Lima Nerys 131 Microprocessadores

131

Recepção Serial no Modo 1 LAMP EQU P2.7

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV SCON,#40H

MOV TMOD,#20H

MOV TH1,#0FDH

MOV TL1,#0FDH

SETB TR1

CLR RI

SETB REN

MOV A,#01H

V0: JNB RI,$

MOV R0,SBUF

CLR RI

CJNE R0,#'D',V1

SJMP LED_DIREITA

V1: CJNE R0,#'E',V3

SJMP LED_ESQUERDA

V3: CJNE R0,#'L',V4

CPL LAMP

SJMP V0

Se R0 = 43H (ASCII de D),

rotaciona Leds para a direita.

Enquanto RI = 0, continua

rotacionando para a esquerda

Aguarda receber dados via serial

e transfere os dados para R0

V4: CJNE R0,#'M',V0

MOTOR: CLR P2.3

CPL P2.2

SJMP V0

LED_DIREITA:

V5: MOV P1,A

RR A

LCALL ATRASO

JNB RI,V5

SJMP V0

LED_ESQUERDA:

MOV R3,#64

V6: MOV P1,A

RL A

LCALL ATRASO

DJNZ R3,V6

SJMP V0

ATRASO: MOV R1,#100

V2: MOV R2,#200

DJNZ R2,$

DJNZ R1,V2

RET

END

Se R0 = 44H (ASCII de E),

rotaciona Leds para a esquerda.

São 64 passos para a esquerda,

que corresponde a 8 giros

completos para a esquerda.

Se R0 = 4CH (ASCII de L), aciona

a lâmpada (apaga/liga)

Se R0 = 4DH (ASCII de M),

aciona o motor CC (liga/desliga)

Page 132: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

132Prof. José Wilson Lima Nerys 132 Microprocessadores

132

Recepção Serial no Modo 1

Com interrupção

LAMP EQU P2.7

ORG 00H

LJMP INICIO

ORG 23H

MOV R0,SBUF

CLR RI

RETI

ORG 30H

INICIO: MOV SP,#2FH

MOV IE,#90H

MOV SCON,#40H

MOV TMOD,#20H

MOV TH1,#0FDH

MOV TL1,#0FDH

SETB TR1

CLR RI

SETB REN

MOV A,#01H

V0: CJNE R0,#'D',V1

SJMP LED_DIREITA

V1: CJNE R0,#'E',V3

SJMP LED_ESQUERDA

V3: CJNE R0,#'L',V4

SETB LAMP

SJMP V0

V4: CJNE R0,#'F',V5

CLR LAMP

SJMP V0

Se R0 = 43H (ASCII de D),

rotaciona Leds para a direita.

Continua rotação, até R0

receber outro caractere.

R0 recebe os dados recebidos

via serial, através de interrupção

V5: CJNE R0,#'M',V6

MOTOR: CLR P2.3

SETB P2.2

SJMP V0

V6: CJNE R0,#'N',V0

CLR P2.3

CLR P2.2

SJMP V0

LED_DIREITA:

MOV P1,A

RR A

LCALL ATRASO

SJMP V0

LED_ESQUERDA:

MOV P1,A

RL A

LCALL ATRASO

SJMP V0

ATRASO: MOV R1,#100

V2: MOV R2,#200

DJNZ R2,$

DJNZ R1,V2

RET

END

Se R0 = 44H (ASCII de E),

rotaciona Leds para a esquerda.

Enquanto R0 = 44H, continua

rotacionando para a esquerda

Se R0 = 4CH (ASCII de L), liga a

lâmpada.

Se R0 = 45H (ASCII de F),

desliga a lâmpada.

Se R0 = 4DH (ASCII de M),

aciona o motor CC (liga/desliga)

Page 133: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

133Prof. José Wilson Lima Nerys 133 Microprocessadores

133

Taxa de comunicação (baud rate):

O pacote de comunicação inclui 8 bits de dados, 1 bit extra (RB8 ou TB8), 1 bit de

start e um bit de stop. O bit extra pode ser a paridade.

Recepção: Fica habilitada fazendo REN = 1 e RI = 0.

Tem início quando há uma transição de nível alto para baixo no pino P3.0 (RxD)

Ao final da recepção o bit RI é setado por hardware, e deve ser ressetado por

software (CLR RI) antes da recepção seguinte.

O nono bit chega através do bit RB8.

Transmissão: É iniciada automaticamente quando o conteúdo de um

registrador é transferido para o registrador SBUF.

Ao final da transmissão o bit TI é setado por hardware, e deve ser ressetado

por software (CLR TI) antes da transmissão seguinte. O nono bit é

transmitido através de TB8.

Serial – Modo 2 (assíncrono de 9 bits)

Bit 7 do registrador especial PCON

Page 134: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

134Prof. José Wilson Lima Nerys 134 Microprocessadores

134

Taxa de comunicação (baud rate):

O pacote de comunicação inclui 8 bits de dados,

1 bit extra, 1 bit de start e um bit de stop.

Recepção: Fica habilitada fazendo REN = 1 e RI = 0.

Tem início quando há uma transição de nível alto para baixo no pino P3.0 (RxD)

Ao final da recepção o bit RI é setado por hardware, e deve ser ressetado por

software (CLR RI) antes da recepção seguinte.

O conteúdo recebido é transferido para o registrador SBUF.

Transmissão: É iniciada automaticamente quando o conteúdo de um

registrador é transferido para o registrador SBUF.

Ao final da transmissão o bit TI é setado por hardware, e deve ser ressetado

por software (CLR TI) antes da transmissão seguinte.

Serial – Modo 3 (assíncrono de 9 bits)

Bit 7 do registrador especial PCON

Recarga do Temporizador 1

no modo 2

Page 135: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

135Prof. José Wilson Lima Nerys 135 Microprocessadores

135

Page 136: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

136Prof. José Wilson Lima Nerys 136 Microprocessadores

136

Page 137: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

137Prof. José Wilson Lima Nerys 137 Microprocessadores

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 138: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

138Prof. José Wilson Lima Nerys 138 Microprocessadores

Mensagens: Computador Micro LCDRS EQU P3.5

RW EQU P3.6

EN EQU P3.7

DADOS EQU P0

ORG 00H

LJMP INICIO

ORG 23H

CLR RI

MOV A,SBUF

MOV P1,A

LCALL TEXTO_WR

RETI

ORG 30H

INICIO: MOV SP,#2FH

MOV SCON,#40H

MOV IE,#90H

MOV TMOD,#20H

MOV TL1,#0FDH

MOV TH1,#0FDH

MOV R7,#0FFH

SETB TR1

SETB REN

LCALL INICIA

SJMP $

INICIA: MOV A,#38H

LCALL INSTR_WR

MOV A,#38H

LCALL INSTR_WR

MOV A,#0EH

LCALL INSTR_WR

MOV A,#06H

LCALL INSTR_WR

MOV A,#01H

LCALL INSTR_WR

RET

INSTR_WR: SETB EN

CLR RW

CLR RS

MOV DADOS,A

CLR EN

LCALL ATRASO_LCD

RET

TEXTO_WR:SETB EN

CLR RW

SETB RS

MOV DADOS,A

CLR EN

LCALL ATRASO_LCD

RET

ATRASO_LCD:

MOV R4,#10

V6: MOV R5,#80

DJNZ R5,$

DJNZ R4,V6

RET

END

Serial_LCD_22_6.asm

Subrotina de inicialização do LCD

Subrotina para escrever

instrução no LCD

Subrotina para escrever

dados no LCD

A recebe valor via serial e

envia para P1 e para o LCD

Page 139: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

139Prof. José Wilson Lima Nerys 139 Microprocessadores

139

Rótulo Mnemônico

ORG 00H

LJMP INICIO

ORG 23H

CLR RI

MOV R0,SBUF

RETI

ORG 30H

INICIO: MOV SP,#2FH

MOV SCON,#40H

MOV IE,#90H

MOV TMOD,#20H

MOV TL1,#0FDH

MOV TH1,#0FDH

MOV R0,#00H

MOV A,#11H

SETB TR1

SETB REN

Rótulo Mnemônico

V2: CJNE R0,#44H,V1

LJMP DIREITA

V1: CJNE R0,#45H,V2

LJMP ESQUERDA

DIREITA: MOV P1,A

RR A

LCALL ATRASO

SJMP V2

ESQUERDA: MOV P1,A

RL A

LCALL ATRASO

SJMP V2

ATRASO: MOV R7,#200

V3: MOV R6,#250

DJNZ R6,$

DJNZ R7,V3

RET

END

Motor de Passo via serial

Serial_Passo_22_6.asm

Page 140: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

140Prof. José Wilson Lima Nerys 140 Microprocessadores

140

CHAVE EQU P3.3 ; CHAVE (P3.3) – MOTOR LIGA (P3.3 = 0) OU DESLIGA (P3.3 = 1)

STATUS EQU 22H ; registrador que guarda o estado das chaves

M0 EQU P2.2 ; IN0 do driver para acionamento do motor CC

M1 EQU P2.3 ; IN1 do driver para acionamento do motor CC

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH ; Pilha no endereço inicial 2Fh

MOV TMOD,#20H ; Temporizador 1 no modo 2 (recarga automática) para o gerar o baud rate

MOV SCON,#40H ; SCON = 0100 0000 – Serial no modo 1

MOV TH1,#0FAH ; Recarga para baud rate de 4800 bps

MOV TL1,#0FAH ; Valor inicial de contagem, desde a primeira contagem

SETB TR1 ; Dispara temporizador 1

MOV R7,#00H ; Contador (offset) para leitura das mensagens a serem enviadas via serial

MOV STATUS,#00H ; Zera o registrador de STATUS para eliminar a possibilidade de “lixo”

CLR M0

CLR M1 ; Motor CC parado

V1: MOV A,P3 ; Leitura da porta P3 (onde está a chave que liga e desliga o motor)

ANL A,#00001000B ; Faz uma operação AND entre A e 08H, para isolar o pino P3.3

XRL A,STATUS ; Verifica se houve alteração no STATUS

JZ V1 ; Se A XOR STATUS for zero, não houve mudança, então volta para V1 (A=0 e Z=1)

; Se houve mudança na posição da CHAVE, atualiza a situação e o STATUS

JNB CHAVE,LIGA_M ; Se CHAVE = 0, liga o motor

MOV DPTR,#M_OFF ; DPTR aponta para o início da mensagem de motor desligado

LCALL SERIAL ; Chama subrotina para mostrar a mensagem de motor desligado

CLR M0

CLR M1 ; Motor desligado

SETB STATUS.3 ; Atualiza registrador de STATUS com valor 1 na posição STATUS.3

SJMP V1

Serial_estado_22_6.asm

Transfere conteúdo de P3 para A, isola o pino P3.3

e verifica se houve mudança de estado

Page 141: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

141Prof. José Wilson Lima Nerys 141 Microprocessadores

141

LIGA_M: MOV DPTR,#M_ON ; DPTR aponta para o início da mensagem de motor ligado

LCALL SERIAL ; Chama subrotina para mostrar a mensagem de motor ligado

SETB M0

CLR M1 ; Motor ligado

CLR STATUS.3 ; Atualiza registrador de STATUS com valor 0 na posição STATUS.3

SJMP V1

SERIAL: MOV A,R7 ; Transfere para A o valor do offset

MOVC A,@A+DPTR ; A recebe o conteúdo da tabela

CJNE A,#0FFH,ENVIA ; Verifica se já chegou ao final da tabela

MOV R7,#00H ; Se a tabela já acabou, faz R7 = 0

RET ; Retorna da subrotina SERIAL

ENVIA: MOV SBUF,A ; Envia conteúdo da tabela/mensagem para o computador

JNB TI,$ ; Aguarda terminar a transmissão

CLR TI ; limpa flag de transmissão

INC R7 ; incrementa R7 (offset para leitura da tabela / mensagem)

SJMP SERIAL ; retorna para SERIAL

M_ON: DB 'MOTOR DE CORRENTE CONTINUA LIGADO', 0DH, 0DH, 0FFH

M_OFF: DB 'MOTOR DE CORRENTE CONTINUA DESLIGADO', 0DH, 0DH, 0FFH

END

Continuação do programa Serial_estado_22_6.asm

Page 142: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

142Prof. José Wilson Lima Nerys 142 Microprocessadores

Aula Data Conteúdo

10 13/04 (Qui) Instruções básicas do microcontrolador 8051

11 18/04 (Ter) Programação usando o assembly do 8051

12 20/04 (Qui) Programação usando o assembly do 8051

13 25/04 (Ter) Princípio de funcionamento das interrupções do 8051

14 27/04 (Qui) Programação com e sem interrupções

15 02/05 (Ter) Programação do 8051 com e sem interrupções

04/05 (Qui) CET

16 09/05 (Ter) Programação do 8051 com e sem interrupções

17 11/05 (Qui) Princípio de funcionamento dos temporizadores do microcontrolador 8051

18 16/05 (Ter) Programação utilizando interrupções e temporizadores do microcontrolador 8051

19 18/05 (Qui) Programação utilizando interrupções e temporizadores do microcontrolador 8051

20 23/05 (Ter) Princípio de funcionamento da comunicação serial

21 25/05 (Qui) Programação utilizando a comunicação serial

22 30/05 (Ter) Programação utilizando a comunicação serial

23 01/06 (Qui) Prova 2 – conteúdo das aulas 10 a 22 (interrupções, temporizadores e serial do 8051)

Page 143: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

143Prof. José Wilson Lima Nerys 143 Microprocessadores

143143

Rótulo Mnemônico

ORG 00H

LJMP INICIO

ORG 23H

CLR RI

MOV R0,SBUF

RETI

ORG 30H

INICIO: MOV SP,#2FH

MOV SCON,#40H

MOV IE,#90H

MOV TMOD,#20H

MOV TL1,#0FDH

MOV TH1,#0FDH

MOV R0,#00H

MOV A,#01H

SETB TR1

SETB REN

Rótulo Mnemônico

V2: CJNE R0,#44H,V1

MOV B,#44H

SJMP DIREITA

V1: CJNE R0,#45H,V4

MOV B,#45H

SJMP ESQUERDA

V4: CJNE R0,#50H,V5

SJMP V2

V5: MOV R0,B

SJMP V2

DIREITA: MOV P1,A

RR A

LCALL ATRASO

SJMP V2

ESQUERDA: MOV P1,A

RL A

LCALL ATRASO

SJMP V2

END

Rotação de Leds via serial

Serial_

Leds_28_6.a

sm

Page 144: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

144Prof. José Wilson Lima Nerys 144 Microprocessadores

Acionamentos diversos com informação de status para o computador

Page 145: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

145Prof. José Wilson Lima Nerys 145 Microprocessadores

145

CH_STEP EQU P2.0

CH_MCC EQU P2.1

CH_LAMP EQU P2.2

M0 EQU P0.0

M1 EQU P0.1

LAMP EQU P0.7

STATUS EQU 22H

ORG 00H

LJMP INICIO

ORG 30H

INICIO: MOV SP,#2FH

MOV TMOD,#20H

MOV SCON,#40H

MOV TH1,#0FAH

MOV TL1,#0FAH

SETB TR1

MOV R7,#00H

MOV P1,#00H

MOV STATUS,#00H

CLR M0

CLR M1

CLR LAMP

V1: MOV A,P2

ANL A,#00000111B

XRL A,STATUS

JZ V1

;== Acionamento da Lâmpada ===========

V5: JNB CH_LAMP,LIGA_Lamp

MOV DPTR,#Lamp_OFF

LCALL SERIAL

CLR LAMP

SETB STATUS.2

SJMP V2

LIGA_Lamp: MOV DPTR,#Lamp_ON

LCALL SERIAL

SETB LAMP

CLR STATUS.2 ;

;== Acionamento do Motor CC ============

V2: JNB CH_MCC,LIGA_M

MOV DPTR,#M_OFF

LCALL SERIAL

CLR M0

CLR M1

SETB STATUS.1

SJMP V3

LIGA_M: MOV DPTR,#M_ON

LCALL SERIAL

SETB M0

CLR M1

CLR STATUS.1

STATUS indica o estado atual

dos dispositivos.

STATUS.0 = 0 motor de

passo ligado

STATUS.1 = 0 motor CC

ligado

STATUS.2 = 0 lâmpada

ligada

Compara o estado atual das

chaves (leitura de P2) com o

conteúdo de STATUS

(XRL A,STATUS).

Enquanto eles forem iguais

(Z=1), aguarda no loop.

Quando houver mudança da

posição de qualquer das

chaves, sai desse loop e

atualiza tudo.

Envia a atualização via serial

Page 146: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

146Prof. José Wilson Lima Nerys 146 Microprocessadores

;== Acionamento do Motor de Passo =======

V3: JNB CH_STEP,LIGA_P

MOV DPTR,#PASSO_OFF

LCALL SERIAL

MOV P1,#00H

SETB STATUS.0

SJMP V1

LIGA_P:MOV DPTR,#PASSO_ON

LCALL SERIAL

CLR STATUS.0

MOV R6,#11H

V6: MOV P1,R6

LCALL ATRASO

MOV A,P2

ANL A,#00000111B

XRL A,STATUS

JNZ V5

MOV A,R6

RL A

MOV R6,A

SJMP V6

;== Envia Mensagem via Serial =======

SERIAL: MOV A,R7

MOVC A,@A+DPTR

CJNE A,#0FFH,ENVIA

MOV R7,#00H

RET

ENVIA: MOV SBUF,A

JNB TI,$

CLR TI

INC R7

SJMP SERIAL

ATRASO: MOV R0,#100

V4: MOV R1,#150

DJNZ R1,$

DJNZ R0,V4

RET

Lamp_ON: DB 'Lampada Ligada', 0DH, 0FFH

Lamp_OFF: DB 'Lampada Desligada', 0DH, 0FFH

M_ON: DB 'Motor de Corrente Continua Ligado', 0DH, 0FFH

M_OFF: DB 'Motor de Corrente Continua Desligado', 0DH, 0FFH

PASSO_ON: DB 'Motor de Passo Ligado', 0DH, 0DH, 0FFH

PASSO_OFF: DB 'Motor de Passo Desligado', 0DH, 0DH, 0FFH

END

Para manter o motor de passo

ligado, é necessário

rotacionar os bits da porta P1.

Assim, é necessário manter-

se nesse loop de V6,

verificando se há mudança

em alguma chave.

Page 147: MICROPROCESSADORES E MICROCONTROLADORES Parte …jwilson/pdf/Micro_Parte_2_(8051).pdf · 11 18/04 (Ter) Programação usando o assembly do 8051 12 20/04 (Qui) Programação usando

Universidade Federal de GoiásEscola de Engenharia Elétrica, Mecânica e de Computação

147Prof. José Wilson Lima Nerys 147 Microprocessadores

Bibliografia

[1] Salvador P. Gimenez, “Microcontroladores 8051: Teoria do hardware

e do software/Aplicações em controle digital/Laboratório e simulação”,

Pearson Education do Brasil, São Paulo, 2002.

ISBN: 85.87918-28-1.

[2] Vidal Pereira da Silva Jr., “Aplicações Práticas do Microcontrolador

8051”, Editora Érica, São Paulo, 1994.

ISBN: 85-7194-194-7

[3] Sencer Yeralan, Ashutosh Ahluwalia, “Programming and Interfacing the

8051 Microcontroller”, Addison-Wesley Publishing Company, 1995.

ISBN: 0-201-63365-5.