Post on 11-Jul-2015
Programação Assembly
8051 – Aula 1
31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 1
Agora, vamos ao que interessa...
31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 2
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
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
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
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
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
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
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
Arquitetura externa
31 de julho de 2012 Minicurso: Assembly para 8051 GDESTE 10
AT89S52
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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