29
Programação Assembly 8051 – Aula 1 31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 1

Aula 1 - Assembly - 8051

Embed Size (px)

Citation preview

Page 1: Aula 1 - Assembly - 8051

Programação Assembly

8051 – Aula 1

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 1

Page 2: Aula 1 - Assembly - 8051

Agora, vamos ao que interessa...

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 2

Page 3: Aula 1 - Assembly - 8051

Descrição

A família de microcontroladores MCS-51TM, desenvolvida, fabricada e comercializada pela Intel é baseada em padrões industriais de microcontroladores de 8 bits, sendo o 8051 o componente inicial desta família. O 8051 possui 128 bytes de RAM, 4 Kbytes de memória de programa, 2 contadores/temporizadores de 16 bits e 32 linhas de entrada/saída bidirecionais e individualmente endereçáveis – 4 portas de E/S.

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 3

Page 4: Aula 1 - Assembly - 8051

Partes do microcontrolador

• CPU: tem a função de acionar e se comunicar com todos os barramentos obedecendo as diretivas gravadas na ROM. É responsável pela execução de instruções programadas, interpretar e executar comandos.

• Memória: utiliza uma memória ROM para ler as instruções que deve executar e se utiliza de uma memória RAM para armazenar temporariamente dados de uso das instruções ou variáveis do programa.

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 4

Page 5: Aula 1 - Assembly - 8051

Partes do microcontrolador

• Periféricos de E/S: são todos os dispositivos externos ligados à CPU, como teclados, displays, motores, timers, porta serial etc.

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 5

Page 6: Aula 1 - Assembly - 8051

CPU

• Unidade de Controle: processa o controle do fluxo das informações a fim de executar a instrução recebida pela ROM. Envia impulsos elétricos para controlar em sequencia apropriada e sincronizada as operações dos componentes.

• Unidade de lógica e aritmética: realiza todas as operações de lógica e aritmética da CPU.

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 6

Page 7: Aula 1 - Assembly - 8051

CPU

• Unidade de registradores: servem para o armazenamento temporário de dados de utilidade interna e externa à CPU. Proporcionam um tempo rápido de transferência de bits. Dentre eles podemos destacar o contador de programa, o registro de instruções e o acumulador.

• Contador de programa: armazena o endereço da célula que contém o código da próxima instrução a ser executada.

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 7

Page 8: Aula 1 - Assembly - 8051

CPU

• Acumulador: principal registrador da CPU, pois várias instruções se referem a ele para operar, como por exemplo ADD A,#40H. O resultado das operações é guardado no próprio acumulador.

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 8

Page 9: Aula 1 - Assembly - 8051

Arquitetura interna

Está dividida em unidade de processamento central, oscilador interno, memória ROM interna, memória RAM interna, dois temporizadores, uma porta serial, quatro portas paralelas de 8 bits, circuito de controle de interrupção e circuito de controle de barramento.

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 9

Page 10: Aula 1 - Assembly - 8051

Arquitetura externa

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 10

AT89S52

Page 11: Aula 1 - Assembly - 8051

Arquitetura externa

• VCC E GND: Entradas de tensão de alimentação de +5V e Terra.

• Porta 0 (P0.7 a P0.0): Porta bidirecional de 8 bits, com saída de dreno aberto, ou entrada de alta impedância. Multiplexa o barramento de dados e o barramento de endereços. Pode servir como saída de bytes de instrução, sendo necessária a colocação de resistores de pull-up’s externos. Seus pinos podem ser individualmente endereçáveis.

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 11

Page 12: Aula 1 - Assembly - 8051

Arquitetura externa

• Porta 1 (P1.7 a P1.0): Nenhuma função alternativa está associada a esta porta, ela é usada apenas para conectar dispositivos externos. Necessita de pull-up’s externos para suprir ou drenar cargas. Seus pinos podem ser individualmente endereçáveis.

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 12

Page 13: Aula 1 - Assembly - 8051

Arquitetura externa

• Porta 2 (P2.7 a P2.0): é bidirecional de 8 bits com resistores de pull-up’s internos. Seus pinos podem suprir ou drenar cargas TTL sem resistores externos e podem ser individualmente endereçáveis.

• Porta 3 (P3.7 a P3.0): Porta de 8 bits bidirecional. Seus pinos podem ser individualmente endereçáveis, servindo também para as funções especiais descritas a seguir.

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 13

Page 14: Aula 1 - Assembly - 8051

Arquitetura externa BIT NOME FUNÇÃO ALTERNATIVA

P3.0 RXD Receptor da porta serial assíncrona.

P3.1 TXD/ clock

Saída de transmissão da porta serial ou saída de clock para os registradores de deslocamento externos.

P3.2 INT0 Interrupção externa 0 ou bit de controle para o timer/contador 0.

P3.3 INT1 Interrupção externa 1 ou bit de controle para o timer/contador 1.

P3.4 T0 Entrada para o timer/contador 0.

P3.5 T1 Entrada para o timer/contador 1.

P3.6 WR Strobe de escrita na memória externa.

P3.7 RD Strobe de leitura na memória externa.

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 14

Page 15: Aula 1 - Assembly - 8051

Arquitetura externa

0 0 0 0 0 0 0 0

31 de julho de 2012 15 Minicurso: Assembly para 8051 GDESTE

SETB P1.2

P1

0 0 0 0 0 1 0 0 P1

MOV P1,#075H

0 1 1 1 0 1 0 1 P1

CLR P1.6

0 0 1 1 0 1 0 1 P1

MOV P1,#00H

0 0 0 0 0 0 0 0 P1

Page 16: Aula 1 - Assembly - 8051

Arquitetura externa

• RESET: Um nível alto nesse pino realiza uma inicialização do circuito.

• EA: Deve ser ligado ao nível alto, para que o processador tenha acesso a memória interna de programa. Se estiver ligado ao nível baixo, toda a área de programa será considerada externa.

• XTAL1 e XTAL2: entradas para o clock externo.

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 16

Page 17: Aula 1 - Assembly - 8051

Memória

O 𝜇 C8051 contém 210 localizações de bits endereçáveis, dos quais 128 são os bytes endereçados de 20H até 2FH e os restantes estão nos registros de funções especiais.

31 de julho de 2012 17 Minicurso: Assembly para 8051 GDESTE

Page 18: Aula 1 - Assembly - 8051

Memória

31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 18

7F

30 RAM de propósito geral

2F 7F 7E 7D 7C 7B 7A 79 78

2E 77 76 75 74 73 72 71 70

2D 6F 6E 6D 6C 6B 6A 69 68

2C 67 66 65 64 63 62 61 60

2B 5F 5E 5D 5C 5B 5A 59 58

2A 57 56 55 54 53 52 51 50

29 4F 4E 4D 4C 4B 4A 49 48

28 47 46 45 44 43 42 41 40

27 3F 3E 3D 3C 3B 3A 39 38

26 37 36 35 34 33 32 31 30

25 2F 2E 2D 2C 2B 2A 29 28

24 27 26 25 24 23 22 21 20

23 1F 1E 1D 1C 1B 1A 19 18

22 17 16 15 14 13 12 11 10

21 0F 0E 0D 0C 0B 0A 09 08

20 07 06 05 04 03 02 01 00

1F 18

Banco 3

17 10

Banco 2

0F 08

Banco 1

07 00

Banco 0

Loca

lizaç

ão d

os

bit

s e

nd

ere

çáve

is

RAM

Page 19: Aula 1 - Assembly - 8051

Memória

31 de julho de 2012 19 Minicurso: Assembly para 8051 GDESTE

FF

F0 F7 F6 F5 F4 F3 F2 F1 F0 B

E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC

D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW

B8 BF BE BD BC BB BA B9 B8 IP

B0 B7 B6 B5 B4 B3 B2 B1 B0 P3

A8 AF AE AD AC AB AA A9 A8 IE

A0 A7 A6 A5 A4 A3 A2 A1 A0 P2

99 Bits não endereçáveis SBUF

98 9F 9E 9D 9C 9B 9A 99 98 SCON

90 97 96 95 94 93 92 91 90 P1

8B Bits não endereçáveis TH1

8C Bits não endereçáveis TH0

8B Bits não endereçáveis TL1

8A Bits não endereçáveis TL0

89 Bits não endereçáveis TMOD

88 8F 8E 8D 8C 8B 8A 89 88 TCON

87 Bits não endereçáveis PCON

83 Bits não endereçáveis DPH

82 Bits não endereçáveis DPL

81 Bits não endereçáveis SP

80 87 86 85 84 83 82 81 80 P0

REGISTROS DE FUNÇÕES ESPECIAIS

Loca

lizaç

ão d

os

bit

s e

nd

ere

çáve

is

Page 20: Aula 1 - Assembly - 8051

Banco de registros

O conjunto de instruções do 8051 contem 8 registros, R0 até R7 e por default estão com endereços de 00H-07H. O banco de registro ativo pode ser alterado trocando os bits de seleção dos bancos de registros. A ideia de banco de registros permite uma rápida e efetiva troca de dados.

31 de julho de 2012 20 Minicurso: Assembly para 8051 GDESTE

Page 21: Aula 1 - Assembly - 8051

Outros registros

Acumulador; Registrador B; Registro dos temporizadores; Registro de palavra de status de programa (PSW); DPTR; SP; SBUF; PCON.

31 de julho de 2012 21 Minicurso: Assembly para 8051 GDESTE

Page 22: Aula 1 - Assembly - 8051

Primeiro contato com o Assembly

• Diretiva ORG: altera a localização para iniciar a nova contagem do programa.

• END: Finaliza o processo de montagem.

• EQU: iguala um rótulo com outro ou com um valor numérico. Exemplos:

LED EQU P2.0 DEZ EQU 10

31 de julho de 2012 22 Minicurso: Assembly para 8051 GDESTE

Page 23: Aula 1 - Assembly - 8051

Conjunto de instruções

As operações possuem diferentes modos de endereçamento.

ADD A , 7FH ; Endereçamento direto

ADD A , @R0 ; Endereçamento indireto

ADD A , R7 ; Endereçamento de registro

ADD , #10H ; Endereçamento imediato

31 de julho de 2012 23 Minicurso: Assembly para 8051 GDESTE

Page 24: Aula 1 - Assembly - 8051

Instruções Aritméticas MNEMÔNICO OPERAÇÃO TEMPO DE EXECUÇÃO(𝜇s)

ADD A, <byte> A = A + <byte> 1

ADDC A, <byte> A = A + <byte> + C 1

SUBB A, <byte> A = A + <byte> - C 1

INC A A = A + 1 1

INC <byte> <byte> = <byte> + 1 1

INC DPTR DPTR = DPTR + 1 2

DEC A A = A – 1 1

DEC <byte> <byte> = <byte> -1 1

MUL AB B,A = B X A 4

DIV AB A = Int(A/B) e B = Resto(A/B)

4

31 de julho de 2012 24 Minicurso: Assembly para 8051 GDESTE

Page 25: Aula 1 - Assembly - 8051

Instruções de transferência

31 de julho de 2012 25 Minicurso: Assembly para 8051 GDESTE

MNEMÔNICO OPERAÇÃO TEMPO DE EXECUÇÃO(𝜇s)

MOV A, <fonte> A = <fonte> 1

MOV <destino> , A <destino> = A 1

MOV <destino> , <fonte> <destino> = <fonte> 2

XCH A,<byte> Troca dados 1

MOV DPTR,#<2bytes> DPTR = <2bytes> 2

Exemplos: MOV R7,#10H MOV A,R0 MOV SP,#5FH

Page 26: Aula 1 - Assembly - 8051

Instruções booleanas

31 de julho de 2012 26 Minicurso: Assembly para 8051 GDESTE

MNEMÔNICO OPERAÇÃO TEMPO DE EXECUÇÃO(𝜇s)

ANL C,<bit> C = C AND <bit> 2

ORL C,<bit> C = C OR <bit> 2

SETB <bit> <bit> = 1 1

CLR <bit> <bit> = 0 1

CPL <bit> <bit> = NOT <bit> 1

MOV C, <bit> C = <bit> 1

MOV C, /<bit> C = NOT <bit> 1

Page 27: Aula 1 - Assembly - 8051

Exemplo: LOOP: MOV C,P1.0 ANL C,P1.1 MOV P1.2,C AJMP LOOP

31 de julho de 2012 27 Minicurso: Assembly para 8051 GDESTE

Instruções booleanas

P1.0

P1.1

P1.2

8051

Page 28: Aula 1 - Assembly - 8051

Prática 1: Criando uma porta NOR

ORG 00H AJMP LOOP ENT1 EQU P1.0 ENT2 EQU P1.1 SAIDA EQU P2.0 LOOP: MOV C,ENT1 ORL C,ENT2 CPL C MOV SAIDA,C AJMP LOOP END

31 de julho de 2012 28 Minicurso: Assembly para 8051 GDESTE

Page 29: Aula 1 - Assembly - 8051

ORG 00H AJMP INICIO LED EQU P2.0 DELAY: MOV R2,#10 VOLTA2: MOV R1,#200 VOLTA: MOV R0,#250 DJNZ R0,$ DJNZ R1,VOLTA DJNZ R2,VOLTA2 RET INICIO: CLR LED ;LED inicia desligado LOOP: CPL LED ACALL DELAY AJMP LOOP END

31 de julho de 2012 29 Minicurso: Assembly para 8051 GDESTE

Prática 2: Pisca LED