MICRO CONTROLADORES
MCS-51
RICARDO ZELENOVSKY ASESSOR TCNICO ESPE
DEDICATRIA: a Maria Antonia, Guilherme e Henrique.
MICRO
CONTROLADORES
MCS-51
RICARDO ZELENOVSKY
*RD
MEMORIAS
AO..A15
*RD
*WR
*PSEN
BOOT
*BOOTAD0..AD7
*RD
RST
P1.7
GRAVADOR
A0..A15
*RD
*WR
RST
P1.7
P1.6
AD0..AD7
VCC
R247KD11N4148
R182
SW1
SW PUSHBUTTON
C1
10u
1 2U5A
74LS14P1.6 *WR *WR
*PSEN
BOOT
*BOOT
A0A1A2
AD0AD1AD2
D0 3 Q0 2D1 4 Q1 5D2 7 Q2 6D3 8 Q3 9D4 13 Q4 12D5 14 Q5 15D6 17 Q6 16D7 18 Q7 19
OC 1G 11
U2
74LS373
AD0AD1AD2
EA/VP 31
X1 19
X2 18
RESET 9
INT0 12INT1 13T0 14T1 15
P1.0 1P1.1 2P1.2 3P1.3 4P1.4 5P1.5 6P1.6 7P1.7 8
P0.0 39P0.1 38P0.2 37P0.3 36P0.4 35P0.5 34P0.6 33P0.7 32
P2.0 21P2.1 22P2.2 23P2.3 24P2.4 25P2.5 26P2.6 27P2.7 28
RD 17WR 16
PSEN 29ALE/P 30
TXD 11RXD 10
U1
8031
C330p
RST
C2
30p
X13575611Hz
*RST11 10 U5E
74LS14
VCC
LED6
Q_AM
R9220
VCC
R4
220
R5
220
LED3
R_AM
LED2
R_VMP1.0 3 4 U5B
74LS14
5 6 U5C74LS14
RST
BOOT RST
AD3AD4AD5AD6AD7
A8A9
AD3AD4AD5AD6AD7
ALE
A3A4A5A6A7
VCC
TXD
INTERF-SERIAL
TXD
RXD
VCC
25V
A10A11A12A13A14A15
*RD*WR
P1.0P1.1P1.2P1.3
*INT0*INT1T0T1
RAM
X
LED1 (Q_VD)ON --> BOOT SERIAL
1 ROM
0 RAM
P1.1
P1.2 9 8 U5D74LS14
R6
220
LED4
R_VD
SW2
SW PUSHBUTTON
SW3
SW PUSHBUTTON
P1.3
*INT1T1
OFF --> PROG RAM(BOOT=1)
(BOOT=0)
VCC
R92K2
P1.4P1.5P1.6P1.7
LED1
Q_VD
PSEN
TXDRXD
BOOT
RXD25V
*BOOTR3220
D 2
Q 5
CLK 3
Q 6
PR
4
CL
1
U8A
74LS74
C41u
LED5
Q_VM
11 10U5E
74LS14
R7220
*INT0
VCC
SW4
SW SPST
R88K2
FECHADA
ABERTA S STEP
(Q_VM OFF)
(Q_VM ON)
RST
VCC
BOOT
*BOOTRUN
*PSEN *RD *WR
PREFCIO
viii MICROCONTROLADORES (MCS-51)
PREFCIO
Este trabalho surgiu para concretizar os conhecimentos e idias desenvolvidas nos
Seminrios de Microcontroladores ministrados na Faculdade de Eletrnica da Escola Politcnica
Superior do Exrcito Equatoriano. Nestes seminrios se desenvolveu um conjunto hardware-software
que provou ser muito didtico para a aprendizagem de microcontroladores da famlia MCS-51.
Aqui se pretende estudar de forma prtica a famlia MCS-51. Portanto, junto com a
exposio da teoria sero provados os conceitos no hardware desenvolvido. Isto permitir uma slida
aprendizagem por parte dos estudantes. Este hardware recebe os programas pela porta serial de um
computador e os executa em seguida. Isso permite uma interao dinmica por parte dos estudantes
que podem escrever programas e testa-los imediatamente. Se houver erros, estes so corrigidos e o
novo programa novamente enviado ao hardware.
Todo o estudo se baseia no 8031, o membro mais simples da famlia MCS-51. Sero
estudadas entretanto as principais diferenas para os demais membros. Neste estudo se supe que
os estudantes possuem conceitos de eletrnica, microprocessadores (8080, 8085 ou Z-80) e
programao assembly. Tambm ser til a disponibilidade de um computador compatvel com IBM
PC.
O texto est organizado por captulos e apndices.
No Captulo 1 foi feita uma pequena reviso histrica, se conceitua o que um
microcontrolador e se apresenta uma pequena relao com os principais fabricantes da famlia MCS-
51.
No Captulo 2 se conceitua a famlia MCS-51 e so apresentados os principais
membros desta. Aqui se estuda a conexo com as memrias e tambm a arquitetura da RAM
interna.
No Captulo 3 so apresentados todos os pinos do microcontrolador e descritas suas
funes. Tambm so estudados os diagramas de tempo. Neste captulo apresentado o hardware
a ser construdo.
O Captulo 4 trata do estudo e prtica do conjunto de instrues da famlia MCS-51. Ao
final so propostos diversos exerccios de programao, parte deles com as respostas.
No Captulo 5 so apresentadas as ferramentas de programao. Basicamente se
utilizar o assembler e simulador da Avocet (AVMAC51, AVLINK, AVSIM51). As ferramentas mais
importantes sero o assembler e o linker. O simulador estudado somente para ser usado como um
meio auxiliar.pois se tem um hardware para testar os programas desenvolvidos.
PREFCIO
MICROCONTROLADORES (MCS-51) ix
A partir do Captulo 6 sero estudados e praticados os recursos que a famlia MCS-51
oferece. Neste Captulo so estudadas as portas paralelas e em seguida se fazem prticas com o
hardware.
No Captulo 7 so apresentadas as interrupes e tambm prticas no hardware. Aqui
se propem os princpios para realizao de um controle passo a passo.
No Captulo 8 so estudados e praticados os contadores/temporizadores.
O Captulo 9 aborda a porta serial. Aqui tambm se prope um pequeno programa que
permite ao hardware receber os programas do PC via porta serial.
No Captulo 10 se estuda a economia de energia e a programao da EPROM que h
em alguns membros da famlia. Aqui se prope um pequeno gravador para essa EPROM.
No Apndice 1 se descreve completamente o programa "BOOT SERIAL" que permite
ao hardware receber os programas que o PC envia pela porta serial. Aqui est a listagem completa
do programa.
No Apndice 2 descrito o programa "SINGLE STEP" que permite ao hardware o
controle passo a passo. apresentada uma listagem completa dos programas.
No Apndice 3 se faz um pequeno estudo das portas seriais do PC. Aqui se explica o
programa "TODO" e tambm uma listagem completa em C.
Este trabalho uma realidade graas amizade de Brasil e Equador, em particular, se
deve cooperao que h entre os Exrcitos destes dois pases irmos. Agradeo o apoio recebido
na ESPE, particularmente por parte do Departamento de Ensino e da Faculdade de Eletrnica. Aos
professores desta Faculdade se deve o desenvolvimento dos seminrios e sugestes aqui presentes.
A traduo para espanhol pde ser feita graas ao empenho dos alunos de Nvel X de 1993 e de
Nvel IX de 1994.
Devo agradecer os engenheiros Ruben Len e Vinicio Carrera pelas sugestes e
empenho nos trabalhos de correo deste texto, ao engenheiro Fabricio Morales pela colaborao no
desenvolvimento dos programas e aos alunos Eduardo Torres e Ivan Cisneros se deve a construo
e testes do novo hardware didtico.
Agradeo ao aluno Marco Zavala pela ajuda nas apuradas correes.
RICARDO ZELENOVSKY
NDICE
MICROCONTROLADORES (MCS-51) iii
NDICE PREFCIO viii
CAPTULO I MICROCONTROLADORES 1-1 1.1. REVISO HISTRICA 1-1
1.2. POR QU MICROCONTROLADORES ? 1-3
1.3. MICROCONTROLADORES 1-4
1.4. FAMLIAS DA INTEL 1-5
CAPTULO II FAMLIA MCS-51 2-1 2.1. INTRODUO 2-1
2.2. FAMLIA MCS-48 2-1
2.3. FAMLIA MCS-51 2-2
2.4. MEMRIA EXTERNA 2-3
2.5. MEMRIA INTERNA (RAM INTERNA) 2-7
2.6. SFR - SPECIAL FUNCTION REGISTERS 2-9
2.7. MAPA DA RAM INTERNA 2-11
2.8. MAPA DOS BITS 2-13
CAPTULO III PINAGEM E TEMPORIZAO 3-1 3.1. INTRODUO 3-1
3.2. DESCRIO DA PINAGEM 3-1
3.3. DIAGRAMAS DE TEMPO 3-3
3.4. RESET 3-6
CAPTULO IV CONJUNTO DE INSTRUES 4-1 4.1. INTRODUO 4-1
4.2. MODOS DE ENDEREAMENTO 4-2
4.3. SOBRE AS INSTRUES 4-3
4.4. INSTRUES ARITMTICAS 4-3
4.4.1. Soma de 8 Bits 4-3
4.4.2. Soma de 8 Bits com Carry 4-4
4.4.3. Subtrao de 8 Bits com Borrow 4-4
4.4.4. Incremento de 8 Bits 4-4
4.4.5. Decremento de 8 Bits 4-4
NDICE
iv MICROCONTROLADORES (MCS-51)
4.4.6. Incremento de 16 Bits 4-5
4.4.7. Multiplicao e Diviso de 8 Bits 4-5
4.4.8. Ajuste Decimal 4-5
4.5. INSTRUES LGICAS 4-6
4.5.1. AND de 8 Bits 4-6
4.5.2. OR de 8 Bits 4-7
4.5.3. XOR de 8 Bits 4-7
4.5.4. Operaes Lgicas com o Acumulador 4-7
4.6. INSTRUES DE TRANSFERNCIA DE DADOS 4-8
4.6.1. Transferncia de Dados 4-8
4.6.2. Permutao de Bytes 4-10
4.6.3. Permutao de Nibble 4-10
4.6.4. Operaes com a Pilha 4-10
4.6.5. Transferncia de Dados com a Memria de Dados Externa 4-11
4.6.6. Leitura da Memria de Programa 4-11
4.7. INSTRUES BOOLEANAS 4-11
4.7.1. Zerar/Setar/Complementar um Bit 4-12
4.7.2. AND/OR Booleano 4-12
4.7.3. Movimento de Bits 4-12
4.7.4. Desvios Baseados em Bits 4-12
4.8. INSTRUES DE DESVIO 4-13
4.8.1. Chamadas de subrotinas 4-13
4.8.2. Retorno de Subrotinas 4-13
4.8.3. Desvios 4-14
4.8.4. Desvios Condicionais 4-14
4.8.5. Loops 4-14
4.8.6. No Operao 4-15
4.9. INSTRUES E FLAGS 4-15
4.10. OBSERVAES 4-16
4.10.1. Bancos de Registros 4-16
4.10.2. Registros Especiais 4-17
4.11. CDIGOS DE OPERAO (OP CODES) 4-18
4.11.1. Tabelas de Instrues 4-18
4.11.2. Instrues em Ordem Alfabtica com OPCODES 4-21
4.12. JUMP E CALL 4-24
4.12.1. JUMPs Relativos 4-24
4.12.2. JUMPs e CALLs Absolutos 4-26
4.13. EXEMPLOS 4-29
NDICE
MICROCONTROLADORES (MCS-51) v
CAPTULO V ASSEMBLER E SIMULADOR 5-1 5.1. CONCEITOS DO AVMAC51 E DO AVLINK 5-1
5.2. PSEUDO-INSTRUES DO ASSEMBLER 5-4
5.3. O LINKER - AVLINK 5-9
5.4. O FORMATO INTEL.HEX 5-11
5.5. PROGRAMAS EXEMPLO 5-12
5.6. CONCEITOS DO AVSIM 8051 5-17
5.6.1. Modo Comando 5-17
5.6.2. Modo Display 5-18
5.7. COMANDOS DO AVSIM51 5-18
5.7.1. Comandos de Ambiente 5-19
5.7.2. Comandos para a Execuo de Programas 5-19
5.7.2.1. Breakpoints 5-19
5.7.2.2. Condies (Value, Range, Mask, Indirect) 5-20
5.7.2.3. Passpoints 5-20
5.7.2.4. Opcode Traps 5-21
5.7.2.5. Execute Command 5-21
5.7.3. Comandos de Display 5-21
5.7.4. Comandos de I/O 5-21
5.7.5. Comandos de Memria 5-22
5.7.6. Incremental Cross-Assembler 5-22
5.8. FLUXOGRAMA DE OPERAO DO AVSIM51 5-22
5.9. TELAS DE AJUDA 5-31
5.9.1. Ajuda para os Comandos 5-31
5.9.2. Ajuda para o Display 5-31
5.9.3. Ajuda para a Simulao 5-31
5.9.4. Ajuda para AVOCET 5-32
5.9.5. Tela do Simulador 5-32
CAPTULO VI PORTAS PARALELAS 6-1 6.1. REGISTROS ENVOLVIDOS 6-1
6.2. DESCRIO DO FUNCIONAMENTO 6-2
6.2.1. Porta P1 6-2
6.2.2. Porta P3 6-3
6.2.3. Porta P2 6-4
6.2.4. Porta P0 6-5
NDICE
vi MICROCONTROLADORES (MCS-51)
6.3. ESCRITA NAS PORTAS 6-6
6.4. EXERCCIOS 6-9
CAPTULO VII INTERRUPES 7-1 7.1. INTRODUO 7-1
7.2. REGISTROS ENVOLVIDOS 7-1
7.3. MANEJO DE INTERRUPES 7-4
7.4. INTERRUPES EXTERNAS 7-5
7.5. PASSO A PASSO 7-6
7.6. EXERCCIOS 7-8
CAPTULO VIII TEMPORIZADORES / CONTADORES 8-1 8.1. INTRODUO 8-1
8.2. REGISTROS ENVOLVIDOS 8-1
8.3. MODOS DE OPERAO 8-4
8.3.1. Modo 0 8-4
8.3.2. Modo 1 8-4
8.3.3. Modo 2 8-5
8.3.4. Modo 3 8-5
8.4. EXERCCIOS 8-6
CAPTULO IX PORTA SERIAL 9-1 9.1. INTRODUO 9-1
9.2. REGISTROS ENVOLVIDOS 9-1
9.3. MODOS DE OPERAO 9-3
9.3.1. Modo 0 9-3
9.3.2. Modo 1 9-4
9.3.3. Modo 2 9-5
9.3.4. Modo 3 9-5
9.4. CUIDADOS COM A PORTA SERIAL 9-6
9.5. Comunicao entre vrios 8051 9-7
9.6. Comunicao serial entre o 8051 e o PC 9-8
9.7. EXERCCIOS 9-9
CAPTULO X ECONOMIA DE ENERGIA E GRAVAO 10-1 10.1. INTRODUO 10-1
10.2. MODO IDLE 10-2
10.3. MODO POWER DOWN 10-3
NDICE
MICROCONTROLADORES (MCS-51) vii
10.4. PROGRAMAO DA EPROM (8751) 10-3
10.4.1. Programao 10-4
10.4.2. Verificao 10-5
10.4.3. Bit de Segurana 10-6
10.4.4. Apagamento (8751) 10-6
CAPTULO XI PLACA DE TESTES 11-1 11.1. INTRODUO 11-1
11.2. ESQUEMA DA CPU (CPU.SHT) 11-7
11.3. ESQUEMA DA MEMRIA 11-11
11.4. ESQUEMA DA SERIAL 11-13
11.5. ESQUEMA DO GRAVADOR 11-17
ANEXO A USO DOS PROGRAMAS A-1 A.1. INTRODUO A-1
A.2. TAR_PRU.ASM A-1
A.3. TUDO.C A-2
A.4. STEP.ASM / STEP.H A-3
BIBLIOGRAFIA B-1
CAPTULO I MICROCONTROLADORES
MICROCONTROLADORES (MCS-51) 1 - 1
CAPTULO I
MICROCONTROLADORES 1.1. REVISO HISTRICA
A rpida evoluo da eletrnica, particularmente na segunda metade do sculo XX,
provocou uma mudana profunda no homem moderno. Os pases ficam cada vez mais prximos,
graas inicialmente ao radio, depois televiso e hoje em dia, com os satlites, pode-se
instantaneamente ver qualquer lugar do planeta. Pudemos ver o homem pisando pela primeira vez na
Lua e tambm imagens recm enviadas de Marte, Jpiter, Saturno e Pluto.
Alm dos meios de comunicao, recordemos os avanos da medicina, meteorologia,
transportes, cincia pura e aplicada, prospeco de petrleo e tambm o controle e melhoria do meio
ambiente.
Pelo lado da eletrnica, afirma-se que um grande agente deste progresso foi o
computador, que provocou uma realimentao positiva nas pesquisas. O computador permitiu
pesquisas mais rpidas e precisas; com isto muitas cincias se beneficiaram, inclusive a tecnologia
eletrnica, que passou a fabricar circuitos mais rpidos e eficientes. Com isso pode-se construir
computadores mais eficientes, que por sua vez melhoraram ainda mais a eletrnica e assim
sucessivamente.
Desde as simples calculadoras de vlvulas, programadas por fios, da dcada do 40 at
os supercomputadores dos dias de hoje, foi percorrido um caminho muito grande. No meio deste
caminho, no incio da dcada do 70, com o avano dos LSI vimos surgir os microprocessadores e os
computadores pessoais.
oportuno recordar algumas datas importantes no desenvolvimento dos computadores:
1948 - John Barden, Walter Bratain e William Shockley inventam o Transistor no BELL LABS.
1959 - TEXAS INSTRUMENTS cria o primeiro Circuito Integrado (CI), onde em um mesmo substrato
de cristal eram integrados vrios transistores.
1964 - DIGITAL comea a vender o PDP-8, o primeiro computador com preo acessvel aos
laboratrios.
1968 - Surge a INTEL.
1971 - INTEL fabrica o 4004, o primeiro microprocessador. Ele tinha uma arquitetura de 4 bits. Aqui
surge a idia de integrar todo o circuito de controle em um nico CI; isso passou a chamar-
se microprocessador.
CAPTULO I MICROCONTROLADORES
1 - 2 MICROCONTROLADORES (MCS-51)
1974 - INTEL desenvolve o 4004 e produz o primeiro microprocessador de 8 bits, o 8080. Neste
mesmo ano, Kernighan e Ritchie formalizam a linguagem C.
1975 - ZILOG comea a vender o Z80 e a MOS TECHNOLOGY comea a vender o MC6501 (US$20)
e o MC6502 (US$ 25). Nesta poca um 8080 custava US$ 150.
1976 - INTEL produz o primeiro microcontrolador, o 8048, e o 8748. Neste mesmo ano INTEL iniciou
o projeto do 8086. A TEXAS INSTRUMENTS produz o TMS 9000, primeiro
microprocessador de 16 bits. APPLE COMPUTER tambm surge neste ano.
1977 A APPLE Computer produz o APPLE II (US$1298) com processador Motorola 6502 (8 bits).
1978 A INTEL comea a produzir o 8086 e tambm alguns derivativos do 8048, o 8041 e o 8741.
1979 A INTEL distribui o 8088.
1980 A INTEL inicia o que seria a famlia de microcontroladores de maior sucesso, os 8051 e 8751.
Neste mesmo ano tambm produz o 8087. A APPLE COMPUTER produz o APPLE III, que
estava destinado ao fracaso.
1981 A IBM passa a dedicar-se aos sistemas de pequeno porte com o IBM PC, que consistia da
CPU 8088, 64 KB RAM, 40 KB ROM, floppy 5,25" (US$3005).
1982 A INTEL inicia a venda dos 80186, 80188 e 80286. Tambm comea a vender o primeiro
microcontrolador de 16 bits, o 8096 (famlia MCS-96).
1983 - Com os 80C51 e 80C49, a INTEL comea a distribuir microcontroladores CHMOS, de menor
consumo de energia. A APPLE COMPUTER produz o LISA, tambm destinado ao fracaso.
A AT&T comea a distribuir o UNIX System V. A IBM anuncia o PC XT (US$ 4995) e o PC
Jr. (US$1269).
1984 - Surge o IBM PC AT com 80286, 256 KB RAM, floppy de 1,2 MB (US$ 5469). A APPLE
COMPUTER produz o que viria a ser um grande sucesso: o MACINTOSH (US$ 2495).
1985 A INTEL produz o 80386DX (16 MHz, 6 MIPS).
1986 A COMPAQ fabrica o primeiro computador 386, o COMPAQ DESKPRO 386.
1988 A INTEL fabrica o 80386SX (16 MHz, 2,5 MIPS).
1989 A INTEL fabrica o 80486DX (25 MHz, 20 MIPS).
1991 A INTEL fabrica o 80486SX (20 MHz, 16,5 MIPS).
1992 A INTEL fabrica o 80486DX2 (50 MHz, 40 MIPS).
1993 A INTEL fabrica o PENTIUM (60 MHz, 112 MIPS).
O desenvolvimento dos microprocessadores e dos microcontroladores, de acordo com
os fabricantes, pode ser esquematizado da seguinte forma:
INTEL 4004 8008 8080 8085 8086 (8088) 80286 80386 486 P5 PII PIII PIV
CAPTULO I MICROCONTROLADORES
MICROCONTROLADORES (MCS-51) 1 - 3
MOTOROLA 6502 6509 68000 68010 68020 68030 68040 68060 PowerPC
ZILOG Z80 Z800 Z8000
1.2. POR QU MICROCONTROLADORES ?
Com o barateamento dos CIs e o surgimento de microprocessadores (CPUs) mais
poderosos, comeou-se a usar as CPUs mais simples para implementar tarefas dedicadas, tais como
controle de impressora, plotter, reguladores de velocidade, acionadores de motores de passo,
controladores de elevadores, etc.
Contudo, qualquer controle implicar uma circuitaria muito grande, que muitas vezes
encarece o custo do controlador.
Tipicamente: CPU controle ROM programa de controle RAM pilha e dados Porta Paralela perifricos e I/O Porta Serial comunicao A/D e D/A sinais analgicos Timers temporizao
CPU
ROM RAM
CONVERSORPORTAPARALELA
PORTASERIAL A/D E D/A
TIMERS
ENDEREOS E DADOS
CONVERSORES
Figura 1.1. Exemplo tpico de um microprocessador aplicado em controle.
Estas aplicaes tinham o custo dependente do preo da CPU e dos perifricos (ROM,
RAM, Portas, A/D, D/A, etc) e tambm da quantidade de conexes e do tamanho da placa. Para
CAPTULO I MICROCONTROLADORES
1 - 4 MICROCONTROLADORES (MCS-51)
reduzir o custo, comeou a surgir a idia de colocar todos estes perifricos dentro do chip da CPU.
Isso baratearia e diminuiria o tamanho do circuito impresso alm de aumentar a confiabilidade. Por
outro lado, uma CPU dedicada a um determinado controle no precisa ser muito rpida nem
tampouco ter um conjunto de instrues extenso e poderoso. No so necessrias instrues para
trabalhar com ponto flutuante, com strings ou vetores e tambm os mecanismos de endereamento
devem ser simples. Ou seja, pode-se simplificar a CPU. Assim surgem os microcontroladores, que
so simples, baratos e eficientes.
1.3. MICROCONTROLADORES
Os microcontroladores apresentam uma srie de recursos incorporados dentro de um
nico integrado. Estes recursos aumentam com a evoluo da eletrnica. Isto permite o
desenvolvimento de projetos cada vez mais simples.
PORTA
PARALELA
PORTA
SERIAL
R O M
R A M
TIMERS
D / A
A / D
C P U
MICROCONTROLADOR TPICO
Figura 1.2. Arquitetura bsica de um microcontrolador.
Os microcontroladores so especficos para controle, no tem grande capacidade de
processamento e por isso nunca haver um computador pessoal cuja CPU seja um microcontrolador.
Eles podem estar presentes em um PC, mas apenas para controlar perifricos.
Usa-se o nome de Microcontrolador para designar dispositivos de uso genrico, mas
existem vrios microcontroladores que tm aplicaes especficas, como por exemplo o controlador
de teclado 80C51SL-BG e o controlador de comunicaes universal 82C152.
H diversos fabricantes de microcontroladores. Os mais conhecidos so:
INTEL 8048, 8049, 8051, 8052, 8096. ZILOG Z8. MOTOROLA 6801, 6804, 6805, 68HC11. NATIONAL COP400, COP800, NS8050.
CAPTULO I MICROCONTROLADORES
MICROCONTROLADORES (MCS-51) 1 - 5
1.4. FAMLIAS DA INTEL
A INTEL possui trs famlias de controladores:
8 bits: MCS-48 (obsoleta) e MCS-51
16 bits: MCS-96
Hoje em dia, os manuais mostram uma nova famlia, MCS-80/85. Agora os antigos 8080
e 8085 esto sendo classificados como controladores. Isto porque so muito simples quando
comparados com um 386 ou um 486. Cada famlia possui um ncleo bsico (arquitetura e instrues)
a partir do qual se derivam vrios produtos:
MCS-48 8048, 8748, 8049, 8749, 8035,8039,8050,8040,etc. MCS-51 8031, 8051, 8751, 8032, 8052, 8752, 8054, 8754, 8058, 8758, 8351FA, 8051FA,
8751FA, 8051GB, 8751GB, 8051SL-BG, 83152, etc.
MCS-96 8096, 8098, 80196, 83196, 87196, 80198, 83198, 87198, 80193, 83193, 87193, etc.
So 3 os principais fabricantes do MCS-51:
I N T E L
P H I L I P S
A M D
CAPTULO X ECONOMIA DE ENERGIA E GRAVAO
MICROCONTROLADORES (MCS-51) 10 - 1
CAPTULO X
ECONOMIA DE ENERGIA E GRAVAO
10.1. INTRODUO
Para aplicaes onde o consumo de potncia crtico, as verses CHMOS oferecem
modos de reduo de potncia como recurso padro. H dois modos bsicos para economia de
energia (reduo de consumo):
Modo Idle Modo Power Down A figura 10.1 apresenta um diagrama de blocos onde se pode ver o funcionamento e a
distino entre os dois modos de economia de energia.
OSC GER.CLOCK
*PD *IDL
INTERRUPESTIMERSSERIAL
XTAL2 XTAL1
DEMAISFUNES
Figura 10.1. Controle executado pelos flags (*PD e *IDL) que habilitam a economia de energia.
No MODO IDLE (IDL=1) o oscilador continua a trabalhar para trs funes, mas
removido do resto da CPU. As trs funes que operam em modo Idle so:
interrupes timers porta serial No MODO POWER DOWN (PD=1) o oscilador paralisado e com isto toda CPU fica
congelada.
Esses dois modos so ativados pelo registrador PCON, que descrito na figura 10.2.
CAPTULO X ECONOMIA DE ENERGIA E GRAVAO
10 - 2 MICROCONTROLADORES (MCS-51)
SMOD - - - GF1 GF0 PD IDL
MODO IDLE
MODO POWER DOWN
BITS DE USO GERAL
DOBRADOR DE BAUD RATE
PCON
1 habilita 0 desabilita7 6 5 4 3 2 1 0
Figura 10.2. Descrio do registro PCON.
Nas verses HMOS o registrador PCON s contm o bit SMOD; os demais no devem
ser utilizados.
10.2. MODO IDLE
A instruo que ativa o bit IDL a ltima a ser executada antes que a CPU entre no
modo Idle. Neste modo s funciona a interrupo, os timers e a porta serial. A CPU fica congelada
sem o clock. O consumo cerca de 85% do consumo normal.
Todo o status preservado:
SP, PC, PSW, Acc e todos os registradores, os pinos das portas mantm os mesmos estados, ALE = PSEN = High. H duas maneiras de terminar o modo Idle:
por uma interrupo que esteja habilitada, por reset. Se uma interrupo termina o modo Idle, a instruo a ser executada depois do RETI a
que vem em seguida que ativou o bit IDL. Na figura 10.3 h um esquema que ilustra este
funcionamento.
MOV PCON,#1
MOV A,#40H
MODOIDLE
ROTINA INTERRUPO. . .
RETI
INT
Figura 10.3. Retorno do modo Idle atravs de uma interrupo.
Os Flags GF0 e GF1 podem ser usados para dar indicao se a interrupo aconteceu
no modo normal ou no modo Idle. A rotina que ativa o bit IDL deve antes ativar um dos dois flags
(GF0 ou GF1) para indicar que a CPU entrou no modo Idle.
CAPTULO X ECONOMIA DE ENERGIA E GRAVAO
MICROCONTROLADORES (MCS-51) 10 - 3
O Reset a outra forma de terminar o modo Idle. Como o oscilador est funcionando,
so necessrios apenas 24 perodos de clock. O Reset coloca em zero o bit IDL de forma assncrona
e a CPU reassume a execuo a partir da instruo que ativou o IDL. Podem acontecer 2 a 3 ciclos
de mquina antes que a CPU retome o controle.
O hardware interno inibe o acesso RAM interna durante o perodo de modo Idle mas
no os acessos aos pinos das portas. Para evitar erros, a instruo que vem em seguida ativao
do IDL no deve escrever nas portas ou na memria externa.
10.3. MODO POWER DOWN
A instruo que ativa o bit PD a ltima a ser executada antes que a CPU entre no
modo Power Down. Nesse modo o oscilador fica parado e assim todas as funes se congelam mas
o contedo da RAM interna e dos SFR so mantidos. O consumo de aproximadamente 10A.
Em modo power down so mantidos:
RAM interna e SFR Pinos das portas ALE = PSEN = LOW
A nica maneira de sair do Power Down por Reset, que vai alterar o contedo dos SFR
mas no alterar o contedo da RAM interna. Assim, os valores importantes devero estar
armazenados na RAM interna. Esse Reset deve esperar a partida do oscilador (pelo menos 10 ms).
O programa recomear do incio (RESET), ao contrrio do modo IDLE.
Em Power Down pode-se baixar o Vcc at 2V; alguns cuidados devem ser observados:
No baixar o Vcc antes do Power Down Levantar o Vcc antes de sair do Power Down.
Uma possvel utilizao do modo power down pode ser realizada usando um sensor que
capte a reduo de Vcc (p.ex. 4,75V) e ative uma interrupo externa com prioridade alta para entrar
no modo power down.
10.4. PROGRAMAO DA EPROM (8751)
Algumas verses da famlia MCS-51 possuem uma EPROM interna. A tabela da figura
10.4 relaciona algumas destas CPUs.
CAPTULO X ECONOMIA DE ENERGIA E GRAVAO
10 - 4 MICROCONTROLADORES (MCS-51)
CPU TAMANHO TIPO VPP TEMPO
8751 4 KB HMOS 21 V 4 min
8751H 4 KB HMOS 21 V 4 min
87C51 4 KB CHMOS 12,75 V 13 s
8752B 8 KB HMOS 12,75 V 26 s
Figura 10.4. Algumas verses do MCS-51 com EPROM interna.
A CPU 8751H programada com 21 V, usando 50 ms para cada byte, o que d cerca de
4 minutos (4K * 50 ms = 200 s). As CPUs 87C51 e 8752BH usam um modo de programao
chamado de "Quick Pulse" que feito com 12,75 volts e 25 pulsos de 100 s para cada byte,
resultando em um menor tempo de programao.
Durante a programao existem 3 configuraes usadas:
Programao Verificao Programao do bit de segurana
A figura 10.5 ilustra a habilitao desses modos.
MODO RST *PSEN ALE *EA P2.7 P2.6 P2.5 P2.4
PROGRAMAO 1 0
VPP 1 0 X X
INIBIDO 1 0 1 X 1 0 X X
VERIFICAO 1 0 1 1 0 0 X X
SEGURANA 1 0
VPP 1 1 X X
Figura 10.5. Habilitao dos diversos modos de programao (X don't care). 10.4.1. Programao
Para a programao necessrio que o oscilador esteja funcionando com uma
freqncia de 4 a 6 MHz. A figura 10.6 ilustra a operao em modo programao.
CAPTULO X ECONOMIA DE ENERGIA E GRAVAO
MICROCONTROLADORES (MCS-51) 10 - 5
8
8 8P1P2.0,1,2,3P2.4P2.5P2.6P2.7XTAL2
XTAL1
VSS
VCCP0
ALE
*EARST
*PSEN
A0...A7A8...A11
XX
VILVIH
4-6 MHz
+5 V
D0...D7
50 mseg
VPPVIH
X - Don't care
8751
Figura 10.6. A CPU 8751 em modo programao.
Normalmente EA mantido em nvel alto (VIH) at antes do pulso em ALE. Um pouco
antes deste pulso, coloca-se EA = VPP e em seguida envia-se o pulso ALE; depois dos 50 ms faz-se
EA = VIH.
10.4.2. Verificao
Se o bit de segurana no for programado, a memria EPROM pode ser lida com
finalidades de verificao. Isso pode ser feito depois da programao de cada byte. A nica alterao
que P2.7 colocado em nvel baixo para habilitar o buffer de sada por P0. Como P0 no possui
pull up interno, um pull up externo de 10 K dever ser colocado em cada linha de dados. A figura 10.7 ilustra a operao do 8751 em modo verificao.
8
8 8P1P2.0,1,2,3P2.4P2.5P2.6P2.7XTAL2
XTAL1
VSS
VCCP0
ALE
*EARST
*PSEN
A0...A7A8...A11
XX
VIL*ENABLE
4-6 MHz
+5 V
D0...D7
VIHVIH
X - Don't care
8751
VIH
usar pull up de 10K
Figura 10.7. O CPU 8751 em modo verificao.
CAPTULO X ECONOMIA DE ENERGIA E GRAVAO
10 - 6 MICROCONTROLADORES (MCS-51)
10.4.3. Bit de Segurana
O bit de segurana uma trava que, quando programada, impede a leitura da EPROM
interna. Tambm impede que a CPU execute programas a partir de uma memria externa. Ao apagar
a EPROM se apaga tambm o bit de segurana. A figura 10.8 ilustra a operao da CPU em modo
programao do bit de segurana.
8
8 8P1P2.0,...,5
P2.6P2.7XTAL2
XTAL1
VSS
VCCP0
ALE
*EARST
*PSEN
VIHVIH
4-6 MHz
+5 V
50 mseg
VPPVIH
X - Don't care
8751XX X
Figura 10.6. A CPU 8751 em modo programao do bit de segurana.
Outros membros da famlia oferecem tcnicas mais sofisticadas de segurana. Por
exemplo, o 8751BH oferece um array de 32 bytes onde se pode colocar chaves de criptografia. A
cada endereo de EPROM que lido, os 5 bits de endereo so usados para acessar um dos 32
bytes e com ele feito um *XOR (NXOR). Se estes 32 bytes esto apagados (em 1), a operao
NXOR no produz nenhuma alterao.
10.4.4. Apagamento (8751)
O apagamento da memria EPROM do 8751 feito por luz ultravioleta de alta densidade
(2537 Angstrons e 15 Watts/cm2) durante 20 a 30 minutos a uma distncia de 2,5 cm. A EPROM
ficar com todos os bits em 1 aps o processo.
CAPTULO XI PLACA DE TESTES
MICROCONTROLADORES (MCS-51) 11 - 1
CAPTULO XI
PLACA DE TESTES 11.1. INTRODUO
Neste captulo descreve-se o projeto e a operao da Placa de Testes. No captulo XII
esto os detalhes do software que gerencia est placa. A finalidade da placa permitir flexibilidade
no ensino de microcontroladores. O esquema possibilita a utilizao de um computador para
assemblar e linkar os programas e depois envi-os por porta serial Placa de Testes para que sejam
executados.
IBM PCPLACA
DE TESTESCANAL SERIAL
transmitir programas
receber resultados
Figura 11.1. Conexo da Placa de Testes com o IBM PC.
O mais usual quando se trabalha em ensino de microcontroladores montar uma
pequena placa onde so montados o microcontrolador, chaves para se interagir, leds para sinalizar
alguns resultados e uma memria EPROM onde se gravam os programas. Isto tem uma sria
desvantagem: apagar e gravar a EPROM cada vez que se muda o programa. Para cada correo
que se faz, repete-se o processo de apagar e gravar. Alm de ser um processo lento, significa que se
deve ter disponibilidade de um gravador de EPROM.
Com a Placa de Testes no se pretende utilizar a EPROM pois os programas sero
transmitidos atravs da porta serial do PC, escritos na memria de programa do 8031 e executados.
A velocidade aumenta bastante pois os erros podem ser rapidamente corrigidos no PC e em seguida
transmitidos para a placa.
A placa tem dois modos de operao:
modo Boot Serial modo Execuo
CAPTULO XI PLACA DE TESTES
11 - 2 MICROCONTROLADORES (MCS-51)
Para o funcionamento correto existem duas memrias: uma EPROM e uma RAM
esttica (SRAM). Quando a placa est em modo Boot Serial, a EPROM trabalha como memria de
programa e a memria esttica trabalha como memria de dados. Na EPROM est um programa
muito simples que tem como funo receber o programa que chega pela porta serial e escrev-lo na
RAM esttica. Ao terminar a transmisso do programa, o usurio pe a placa em modo Execuo e
com isto a RAM esttica, que era memria de dados, se transforma em memria de programa e a
EPROM desabilitada; com isto o programa recm transmitido executado. Se for preciso transmitir
um novo programa, simplesmente basta colocar a placa em modo Boot Serial e transmitir o novo
programa. H um programa escrito em C (TAR_PRU.C) que ajuda na comunicao com a Placa de
Testes.
Para que o circuito seja completo foram colocados recursos para gravar e ler os
membros da famlia MCS-51 que tm EPROM interna: 8751H, 8751BH, 87C51, 87C51FA, 8752BH e
outros modelos. H recursos para gravao usando o modo standard (pulsos de 50 ms) como
tambm usando o modo "quick pulse programming" (pulsos de 100 s). A seguir h uma descrio detalhada de cada item da placa de testes. Os esquemas
esto no final deste captulo e tm os nomes:
esquema da CPU (cpu.sht)
esquema da MEMRIA (memo.sht)
esquema da SERIAL (serial.sht)
esquema do GRAVADOR (grav.sht)
A seguir so apresentados os quatro esquemas:
CA
PT
UL
O X
I
PLA
CA
DE
TE
STE
S
MIC
RO
CO
NT
RO
LA
DO
RE
S (M
CS-
51)
11
- 3
*RD
MEM
OR
IAS
AO
..A15
*RD
*WR
*PSE
N
BO
OT
*BO
OT
AD
0..A
D7
*RD
RST
P1.7
GR
AV
AD
OR
A0.
.A15
*RD
*WR
RST
P1.7
P1.6
AD
0..A
D7
VC
C R247
KD
11N
4148
R1
82SW
1
SW P
USH
BU
TTO
N
C1 10
u
1 2
U5A74LS
14P1
.6*W
R*W
R
*PSE
N
BO
OT
*BO
OT
A0
A1
A2
AD
0A
D1
AD
2D
0 3
Q0
2D
1 4
Q1
5D
2 7
Q2
6D
3 8
Q3
9D
4 1
3Q
412
D5
14
Q5
15D
6 1
7Q
616
D7
18
Q7
19
OC
1G
11
U2
74LS
373
AD
0A
D1
AD
2EA
/VP
31
X1
19
X2
18
RES
ET 9
INT0
12
INT1
13
T0 1
4T1
15
P1.0
1P1
.1 2
P1.2
3P1
.3 4
P1.4
5P1
.5 6
P1.6
7P1
.7 8
P0.0
39P0
.138
P0.2
37P0
.336
P0.4
35P0
.534
P0.6
33P0
.732
P2.0
21P2
.122
P2.2
23P2
.324
P2.4
25P2
.526
P2.6
27P2
.728
RD
17W
R16
PSEN
29A
LE/P
30TX
D11
RX
D10
U1
8031
C3
30p
RST
C2 30
p
X1
3575
611H
z
*RST
11 1
0U
5E
74LS
14
VC
C
LED
6
Q_A
M
R9
220
VC
C
R4
220
R5
220
LED
3 R_A
M
LED
2 R_V
MP1
.0 3
4U
5B74
LS14
5 6
U5C
74LS
14
RST
BO
OT
RST
AD
3A
D4
AD
5A
D6
AD
7 A8
A9
AD
3A
D4
AD
5A
D6
AD
7
ALE
A3
A4
A5
A6
A7
VC
C
TXD
INTE
RF-
SER
IAL
TXD
RX
D
VC
C
25V
A10
A11
A12
A13
A14
A15
*RD
*WR
P1.0
P1.1
P1.2
P1.3
*IN
T0*I
NT1
T0 T1
RA
M X
LED
1 (Q
_VD
)O
N --
> B
OO
T SE
RIA
L
1R
OM
0R
AM
P1.1
P1.2
9 8
U5D
74LS
14
R6
220
LED
4 R_V
D
SW2
SW P
USH
BU
TTO
N
SW3
SW P
USH
BU
TTO
N
P1.3
*IN
T1 T1
OFF
-->
PRO
G R
AM
(BO
OT=
1)
(BO
OT=
0)
VC
C R9
2K2
P1.4
P1.5
P1.6
P1.7
LED
1
Q_V
D
PSEN
TXD
RX
D
BO
OT
RX
D25
V
*BO
OT
R3
220
D 2
Q 5
CLK
3
Q 6
P R4 C L 1U8A
74LS
74
C4
1u
LED
5
Q_V
M
11
10U
5E 74LS
14
R7
220
*IN
T0
VC
C
SW4
SW S
PST
R8
8K2
FEC
HA
DA
AB
ERTA
S ST
EP
(Q_V
M O
FF)
(Q_V
M O
N)
RST
VC
C
BO
OT
*BO
OT
Dat
e: J
anua
ry 5
, 199
5Sh
eet
1
of
4
Size
Doc
umen
t Num
ber
REV
A1
1.0
Title
CPU
.SH
T (C
IRC
UIT
O D
E LA
CPU
)
1MIC
RO
CO
NTR
OLA
DO
RES
MC
S-51
RU
N
*PSE
N*R
D *
WR
CA
PT
UL
O X
I
PLA
CA
DE
TE
STE
S
11 -
4
MIC
RO
CO
NT
RO
LA
DO
RE
S (M
CS-
51)
A0.
.A15
P1.7
P1.6
P1.6
P1.7
1 2 3
U?A 74
LS08
456
U14
B
74LS
02
A0
A1
A2
A3
AD
0A
D1
AD
2A
D3
A0
8A
1 7
A2
6A
3 5
A4
4A
5 3
A6
2A
7 1
A8
23A
922
A10
19
CE
18O
E20
WE
21
D0
9D
1 1
0D
2 1
1D
3 1
3D
4 1
4D
5 1
5D
6 1
6D
7 1
7
U4
6116
AD
0A
D1
AD
2A
D3
A0
8A
1 7
A2
6A
3 5
A4
4A
5 3
A6
2A
7 1
A8
23
A9
22
A10
19
A11
21
CE
18
OE/
VPP
20
O0
9O
110
O2
11O
313
O4
14O
515
O6
16O
717
U3
2732
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
AD
4A
D5
AD
6A
D7
AD
4A
D5
AD
6A
D7
A4
A5
A6
A7
A8
A9
A10
1 2 3
U6A
74LS
32*B
OO
T
*BO
OT
*BO
OT
*WR
*PSE
N
BO
OT
PSEN
*WR
BO
OT
4 5 6
U6B
74LS
32
1 2 3
U7A
74LS
08
*BO
OT
PSEN
AD
0..A
D7
P1.7
1
*BO
OT
P1.6
*WR
/*R
D A
CC
ION
AN
XX
6116
910 8
U6C
74LS
32*R
D
*BO
OT
*RD
6116
8255
373
11 1
0 10
0 0 0 0 MO
DO
BO
OT
==>
*BO
OT=
0
MO
DO
RU
N =
=> *
BO
OT=
1
00
PRO
IBID
O
Dat
e: J
anua
ry 4
, 199
5Sh
eet
2
of
6
Size
Doc
umen
t Num
ber
REV
A1
1.0
Title
MEM
O.S
HT
(CIR
CU
ITO
DE
LAS
MEM
OR
IAS)
1MIC
RO
CO
NTR
OLA
DO
RES
MC
S-51
(*PS
EN)
(*W
R/*
RD
)
(*W
R/*
RD
)
(*W
R/*
RD
)
CA
PT
UL
O X
I
PLA
CA
DE
TE
STE
S
MIC
RO
CO
NT
RO
LA
DO
RE
S (M
CS-
51)
11
- 5
-12
TXD
(803
1) (
INTE
RFA
CE)
PC
_RX
+5 0
0
5+
PC_T
X (
INTE
RFA
CE)
RX
D(8
031)
12 -12
+V
CC Q
1PN
2907
R10
10K
TXD
R11
4K9
D10
1N41
48
PC_R
X(3
)
VC
C
R14
10K
C10
100u
D11
1N41
48
PC_T
X(2
)
R12
100K
R13
10K
D12
1N41
48
Q2
PN22
22
RX
D
PIN
O 2
TX
-->
PIN
O 3
RX
5 bytes.
Podem acontecer at 2 interrupes simultneas, o que consome at 10 bytes. Logo, h 60 bytes
CAPTULO II FAMLIA MCS-51
2 - 8 MICROCONTROLADORES (MCS-51)
disponveis para a pilha. Se para cada CALL so guardados PC, PSW, Acc e B (5 bytes), h
disponibilidade de at 12 CALL aninhados.
Se a pilha for trabalhar nos 128 UPPER, subtraindo os 10 bytes para as interrupes
tm-se 118 bytes, o que resulta em 23 CALL aninhados (23 x 5 =115 bytes) e ainda sobram 80 bytes
para as variveis nos 128 LOWER.
Os bancos de registros so timos para guardar o contexto, principalmente no caso de
interrupes. Estes so trocados com uma s instruo. Por exemplo, poder-se-ia usar:
BK3 interrupo porta serial BK2 interrupo INT1 BK1 interrupo INT0 BK0 trabalho
S pode haver um banco selecionado de cada vez mas todos os registros podem ser
endereados atravs do endereo de seu byte.
R0
R1
. . .
R7
0
1
7
0
8
9
F
8
10
11
17
18
19
1F
10H
18H
endereos
128 LOWER
Se o banco 0 est selecionado
MOV A,R0MOV A,0 fazem o mesmo
Se o banco 1 est selecionado
MOV A,R3MOV A,0BH fazem o mesmo
Assim, mesmo quando um banco noest selecionado, seus registros soacessveis pelo endereo
R0
R1
. . .
R7
R0
R1
. . .
R7
R0
R1
. . .
R7
BANCO0
BANCO1
BANCO2
BANCO3
de seu byte.
Figura 2.9. Endereo dos registros.
CAPTULO II FAMLIA MCS-51
MICROCONTROLADORES (MCS-51) 2 - 9
2.6. SFR - SPECIAL FUNCTION REGISTERS
Dos 256 bytes da RAM interna que so endereados diretamente, 128 (80 FF) so
reservados para os Registros de Funes Especiais (SFR). O 8051 apresenta um conjunto mnimo
mas pode haver mais SFR em outros membros da MCS-51.
Os SFR no devem ser confundidos com o chamado "128 UPPER", que uma rea de
128 bytes (80H FFH) que s endereada indiretamente e s existe no 8051.
A seguir apresentada uma lista com os SFRs do 8051 e seus endereos.
BIT SMBOLO NOME ENDEREO
* Acc Acumulador E0
* B Registro B F0
* PSW Palavra de Status (Program Status Word) D0
SP Ponteiro da Pilha (Stack Pointer) 81
DPH Ponteiro de Dados (high) (Data Pointer
High) 83
DPL Ponteiro de Dados (low) (Data Pointer
Low) 82
* P3 Porta 3 B0
* P2 Porta 2 A0
* P1 Porta 1 90
* P0 Porta 0 80
* IP Prioridade de Interrupo (Interrupt
Priority) B8
* IE Habilitao de Interrupo (Interrupt
Enable) A8
TMOD Timer/Counter Mode 89
* TCON Timer/Counter Control 88
TH1 Timer/Counter 1 (MSB) 8D
TL1 Timer/Counter 1 (LSB) 8B
TH0 Timer/Counter 0 (MSB) 8C
TL0 Timer/Counter 0 (LSB) 8A
* SCON Controle da Porta Serial (Serial Control) 98
SBUF Buffer da Porta Serial (Serial Buffer) 99
* PCON Controle de Energia (Power Control) 87
Figura 2.10. Lista dos registros SFR.
CAPTULO II FAMLIA MCS-51
2 - 10 MICROCONTROLADORES (MCS-51)
A seguir apresentada uma breve descrio de cada registro:
Acc Acumulador
B Usado durante as operaes de multiplicao e diviso; nos demais casos pode ser usado como auxiliar.
PSW Program Status Word ou Registro de Flags de Estado 7 6 5 4 3 2 1 0
CY Ac F0 RS1 RS0 0V - P PSW.7 CY Carry Flag PSW.6 Ac Carry auxiliar (operao com BCD Binary Coded
Decimal)
PSW.5 F0 Flag 0, uso geral PSW.4 RS1 Selecionador de Banco (Range Selector), bit 1 PSW.3 RS0 Selecionador de Banco (Range Selector), bit 0
RS1 RS0 BANCO SELEC. 0 0 Banco 0 0 1 Banco 1 1 0 Banco 2 1 1 Banco 3
PSW.2 OV Overflow PSW.1 - Flag definvel pelo usurio PSW.0 P Paridade (mpar) P=1 quantidade mpar de 1s P=0 quantidade par de 1s
SP Ponteiro da Pilha (Stack Pointer), incrementado antes de PUSH e CALL
DPTR Ponteiro para memria de dados externa (Data Pointer). um registro de 16 bits formado por DPH e DPL
P0, P1, P2, P3 Latchs das portas paralelas
IP Prioridade das interrupes (Interrupt Priority)
IE Habilitao das interrupes (Interrupt Enable)
CAPTULO II FAMLIA MCS-51
MICROCONTROLADORES (MCS-51) 2 - 11
TMOD Modo de operao dos Timers/Counters (Timer/Counter Mode)
TCON Controle dos Timers/Counters (Timer/Counter Control)
SCON Controle da porta serial (Serial Control)
SBUF Dois registros, um para leitura e outro para escrita (Serial Buffer) Leitura receber o dado da porta serial Escrita enviar o dado para a porta serial
PCON Controle de energia (Power Control); coloca no modo "Power Down" ou "Idle" 2.7. MAPA DA RAM INTERNA
Aqui apresentado um mapa completo da RAM Interna da MCS-51. Os endereos dos
bytes vo de 0H at FFH. Existem dois grupos de bytes:
128 LOWER de 00H at 7FH. SFR de 80H at FFH.
Observaes:
1) Os registros ou endereos em negrito so endereveis bit a bit.
2) Usam-se as letras "BK" para abreviar a palavra "banco".
3) As clulas marcadas com "-" so inexistentes.
4) A seqncia de endereos da direita para a esquerda e de baixo para cima.
CAPTULO II FAMLIA MCS-51
2 - 12 MICROCONTROLADORES (MCS-51)
S F R
FFH - - - - - - - - F8H
F7H - - - - - - - B F0H
EFH - - - - - - - - E8H
E7H - - - - - - - Acc E0H
DFH - - - - - - - - D8H
D7H - - - - - - - PSW D0H
CFH - - - - - - - - C8H
C7H - - - - - - - - C0H
BFH - - - - - - - IP B8H
B7H - - - - - - - P3 B0H
AFH - - - - - - - IE A8H
A7H - - - - - - - P2 A0H
9FH - - - - - - SBUF SCON 98H
97H - - - - - - - P1 90H
8FH - - TH1 TH0 TL1 TL0 TMOD TCON 88H
87H PCON - - - DPH DPL SP P0 80H 128 LOWER
7FH 7FH 7EH ... 78H
77H
70H
6FH
68H
67H
60H
5FH
58H
57H
50H
4FH
48H
47H
40H
3FH
38H
37H
... 31H 30H 30H
2FH 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 28H
27H 27H 26H 25H 24H 23H 22H 21H 20H 20H BK3 1FH R7 R6 R5 R4 R3 R2 R1 R0 18H BK2 17H R7 R6 R5 R4 R3 R2 R1 R0 10H BK1 0FH R7 R6 R5 R4 R3 R2 R1 R0 08H BK0 07H R7 R6 R5 R4 R3 R2 R1 R0 00H
Figura 2.11. Mapa completo da RAM Interna.
CAPTULO II FAMLIA MCS-51
MICROCONTROLADORES (MCS-51) 2 - 13
2.8. MAPA DOS BITS
A seguir, na figura 2.12 apresentado um mapa com todos os bits do MCS-51. So 256
bits e, portanto, ocupam 32 bytes. Esto marcados o endereo dos bits, o nome e o byte ao qual
pertencem. Existem duas classes de bits: os que pertencem ao 128 LOWER e tm os endereos de
00H a 7FH e os que pertencem aos SFR e tm os endereos de 80H at FFH. Alguns bits no
existem ou sero utilizados em futuras verses e esto marcados com "-".
Como ser abordado mais adiante, os bits podem ser endereados de at 4 formas
diferentes. Como exemplo, uma instruo para habilitar a recepo serial (setar o bit REN), poderia
ser:
1) SETB REN
2) SETB SCON.4
3) SETB 98H.4
4) SETB 9CH
CAPTULO II FAMLIA MCS-51
2 - 14 MICROCONTROLADORES (MCS-51)
MAPA DOS 256 BITS
END
BIT
BIT
7
BIT
6
BIT
5
BIT
4
BIT
3
BIT
2
BIT
1
BIT
0
END
BIT
END
BYTE
NOM
BYTE FFH - - - - - - - - F8H F8H F7H B.7 B.6 B.5 B.4 B.3 B.2 B.1 B.0 F0H F0H B EFH - - - - - - - - E8H E8H E7H Acc.7 Acc.6 Acc.5 Acc.4 Acc.3 Acc.2 Acc.1 Acc.0 E0H E0H Acc DFH - - - - - - - - D8H D8H - D7H CY AC F0 RS1 RS0 OV P D0H D0H PSW CFH - - - - - - - - C8H C8H - C7H - - - - - - - - C0H C0H - BFH - - - PS PT1 PX1 PT0 PX0 B8H B8H IP B7H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 B0H B0H P3 AFH EA - - ES ET1 EX1 ET0 EX0 A8H A8H IE A7H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A0H A0H P2 9FH SM0 SM1 SM2 REN TB8 RB8 TI RI 98H 98H SCON 97H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 90H 90H P1 8FH TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 88H 88H TCON 87H P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 80H 80H P0 7FH 7FH 7EH 7DH 7CH ... 78H 2FH 77H 70H 2EH 6FH 68H 2DH 67H 60H 2CH 5FH 58H 2BH 57H 50H 2AH 4FH 48H 29H 47H 40H 28H 3FH 38H 27H 37H 30H 26H 2FH 28H 25H 27H 20H 24H 1FH 18H 23H 17H 10H 22H 0FH ... 0BH 0AH 09H 08H 08H 21H 07H 07H 06H 05H 04H 03H 02H 01H 00H 00H 20H
Figura 2.12. Mapa completo dos bits do 8051.
CAPTULO III PINAGEM E TEMPORIZAO
MICROCONTROLADORES (MCS-51) 3 - 1
CAPTULO III
PINAGEM E TEMPORIZAO 3.1. INTRODUO
O encapsulamento dos microcontroladores varia muito, de acordo com as funes
desempenhadas. Basicamente so usados 3 tipos de encapsulamento :
DIP Dual in Pack, QFP Quad Flat Pack, PLCC Leadless Chip Carrier.
Os 8051 e 8052 esto disponveis em 40 DIP, 44 PLCC e 44 QFP. Alguns exemplos:
8031 (mais simples) DIP40 8051GB (AD + timer, etc) 100 QFP 8051SL (Keyboard Controller) 100 QFP 83152 (Universal Com. Contr.) DIP48 E PLCC68
3.2. DESCRIO DA PINAGEM
Estudar-se- a pinagem do 8051 no encapsulamento DIP40 (HMOS) 8051 AH (40) Vcc Alimentao de +5V. Consumo: Icc = 125 mA, com todas as sadas desconectadas. (20) Vss Terra. (32-39) P0 Porta 0 (AD0...AD7). Alm de porta paralela, est multiplexada com o byte menos
significativo (LSB) dos endereos e dos dados. Admite 8 cargas LS TTL.
(21-28) P2 Porta 2 (A8...A15). Alm de porta paralela, est multiplexada com o byte mais significativo (MSB) dos endereos. Admite 4 cargas LS TTL.
(1-8) P1 Porta 1. Admite 4 cargas LS TTL. (10-17) P3 Porta 3. Compartilhada com uma srie de recursos Admite 4 cargas LS TTL.
P3.0 RXD, entrada serial P3.1 TXD, sada serial P3.2 *INT0, interrupo externa 0 P3.3 *INT1, interrupo externa 1 P3.4 T0, entrada para o timer 0 (contador neste caso) P3.5 T1, entrada para o timer 1 (contador neste caso) P3.6 *WR, escrita na memria de dados externa
CAPTULO III PINAGEM E TEMPORIZAO
3 - 2 MICROCONTROLADORES (MCS-51)
P3.7 *RD, leitura na memria de dados externa (9) RST Reset. Com o oscilador funcionando, deve ser mantido um nvel alto durante 24
perodos.
(30) ALE/PROG Address Latch Enable. Pulso para acionar o latch que captura o LSB do endereo (com sua borda ascendente). Ele emitido razo de 1/6 da
freqncia do oscilador e pode ser usado para acionar entradas externas. Um
ALE omitido durante o acesso Memria de Dados Externa. Tambm usada
na gravao da ROM interna.
(29) *PSEN Program Store Enable. Pulso de leitura para a Memria de Programa Externa. Quando o programa est sendo executado na memria de programa externa ele aparece
como 1/6 da freqncia de clock. Quando h acesso memria de dados
externa, 2 PSEN so perdidos.
(31) *EA/VPP External Access Enable. Informa CPU se o programa est na Memria de Programa Externa ou na ROM Interna. Tambm usado para gravao da ROM
Interna.
*EA = 1 (Vcc) (0000H - 0FFFH) ROM Interna (1000H - FFFFH) Memria de Programa Externa *EA = 0 (Vss) (0000H - FFFFH) Memria de Programa Externa (19) XTAL1 Entrada do amplificador inversor do oscilador interno. Deve ser conectado terra se
for usado um clock externo (HMOS) ou ao clock externo (CHMOS).
(20) XTAL2 Sada do amplificador inversor do oscilador interno. Se for usado clock externo, serve como entrada para o mesmo (HMOS) ou no conectado (CHMOS).
P3.6P3.7
P3.4P3.5
P3.2P3.3
P3.0P3.1
RST
P1.6P1.7
P1.4P1.5
P1.2P1.3
P1.0P1.1
XTAL2XTAL1Vss
123456789
1011121314151617181920
222324252627282930313233
21
34353637383940Vcc
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
*EA / VPPALE / PROG
*PSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0
RXDTXD
*INT0*INT1
T0T1
*WR*RD
A8A9A10A11A12A13A14A15
AD0AD1AD2AD3AD4AD5AD6AD7
8051
Figura 3.1. Pinagem do 8051.
CAPTULO III PINAGEM E TEMPORIZAO
MICROCONTROLADORES (MCS-51) 3 - 3
OBS: A figura a seguir ilustra as possveis ligaes dos pinos XTAL1 e XTAL2:
3.3. DIAGRAMAS DE TEMPO
Aqui sero abordados alguns diagramas de tempo, os quais foram simplificados em
beneficio da compreenso. Eles no mostraro os tempos de subida e descida dos pulsos. Os
retardos de propagao entre o CLK e os demais sinais foram omitidos. Esses detalhes devem ser
consultados no "datasheet" da CPU a ser usada.
CAPTULO III PINAGEM E TEMPORIZAO
3 - 4 MICROCONTROLADORES (MCS-51)
EST 2
P1 P2
EST 1
P1 P2
EST 3
P1 P2
EST 4
P1 P2
EST 5
P1 P2
EST 6
P1 P2
EST 1
P1 P2
EST 2
P1 P2
DATAIN PCL OUT
DATAIN
DATAINPCL OUT PCL OUT
PCH OUT PCH OUT PCH OUT
XTAL
ALE
*PSEN
Porta P0
Porta P2
PC -- Program CounterPCL -- LSB do Program CounterPCH -- MSB do Program Counter
(AD0-7)
(A8-15)
Figura 3.2. Fetch de programa, Memria Externa.
Cada perodo de Clock recebe o nome de Fase (Phase). Cada estado composto por 2
perodos de Clock ou 2 fases, denominadas P1 e P2. Observar que EST1=EST4, EST2=EST5, etc. O
Program Counter (PC) composto por dois registros de 8 bits: PC = PCH + PCL.
As freqncias de ALE e *PSEN so iguais a 1/6 da freqncia do cristal, mas o "Duty
Cycle (DC) diferente para cada uma. ALE tem o DC=33% (1/3) enquanto que *PSEN tem o
DC=50% (1/2).
f(ALE) = f(*PSEN) = f(XTAL)/6
DC(ALE) = 33% ==> 33% alto e 67% baixo
DC(*PSEN) = 50% ==> 50% alto e 50% baixo
EST 5
P1 P2
EST 4
P1 P2
EST 6
P1 P2
EST 1
P1 P2
EST 2
P1 P2
EST 3
P1 P2
EST 4
P1 P2
EST 5
P1 P2
DATAIN PCL se Prog Ext
XTAL
ALE
*RD
Porta P0
Porta P2
DPL ou Ri
PCH ou P2 SFR DPH ou P2
FLOAT
PCH ou P2 SFR
(AD0-7)
(A8-15)
Figura 3.3. Leitura na Memria de Dados Externa.
CAPTULO III PINAGEM E TEMPORIZAO
MICROCONTROLADORES (MCS-51) 3 - 5
EST 5
P1 P2
EST 4
P1 P2
EST 6
P1 P2
EST 1
P1 P2
EST 2
P1 P2
EST 3
P1 P2
EST 4
P1 P2
EST 5
P1 P2
PCL se Prog Ext
XTAL
ALE
*WR
Porta P0
Porta P2
DPL ou Ri
DPH ou P2
DATA OUT
PCH ou P2 SFR PCH ou P2 SFR
(AD0-7)
(A8-15)
Figura 3.4. Escrita na Memria de Dados Externa.
A leitura e a escrita na Memria de Dados Externa usam o dobro de tempo quando so
comparadas com um acesso memria de programa. Notar que f(ALE) no tem f(XTAL)/6 pela
ausncia de um pulso de ALE e que no existe *PSEN. Perde-se um pulso de ALE e dois pulsos de
*PSEN. Ento,
f(ALE) = f(*PSEN) = f(XTAL)/6 mas, quando h acessos Memria de Dados Externa,
se perdem 1 pulso de ALE e 2 pulsos de *PSEN.
Nos acessos Memria de Dados Externa usado um endereo de 16 bits. Esse
endereo pode ser formado por um registro ponteiro de dados de 16 bits, DPTR (DPTR = DPH +
DPL) ou por R0 ou R1 e o contedo do SFR P2.
MSB LSB
DPTR DPH e DPL P2 e Ri SFR P2 e R0 ou R1
Exemplos:
leitura escrita
Com DPTR MOVX A,@DPTR ou MOVX @DPTR,A Com P2 e Ri MOVX A,@Ri ou MOVX @Ri,A (onde i=0 ou i=1)
Notar que quando se usa DPTR para enderear a memria externa, os 16 bits dos
endereos so emitidos por P0 e P2 mas ao se usar Ri, os 16 bits so formados pelo contedo de Ri
(LSB) e o que estava no SFR P2, ou seja, no se altera o contedo de P2.
CAPTULO III PINAGEM E TEMPORIZAO
3 - 6 MICROCONTROLADORES (MCS-51)
EST 5
P1 P2
EST 4
P1 P2
EST 6
P1 P2
EST 1
P1 P2
EST 2
P1 P2
EST 3
P1 P2
EST 4
P1 P2
EST 5
P1 P2
XTAL
P2,P3RSTP0
P1 P2,P3RSTP0
P1amostragem das entradas
DADO ANTIGO DADO NOVO
MOV PORTA,DADO
amostragem da entrada RXD
amostragem da entrada RXD
SHIFT CLOCKPORTA SERIALMODO 0
Figura 3.5. Operao das portas.
3.4. RESET
A entrada de Reset o pino RST que possui um Schmitt Triger na entrada. O Reset
realizado quando este pino se mantm em nvel alto pelo menos por 2 ciclos de mquina (24 clocks)
enquanto o oscilador estiver funcionando. A CPU responde gerando um reset interno de acordo com
a temporizao que indicada na figura 3.6.
E3 E4E1 E2 E5 E6E3 E4E1 E2 E5 E6E5 E6 E3 E4E1 E2
RST
ALE
*PSEN
Porta P0
RESET INTERNO
INSTRUC.END.
11 PERODOS DE CLOCK 19 PERODOS DE CLOCK
Amostragem do RESET
E5, P2 12 PERODOS DE CLOCK
END.
END.
END.
END.
INSTRUC. INSTRUC. INSTRUC. INSTRUC.
19 PERODOS DE CLOCK
Figura 3.6. Temporizao do RESET.
CAPTULO III PINAGEM E TEMPORIZAO
MICROCONTROLADORES (MCS-51) 3 - 7
A entrada RST assncrona e amostrada durante a fase 2 (P2) do estado 5 (E5).
Depois do RST ser amostrado como alto, ainda se mantm atividade nos pinos durante 19 perodos
de clock. Os pinos s cessaro a atividade 19 a 31 perodos de clock depois de RST ser ativada.
Aps o RST, os pinos ALE e PSEN vo para 1. Depois de RST=0 (desativada), so
necessrios 1 a 2 perodos de clock para que ALE e PSEN comecem. Por isso, outros dispositivos
externos no podem ser sincronizados com o tempo interno do Reset do 8051.
A RAM Interna no afetada pelo reset. Depois do RESET, a CPU inicializada com os
seguintes dados:
SP = 7 ESTADO DOS REGISTROS
SBUF = ? APS O RESET
P0,P1,P2,P3 = FFH
OUTROS SFR = 0
Uma maneira fcil de realizar o "Power on Reset" e o "Reset Manual" mostrada na
figura 3.7.
8051
RESET
VCC
C 10 uF
R 8,2 K
Figura 3.7. Circuito para RESET do 8051 (HMOS).
O esquema da figura 3.7 vlido para HMOS. Nas famlias CHMOS o resistor 8,2 K pode ser omitido pois h um "pull-down" interno; alm disso, o capacitor deve ser reduzido a 1 F.
Quando energizado, o circuito (RC) assegura no pino RST um nvel alto durante uma
quantidade de tempo que depende dos valores de R e C. Para ter um "Power On Reset" seguro
necessrio que o pino RESET seja mantido em alto durante o tempo necessrio para que o oscilador
inicie e a isto se adicionam os 24 perodos de clock para o RESET efetivo.
Tempos que sero computados no power up:
Vcc se estabiliza 10ms Partida do oscilador 1ms (10MHz) 10ms (1MHz)
CAPTULO III PINAGEM E TEMPORIZAO
3 - 8 MICROCONTROLADORES (MCS-51)
Com este circuito de Reset Vcc cai rapidamente a 0. Com isto, a tenso do pino RST
pode cair momentaneamente abaixo de 0 mas no causa danos. Com a chave em paralelo com um
capacitor pode-se gerar o RESET manual. Para que se possa projetar um RESET eficiente e preciso
necessrio analisar o circuito RC de primeira ordem.
Vcc
C10 uF
R8,2 K
VR
V
tT
V
R
R
Figura 3.8. Anlise do circuito para RESET do 8051.
Da anlise do circuito se pode escrever a equao:
V V eR CCt / RC=
A pergunta, quando se calcula um circuito de RESET, : Qual RC me garante que o
RESET fique ativado por um tempo maior que o especificado ? Para que se possa responder a esta
pergunta necessrio saber qual a tenso de comutao do Schmitt-Trigger do 8051 e qual o
modelo eltrico da entrada RESET (ou seja, quanta corrente consome). Essas informaes no esto
facilmente disponveis nem nos Data Sheets.
Exemplo: com o 8051 usando cristal de 1 MHz:
10 ms estabilizar Vcc 10 ms partida do oscilador 24 s necessrios para o Reset (24 perodos de clock) 20024 s Tempo do Reset = 20,024 ms =(aprox.) 20 ms
Supondo que o Schmitt Trigger comute a 3,5 V (na transio de alto para baixo; valores
abaixo de 3,5 V na entrada geram 0 na sada) e usando os valores de R e C da figura 3.7, calcula-se.
ln(3,5) - ln(5) = -(t/RC)
t = RC ( ln(3,5) - ln(5) ) = 29 ms > 20 ms OK !
Pelo que parece, o circuito de RESET sugerido deve funcionar.
CAPTULO III PINAGEM E TEMPORIZAO
MICROCONTROLADORES (MCS-51) 3 - 9
Apresenta-se um circuito alternativo que, apesar do maior gasto de componentes,
permite o conhecimento da tenso do Schmitt Trigger, saber seu consumo e calcular precisamente o
circuito de RESET. Neste circuito o diodo usado para garantir uma rpida descarga do capacitor
quando se desliga a fonte de alimentao.
8051
RESET
VCC
R8,2K
1 2
74LS14
C10 uF
R10 SCHMITT
TRIGGER
Evita a descarga
brusca do capacitor
RESET
DIODO
MANUAL
Figura 3.9. Circuito de RESET com Schmitt-Trigger TTL.
CAPTULO IV CONJUNTO DE INSTRUES
MICROCONTROLADORES (MCS-51) 4 - 1
CAPTULO 4
CONJUNTO DE INSTRUES 4.1. INTRODUO
Todos os membros da famlia MCS-51 executam o mesmo conjunto de instrues. As
instrues so otimizadas para aplicaes de controle de 8 bits. Elas permitem um rpido
endereamento da RAM interna, facilitando operaes byte a byte em estruturas de dados pequenas.
O conjunto de instrues tambm oferece um grande suporte para manipulaes e operaes de
variveis de um bit, facilitando os sistemas lgicos que necessitam de operaes booleanas.
A seguir sero mostradas todas as instrues da famlia MCS-51. Para uma descrio
mais detalhada dessas instrues deve-se consultar o manual do MCS-51. (Aqui se supe que o
leitor tenha uma pequena experincia em programao assembly).
Para ajudar os programadores, os programas montadores para o MCS-51 tm os
endereos dos SFR e dos bits previamente declarados. como se em todo programa j existisse as
pseudo-instrues:
Acc EQU 0E0H
B EQU 0F0H
PSW EQU 0D0H
etc.
Para a exposio das instrues, utilizar-se-o as seguintes abreviaturas:
Rn qualquer registro R0, R1, ...,R7 direto, dir endereo da RAM interna (8 bits) @Ri @R0 ou @R1, usado para endereamento indireto #data, #dt constante de 8 bits (byte) #data16, #dt16 constante de 16 bits adr16 endereo de 16 bits (enderea 64 KB) adr11 endereo de 11 bits (enderea 2 KB) rel deslocamento relativo (complemento a 2: -128 a +127) bit endereo de um bit da RAM interna A acumulador (registro) Acc endereo do acumulador.
CAPTULO IV CONJUNTO DE INSTRUES
4 - 2 MICROCONTROLADORES (MCS-51)
4.2. MODOS DE ENDEREAMENTO
De acordo com o "Data Sheet" do MCS-51, existem 6 modos de endereamento com a
seguinte nomenclatura :
Imediato Direto Indireto Registrador Registrador Especfico Indexado
Imediato O valor da constante colocado no opcode. MOV A, #100
Carrega 100 no acumulador (Acc=100). O byte 100 um dado imediato. Deve-se notar
a presena do sinal # que indica operao imediata.
Direto O operando especifica um endereo de 8 bits da RAM interna. MOV A, 20
Transfere para o acumulador o contedo do endereo 20 da RAM Interna. Todo
endereamento direto usa a RAM Interna.
Indireto Aqui se especifica um registro onde est o endereo do operando. S pode ser usado para endereamento indireto: R0, R1 ou DPTR.
MOV A, @R0
Coloca no acumulador o contedo do endereo que est em R0
Registro No cdigo de operao da instruo existe um campo de 3 bits (pois so 8 registradores, de R0 a R7) onde especificado o registro a ser utilizado. Essa forma eficiente e
evita utilizar um byte adicional para indicar o registro.
MOV A,R0
Coloca no acumulador o contedo de R0. uma instruo de um s byte.
Registro Especifico Algumas operaes so especificas para certos registros. Por exemplo, algumas instrues sempre operam com Acc ou DPTR e no necessitam de espao no opcode para
especificar isto.
MOVX A,@DPTR
Esta uma instruo para leitura da Memria de Dados Externa. Coloca no
acumulador o contedo do endereo da RAM Externa que est no DPTR. Como sempre so usados
CAPTULO IV CONJUNTO DE INSTRUES
MICROCONTROLADORES (MCS-51) 4 - 3
Acc e DPTR, no necessrio especific-los, o que faz com que a instruo empregue apenas 1
byte.
Indexado O endereo do operando formado pela soma de um endereo base com um registro de indexao. Somente a Memria de Programa pode ser endereada deste modo.
MOVC A,@A+DPTR
A ndice, DPTR endereo base. A soma do DPTR com o acumulador forma um endereo da Memria de Programa e o
contedo deste endereo transferido para o acumulador. Essa instruo tima para "look up
table".
Observao: tambm existe um desvio indexado 4.3. SOBRE AS INSTRUES
Agora sero mostradas as instrues do MCS-51. Estas no sero muito detalhadas.
Em cada instruo so apresentados o nmero de bytes do opcode e o nmero de ciclos de mquina
(MC=12 clocks) necessrios para sua execuo.
Existem 111 instrues na famlia MCS-51. Elas esto distribudas da seguinte forma:
Aritmticas 24 22% Lgicas 25 23% Transferncia de dados 28 25% Booleanas 17 15% Desvios 17 15%
4.4. INSTRUES ARITMTICAS
4.4.1. Soma de 8 Bits:
O acumulador um dos operandos e tambm armazena o resultado. Existem 4
instrues de soma: bytes MC CY AC OV Rn 1 1 ADD A, direto 2 1 @Ri 1 1 #data 2 1
X X X
CAPTULO IV CONJUNTO DE INSTRUES
4 - 4 MICROCONTROLADORES (MCS-51)
4.4.1. Soma de 8 Bits com Carry:
O acumulador um dos operandos e tambm armazena o resultado. So 4 instrues
de soma com carry:
bytes MC CY AC OV Rn 1 1 ADDC A, direto 2 1 @Ri 1 1 #data 2 1
X X X
4.4.3. Subtrao de 8 Bits com Borrow:
O acumulador um dos operandos e tambm recebe o resultado. Deve-se lembrar que
a subtrao sempre usa o borrow. So 4 instrues de subtrao com borrow:
bytes MC CY AC OV Rn 1 1 SUBB A, direto 2 1 @Ri 1 1 #data 2 1
X X X
4.4.4. Incremento de 8 Bits:
Existem 4 instrues para incremento de 8 bits :
bytes MC CY AC OV A 1 1 INC Rn 1 1 direto 2 1 @Ri 1 1
- - -
4.4.5. Decremento de 8 Bits:
H 4 instrues de decremento de 8 bits e muito se assemelham s instrues de
incremento:
CAPTULO IV CONJUNTO DE INSTRUES
MICROCONTROLADORES (MCS-51) 4 - 5
4.4.6. Incremento de 16 Bits:
Existe apenas um incremento de 16 bits (no h decrementos de 16 bits) :
bytes MC CY AC OV INC DPTR 1 2 - - -
4.4.7. Multiplicao e Diviso de 8 Bits:
Na multiplicao e na diviso sempre so usados os registros A e B. Estas so as
instrues que necessitam mais tempo de execuo.
Multiplicao: A * B Resultado: A=LSB B=MSB Diviso: A / B Resultado: A=quociente B=resto
bytes MC CY AC OV MUL AB 0 - X
DIV AB 1 4 0 X 0
4.4.8. Ajuste Decimal:
Esta instruo existe para permitir operaes com representao BCD. O ajuste valido
apenas para as somas (ADD e ADDC). Existe uma nica instruo:
bytes MC CY AC OV DA A 1 1 X X -
OBS 1: DA A no pode simplesmente converter um nmero hexadecimal no Acumulador para BCD
nem se aplica subtrao.
Exemplo: A = 56H (0101 0110B) representando 56 decimal
R3 = 67H (0110 0111B) representando 67 decimal
Carry = 1
bytes MC CY AC OV A 1 1 DEC Rn 1 1 direto 2 1 @Ri 1 1
- - -
CAPTULO IV CONJUNTO DE INSTRUES
4 - 6 MICROCONTROLADORES (MCS-51)
ADDC A, R3 A = 0BEH e C (carry) e AC (auxiliar carry) iguais a 0 DA A A = 24H (= 0010 0100B) e Carry=1
Algoritmo de ajuste da soma pela instruo DAA:
1- Se os bits 3-0 de A forem maiores que 9 ou se AC=1 6 somado a A para gerar o dgito BCD menos significativo. Esta soma interna pode ligar o carry se o carry da nibble menos
significativa propagar por toda a nibble mais significativa mas no apagar o carry.
2- Se o carry est agora em 1 ou se os bits 7-4 excederem 9, esta nibble incrementada de 6
para produzir o dgito BCD mais significativo. O carry indicar se a soma maior do que 99.
O OV (overflow) no afetado.
Na realidade, soma-se 00H, 06H, 60H ou 66H conforme o valor inicial de A e PSW.
OBS 2: Nmeros BCD podem ser incrementados somando 01H ou decrementados somando 99H e
usando o ajuste decimal DA A.
Exemplo: Se A = 30H (representando 30 decimal), as instrues
ADD A,#99H
DA A
resultaro em A = 29H (representando 29 decimal) e C (Carry) = 1 pois 30 + 29 = 129
4.5 INSTRUES LGICAS
As instrues lgicas so as que realizam as operaes de AND, OR e XOR. Deve-se
notar que essas instrues so muito semelhantes. O resultado da operao no obrigatoriamente
deve ser colocado no acumulador; tambm se pode indicar um endereo para receber o resultado.
4.5.1. AND de 8 Bits:
Usa-se o smbolo ANL (Logical AND) para representar esta instruo. Existem 6
instrues reunidas em dois grupos de acordo com o destino do resultado:
bytes MC CY AC OV Rn 1 1 ANL A, direto 2 1 @Ri 1 1 #data 2 1 ANL direto A 2 1 #data 3 2
- - -
CAPTULO IV CONJUNTO DE INSTRUES
MICROCONTROLADORES (MCS-51) 4 - 7
4.5.2. OR de 8 Bits:
Emprega-se o smbolo ORL (Logical OR) para representar esta instruo. Existem 6
instrues, reunidas em dois grupos de acordo com o destino do resultado:
bytes MC CY AC OV Rn 1 1 ORL A, direto 2 1 @Ri 1 1 #data 2 1 ORL direto A 2 1 #data 3 2
- - -
4.5.3. XOR de 8 Bits:
Emprega-se o smbolo XRL (Logical Exclusive OR) para representar esta instruo.
Existem 6 instrues, reunidas em dois grupos de acordo com o destino do resultado:
bytes MC CY AC OV Rn 1 1 XRL A, direto 2 1 @Ri 1 1 #data 2 1 XRL direto A 2 1 #data 3 2
- - -
4.5.4. Operaes Lgicas com o Acumulador:
Pode-se inicializar, complementar ou rodar o acumulador. As rotaes podem se realizar
para a direita ou para a esquerda utilizando ou no o bit de carry. Tambm se pode trocar de posio
as nibbles do acumulador (uma nibble formada por 4 bits, ou seja, um byte possui 2 nibbles). Todas
estas instrues so classificadas como de registro especfico pois sempre operam com o
acumulador (no utilizam bytes de opcode para especificar isto). As instrues so:
CLR A inicializa com zero o acumulador CPL A complementa de 1 o acumulador (inverte os bits) RL A roda o acumulador esquerda RLC A roda o acumulador esquerda com carry RR A roda o acumulador direita RRC A roda o acumulador direita com carry SWAP A intercambiar as nibbles do acumulador
CAPTULO IV CONJUNTO DE INSTRUES
4 - 8 MICROCONTROLADORES (MCS-51)
bytes MC CY AC OV CLR - - -
CPL - - -
RL - - -
RLC X - -
RR - - -
RRC X - -
SWAP
A 1 1
- - -
Acc
Acc
C Acc
Acc
C
xxxx zzzz
RL A
RLC A RRC A
RR A
Acc
SWAP A
Figura 4.1. Grfico das rotaes e do swap.
4.6. INSTRUES DE TRANSFERNCIA DE DADOS
Existem 3 tipos de instrues de transferncia de dados:
as que trabalham com a RAM Interna (22), as que trabalham com a Memria de Dados Externa (4) e as que trabalham com a Memria de Programa (2). Em geral, as transferncias de dados operam na RAM Interna, a menos que se indique o
contrrio.
4.6.1. Transferncia de Dados:
Todas as operaes se realizam na RAM Interna. Existem quase todas as
transferncias que se possa imaginar.
CAPTULO IV CONJUNTO DE INSTRUES
MICROCONTROLADORES (MCS-51) 4 - 9
bytes MC CY AC OV Rn 1 1 MOV A, direto 2 1 @Ri 1 1 #data 2 1 A 1 1 MOV Rn, direto 2 2 #data 2 1 A 2 1 Rn 2 2 MOV direto, direto 3 2 @Ri 2 2 #data 3 2 A 1 1 MOV @Ri direto 2 2 #data 2 1
- - -
Pode-se pensar que existem todas as combinaes possveis entre A, Rn, direto, @Ri e
#data, mas existem algumas excees:
Todas as combinaes possveis: A A
Rn Rn
MOV direto , Direto
@Ri @Ri
#data
Instrues que no existem: A , A
Rn , Rn
MOV Rn , @Ri
@Ri , @Ri
@Ri , Rn
CAPTULO IV CONJUNTO DE INSTRUES
4 - 10 MICROCONTROLADORES (MCS-51)
4.6.2. Permutao de Bytes:
Toda permutao opera na RAM Interna. Estas instrues so muito teis pois permitem
a troca de contedo entre dois registros sem a necessidade de usar um outro auxiliar. Existem 3
permutaes e todas usam o acumulador como um dos operandos.
bytes MC CY AC OV Rn 1 1 XCH A, direto 2 1 @Ri 1 1
- - -
4.6.3. Permutao de Nibbles:
Existe s uma instruo e esta opera com a RAM Interna. Nesta instruo sempre se
usa o acumulador e um operando (por endereamento indireto). til para trabalhar com BCD e em
converses de hexadecimal para cdigo ASCII.
bytes MC CY AC OV XCHD A,@Ri 1 1 - - -
Acc @Riaaaa bbbb cccc dddd
Figura 4.2. Grfico da permutao de nibbles.
4.6.4. Operaes com a Pilha:
Como j foi estudada, a pilha opera exclusivamente com a RAM Interna. Existem apenas
duas instrues de pilha e trabalham com endereamento direto. Quer dizer, sempre usam dois bytes
para o opcode e no se pode usar a instruo PUSH A, mas sim PUSH Acc. Deve-se lembrar que
Acc o label para o endereo do acumulador. Na instruo PUSH, primeiro incrementa-se o ponteiro
(SP) e em seguida escreve-se a informao. Exemplo: se SP=7, PUSH Acc colocar o contedo do
acumulador no endereo 8. A instruo POP trabalha ao contrrio.
bytes MC CY AC OV PUSH direto
POP direto 2 2 - - -
CAPTULO IV CONJUNTO DE INSTRUES
MICROCONTROLADORES (MCS-51) 4 - 11
4.6.5. Transferncias de Dados com a Memria de Dados Externa:
Existem instrues para leitura e escrita, as quais sempre usam o acumulador como
fonte ou destino do dado. possvel fazer dois acessos, um com endereamento de 16 bits usando o
DPTR e outro com endereamento de 8 bits usando @Ri (@R0 ou @R1). Deve-se lembrar que
quando se usa endereamento de 8 bits, o contedo de P2 permanece inalterado e representa os 8
bits mais significativos do endereo. A instruo usada MOVX, onde X indica que se trabalhar com
Memria de Dados Externa.
LEITURA bytes MC CY AC OV MOVX A, @Ri DPTR
1 2 - - -
ESCRITA bytes MC CY AC OV MOVX @Ri,
MOVX @DPTR, A 1 2 - - -
4.6.6. Leitura da Memria de Programa:
Quando se trabalha com Memria de Programa separada da Memria de Dados
Externa, a Memria de Programa s pode ser lida (sinal *PSEN). Existem duas instrues para
realizar esta operao e tambm so as nicas que usam endereamento indexado. So muito
convenientes para construo de tabelas de consulta. O mnemnico empregado muda para MOVC
onde o C indica Memria de Cdigos.
LEITURA bytes MC CY AC OV MOVC A, @A+DPTR 1 2 @A+PC
- - -
4.7. INSTRUES BOOLEANAS
So chamadas de instrues booleanas as que trabalham com bits. Todas essas
instrues operam com um s bit por vez e o CARRY (C) funciona como se fosse o acumulador, ou
seja, um dos operandos e normalmente armazena o resultado. Os bits so endereados
diretamente, mas quando se usa o CARRY este endereado implicitamente. Existem tambm
desvios baseados no estado dos bits; estes so relativos posio atual do PC e se pode saltar 127
bytes adiante ou 128 bytes para trs.
CAPTULO IV CONJUNTO DE INSTRUES
4 - 12 MICROCONTROLADORES (MCS-51)
4.7.1. Zerar/ Setar /Complementar um Bit:
Para carregar zero: usa-se a instruo CLR Para carregar um: usa-se a instruo SETB Para complementar: usa-se a instruo CPL
bytes MC CY AC OV CLR C 1 1 0 - - bit 2 1 - - -
SETB C 1 1 1 - - bit 2 1 - - -
CPL C 1 1 X - - bit 2 1 - - -
4.7.2. AND/OR Booleano:
H dois AND e dois OR. Nestas instrues o carry (C) trabalha como o acumulador, quer
dizer, um dos operandos e tambm recebe o resultado. Exemplo: ANL C,bit C = C AND bit. Empregam-se os mnemnicos ANL para Logical AND e ORL para Logical OR. Nas instrues em
que um operando "/bit", indica que a operao se realiza com o complemento deste bit. Essas
operaes so muito convenientes quando se implementam operaes booleanas.
bytes MC CY AC OV ANL C, bit 2 1 /bit
ORL C, bit 2 1 /bit
X - -
4.7.3. Movimento de Bits:
So duas as instrues para movimento de bits e sempre envolvem o CARRY.
bytes MC CY AC OV MOV C , bit 2 1 X - -
MOV bit , C 2 2 - - -
4.7.4. Desvios Baseados em Bits:
So 5 as instrues de desvio: duas se baseiam no CARRY e as outras trs operam
com qualquer bit. Os mnemnicos JB e JC so usados para desviar se o bit est ativado (em um) e
CAPTULO IV CONJUNTO DE INSTRUES
MICROCONTROLADORES (MCS-51) 4 - 13
JNB e JNC para desviar se o bit est desativado (em zero). Existe o mnemnico JBC que desvia se
o bit est ativado e depois complementa este bit.
bytes MC CY AC OV JC rel 2 2 JNC
JB JNB bit,rel 3 2 JBC
- - -
4.8. INSTRUES DE DESVIO
Nas instrues de desvio esto includas as chamadas de subrotinas (CALL) e os
desvios (JMP); estes podem ser realizados com 11 ou 16 bits. Tambm esto includos os desvios
condicionais (JZ, JNZ, CJNE), os loops (DJNZ) e as instrues de retorno (RET, RETI).
4.8.1. Chamadas de Subrotinas:
So duas as instrues de chamada de subrotinas: a instruo LCALL, que usa um
endereo de 16 bits e por isso permite acesso a qualquer posio nos 64 KB de programa, e a
instruo ACALL, que usa apenas 11 bits, ou seja, permite acesso dentro de um bloco de 2 KB da
memria de programa; os 11 bits menos significativos do PC so trocados pelos bits especificados na
instruo. A vantagem que ACALL necessita apenas de 2 bytes para o opcode enquanto que
LCALL precisa de 3 bytes.
bytes MC CY AC OV LCALL adr16 3 2 ACALL adr11 2 2
- - -
4.8.2. Retorno de Subrotinas:
So 2 as instrues de retorno de subrotinas. A instruo RET o retorno usual. A
instruo RETI usada para retorno das subrotinas que atendem as interrupes, indicando o fim de
uma rotina de interrupo. Mais adiante, no captulo de interrupes, ser abordado este tema com
maior detalhe.
CAPTULO IV CONJUNTO DE INSTRUES
4 - 14 MICROCONTROLADORES (MCS-51)
bytes MC CY AC OV RET 1 2 RETI
- - -
4.8.3. Desvios:
So quatro as instrues de desvios. H dois desvios que so idnticos s chamadas de subrotinas e
que tambm permitem saltar numa faixa de 2 KB (AJMP) ou de 64 KB (LJMP). Os outros dois
desvios so relativos.
bytes MC CY AC OV AJMP adr11 2 2 LJMP adr16 3 2 SJMP Rel 1 2 JMP @A+DPTR 1 2
- - -
4.8.4. Desvios Condicionais:
H dois desvios que so feitos com os valores do acumulador: JZ, que salta se o
contedo do acumulador zero, e JNZ, que salta se o contedo do acumulador no zero. Deve-se
notar que no existe o flag zero (como nos Z80 e 8085); a deciso para o desvio feita com o
contedo atual do acumulador. H outras 4 instrues que usam o mnemnico CJNE, que significa
"compare dois elementos e desvie se forem diferentes". Todos estes desvios so relativos e por isso
tm um alcance de 127 bytes para adiante e 128 bytes para trs.
bytes MC CONDIO CY AC OV JZ rel 2 2 se Acc = 0 - - -
JNZ se Acc 0
CJNE A ,direto ,rel 3 2 se Acc Direto
A se Acc (#data)
CJNE Rn ,#data ,rel 3 2 se Rn (#data)
@Ri se @Ri (#data)
4.8.5. Loops :
As instrues de loops so do tipo "decremente e desvie se for diferente de zero"
(DJNZ). H duas instrues, as quais so muito teis para a repetio de determinadas partes do
programa. Utilizam como contador um registro ou um byte da RAM Interna e por isso tm um limite
de at 256 repeties. Como so baseadas em desvios relativos, tm um alcance de 127 bytes para
adiante e de 128 bytes para trs.
CAPTULO IV CONJUNTO DE INSTRUES
MICROCONTROLADORES (MCS-51) 4 - 15
bytes MC CY AC OV DJNZ Rn ,rel 2 2 direto
- - -
4.8.6. No Operao :
H uma instruo que no faz nada, consumindo apenas ciclos da CPU. muito til
para reservar espaos na memria de programa quando se trabalha com EPROM.
bytes MC CY AC OV NOP 1 1 - - -
4.9. INSTRUES E FLAGS
Para a perfeita utilizao das instrues necessrio conhecer como estas alteram os
flags. Em seguida apresenta-se uma pequena tabela com um resumo dessas informaes. Na tabela,
0 (zero) indica que o flag apagado, 1 (um) indica que ativado, X (don't care) significa que o flag
ser ativado ou apagado de acordo com o resultado da instruo e "-" indica que o flag no
alterado.
INSTR/FLAG C OV AC ADD X X X ADDC X X X SUBB X X X MUL 0 X - DIV 0 X - DA X - - RRC X - - RLC X - - SETB C 1 - - CLR C 0 - - CPL C X - - ANL C,bit X - - ANL C,/bit X - - ORL C.bit X - - ORL C,/bit X - - MOV C,bit X - - CJNE X - -
Figura 4.3. Comportamento dos flags.
CAPTULO IV CONJUNTO DE INSTRUES
4 - 16 MICROCONTROLADORES (MCS-51)
4.10. OBSERVAES
Aqui convm fazer uma pausa para alguns comentrios e exemplos sobre
endereamento e uso das instrues.
4.10.1. Bancos de Registros :
Existem quatro bancos, selecionados por RS1 e RS0. Estes bancos podem ser
acessados como registros, com endereamento direto ou com endereamento indireto.
BANCO 0 BANCO 1 BANCO 2 BANCO 3
R0 R1...R7 R0 R1...R7 R0 R1...R7 R0 R1...R7
Endereo: 00 01 07 08 09 15 16 17 23 24 25 31
Supondo que o banco 1 esteja selecionado, as instrues seguintes do como resultado
a mesma operao mas algumas consomem menos bytes que outras.
MOV A,R1 1 Byte 1MC (A,Rn)
MOV A,9 2 Bytes 1MC (A,direto)
Tambm se pode fazer uma seqncia para endereamento indireto:
MOV R0,#9 2 Bytes 1MC
MOV A,@R0 1 Byte 1MC
Total 3 Bytes 2MC
Os registros de outros bancos so acessados empregando endereamento direto ou
indireto :
MOV A,23 2 bytes 1 MC (23 e/ou R7 do banco 2)
Aqui so apresentadas algumas instrues interessantes para realizar transferncias
entre registros (supe-se que o banco 3 esteja selecionado) :
MOV R1,R6 (no existe)
MOV R1,30 (equivale a MOV R1,R6)
MOV 25,R6 (equivale a MOV R1,R6)
MOV R1,R1 (no existe)
MOV R1,25 (equivale a MOV R1,R1)
MOV 25,R1 (equivale a MOV R1,R1)
CAPTULO IV CONJUNTO DE INSTRUES
MICROCONTROLADORES (MCS-51) 4 - 17
4.10.2. Registros Especiais (SFR) :
Deve-se notar que todos os SFR, exceto o Acumulador, so acessados empregando
endereamento direto. Para que exista compatibilidade com o 8052, no se permite endereamento
indireto para os SFR. No 8052, quando se usa endereamento indireto com endereos maiores que
07FH, acessa-se a regio chamada 128 UPPER. As duas instrues a seg