-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
1/97
MICROCONTROLADORESMCS51
Hugo Vieira Neto, M.Sc.([email protected])
Curitiba, 2002
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
2/97
SUMRIO
Sistemas Microprocessados.............................................................................2Hardware ...............................................................................................2Software.................................................................................................5
Microcontroladores ...........................................................................................7
Microcontroladores MCS51..............................................................................8Parte 1 Hardware Bsico
Disposio dos Terminais ......................................................................9Descrio Funcional dos Terminais .....................................................10Arquitetura Interna ...............................................................................12Organizao da Memria.....................................................................13Bancos de Registros............................................................................14Registros Bit Endereveis ..................................................................15Registros de Funo Especial .............................................................15Clock....................................................................................................17Reset....................................................................................................18Memrias Externas de Programa e de Dados .....................................19
Parte 2 - SoftwareProgramao .......................................................................................25Modos de Endereamento...................................................................25Conjunto de Instrues ........................................................................26Linguagem Assembly...........................................................................47Tpicos Importantes em Programao ................................................49
Linguagem C........................................................................................51Parte 3 Hardware AvanadoPorts de Entrada e Sada.....................................................................52Interrupes .........................................................................................60Temporizadores / Contadores de Eventos...........................................67Interface Serial .....................................................................................80Modos de Reduo de Consumo.........................................................84
Bibliografia......................................................................................................86
Informaes teis na Internet.........................................................................87
AnexosConjunto de Instrues MCS51Manual da Placa P51Manual do Paulmon
Tutoriais
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
3/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 2
SISTEMAS MICROPROCESSADOS
Sistemas microprocessados dividem-se basicamente em hardware esoftware. O hardware constitudo dos componentes fsicos do sistema(dispositivos eletrnicos) e o software constitudo dos componentes lgicos
(programas e dados). Chama-se de firmware o conjunto de programasgravados em ROM, especficos para o funcionamento de um determinadosistema microprocessado.
HARDWARE
Principais Dispositivos de Hardware
Microprocessador (CPU): Constitui o bloco "inteligente" do sistema. Segueuma seqncia de instrues previamente armazenadas, chamada deprograma. o responsvel pela execuo de operaes lgicas, aritmticase de controle.
Memria no-voltil (ROM, PROM, EPROM): Armazena a seqncia deinstrues do programa a ser executado.
Memria voltil (SRAM, DRAM): Armazena temporariamente os dadosrelativos ao programa. Tambm pode armazenar programas de maneiratemporria.
Perifricos (interface paralela, interface serial, temporizadores / contadores
de eventos, entre outros): So os responsveis pela comunicao com omundo externo ao sistema (entrada e sada de dados).
Decodificador de endereos: Seleciona o dispositivo a ser acionado pelomicroprocessador, auxiliando o microprocessador no gerenciamento dobarramento de dados.
Circuito de reset: o responsvel pela inicializao do sistema.
Circuito de clock: Fornece a cadncia (velocidade) de execuo dasinstrues do programa pelo microprocessador.
Principais Sinais Digitais Barramento de Dados (Data Bus): Consiste no conjunto de sinais digitais
por onde trafegam dados entre diferentes dispositivos. Trata-se de uma viabidirecional compartilhada entre todos os componentes do sistemamicroprocessado. Normalmente apenas dois dispositivos fazem uso dobarramento de dados em cada instante de tempo (transmissor e receptor),ficando os demais em alta impedncia. Quem comanda o barramento dedados o microprocessador, atravs dos barramentos de endereos e decontrole, exceto durante operaes de DMA (Acesso Direto Memria),quando o controle cedido a algum perifrico.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
4/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 3
Barramento de Endereos (Address Bus): o conjunto de sinais digitaisatravs do qual so selecionados dispositivos conectados ao barramento dedados. Cada componente do sistema corresponde a um endereo ou faixade endereos, atendendo quando solicitado pelo microprocessador ou poroutro dispositivo, no caso de DMA.
Barramento de Controle (Control Bus): Conjunto de sinais digitais queauxiliam o endereamento dos diversos dispositivos de um sistemamicroprocessado, sinalizando o tipo de operao a ser efetuada. atravsdo barramento de controle que se definem operaes de leitura ou escrita,acesso memria, acesso aos perifricos ou requisies de DMA. Tambm atravs de sinais especiais do barramento de controle que so realizadasinterrupes no processamento do programa para atender a eventos demaior prioridade.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
5/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 4
E/S
BarramentodeDados
BarramentodeEndereoseControle
Memria
dePrograma
(ROM)
Circuito
DeClock
Micropro-
cessa
dor
(CPU)
Memria
DeDados
(RAM)
Perifricos
Decodificador
deEndereos
(Seleo)
Circuito
deReset
Interrupes
DiagramaemB
locosdeumS
istemaMicroproce
ssadoGenrico
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
6/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 5
SOFTWARE
Principais Conceitos de SoftwareSistemas microprocessados operam segundo a execuo seqencial de
instrues e operandos armazenados em memria. A essa lista de instruesd-se o nome de programa armazenado. Como a execuo do programa seqencial, apenas uma instruo executada a cada instante de tempo.Chama-se de algoritmo uma seqncia de operaes simples para se realizaruma determinada tarefa mais complexa.
Uma das formas mais comuns e acessveis de se representar umalgoritmo o fluxograma, uma tcnica que consiste em representar na formade diagrama a seqncia das operaes e decises a serem realizadas para asua execuo. O grau de refinamento das operaes representadas em umfluxograma depende em grande parte dos recursos oferecidos pela linguagemde programao a ser utilizada.
Exemplo: Fluxograma para a Troca de uma Lmpada
INCIO
FIM
Acionar o interruptor
A lmpada acendeu?Sim
Apanhar lmpada nova
No
Posicionar escada
Subir na escada
Retirar lmpada antiga
Colocar lmpada nova
O uso de uma linguagem de programao faz-se necessrio para aimplementao real de um algoritmo na forma de programa executvel, a fimde estruturar as instrues e seus respectivos operandos na seqncia a serseguida pelo microprocessador. Cada microprocessador possui suas prpriasinstrues, as quais so codificadas de maneira nica e constituem a chamadalinguagem de mquina ou cdigo de mquina da CPU.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
7/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 6
Linguagens de ProgramaoA principal funo das linguagens de programao proporcionar ao
programador uma ferramenta para elaborao de programas que os torne maisinteligveis do que a linguagem de mquina. Sendo assim, existem linguagensde programao que se aproximam mais da linguagem do microprocessador,
chamadas linguagens de baixo nvel (como a linguagem Assembly), e existemlinguagens que se aproximam mais da linguagem do programador, chamadaslinguagens de alto nvel (como a linguagem C).
Os programas implementados em linguagens diferentes da linguagemde mquina necessitam ser traduzidas para que possam ser devidamenteexecutadas pelo microprocessador. Aplicativos que realizam a tarefa decodificar os programas para linguagem de mquina recebem os nomes demontador (assembler), no caso da linguagem Assembly, e compilador no casoda linguagem C ou qualquer outra linguagem de alto nvel. Existem tambm oschamados interpretadores, os quais codificam e executam programas emlinguagens de alto nvel em tempo real. bastante comum interpretadores paraa linguagem BASIC.
Pode-se dividir um programa grande em vrios arquivos contendocdigo-fonte, facilitando a sua manuteno (modularidade). Um outro aplicativochamado link-editor (linker) o reponsvel pela ligao dos diversos mdulosdo programa para constituir a sua forma final em linguagem de mquina oucdigo-objeto. O link-editor tambm o responsvel pela ligao do cdigo-objeto de bibliotecas de funes utilizadas em linguagens de alto nvel.
Atualmente existem ambientes integrados de desenvolvimento desoftware, constitudos de editor de cdigo-fonte, montador, compilador, link-editor e simulador de programas em um nico aplicativo.
Ferramentas de DesenvolvimentoAlm dos aplicativos necessrios para o desenvolvimento de programas
tambm so necessrias ferramentas para a validao do funcionamento dosistema como um todo (hardware e software). Para essa finalidade existemprogramas simuladores de hardware e software, programas monitores(debuggers), emuladores de memrias ROM e RAM, e emuladores demicroprocessadores e microcontroladores, podendo estes ltimos operar emtempo real ou no.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
8/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 7
MICROCONTROLADORES
Os microcontroladores, tambm chamados de "microcomputadores desomente um chip", vm revolucionando o projeto de sistemas eletrnicosdigitais devido enorme versatilidade de hardware e software que oferecem.
Um microcontrolador rene em apenas um componente os elementos deum sistema microprocessado completo, antes desempenhados por diversosdispositivos (memria ROM, memria RAM, interface paralela, interface serial,temporizadores / contadores de eventos, controlador de interrupes, entreoutros).
Talvez a vantagem mais marcante dos microcontroladores seja apossibilidade de ter seus programas gravados internamente na fabricao docomponente, impedindo a engenharia reversa ou cpias no autorizadas.
Famlias de Microcontroladores
MCS51 Intel e outros fabricantes M68HC11 Motorola
Z8 Zilog
COP8 National
PIC Microchip
AVR - Atmel
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
9/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 8
MICROCONTROLADORES MCS51
HistricoA famlia de microcontroladores MCS51 uma das mais antigas
existentes e, talvez por este motivo, uma das mais conhecidas e utilizadas.Graas a essa caracterstica, a quantidade de ferramentas de desenvolvimentoe bibliotecas de software bastante ampla e variada.
Alm da Intel (fabricante original do 8051), diversas outras empresaspassaram a comercializar diferentes verses da famlia MCS51, tais como:Atmel, Dallas Semiconductor, Intregrated Silicon Solutions, Philips, InfineonTechnologies, entre outras.
ModelosOs microcontroladores da famlia MCS51 possuem internamente ROM
(memria de programa) e RAM (memria de dados); temporizadores /
contadores de eventos; controlador de interrupes; interfaces de entrada /sada de 8 bits e interface serial sncrona / assncrona. Os principais modelosso:
8031 sem ROM (ROMLESS), 128 bytes de RAM e 2 T/C
8051 com 4KB de ROM, 128 bytes de RAM e 2 T/C
8751 com 4KB de EPROM, 128 bytes de RAM e 2 T/C
8032 sem ROM (ROMLESS), 256 bytes de RAM e 3 T/C
8052 com 8KB de ROM, 256 bytes de RAM e 3 T/C
8752 - com 8KB de EPROM, 256 bytes de RAM e 3 T/C
Variaes 80C31, 80C32, 80C51 e 80C52 verses CMOS, incluindo modos de baixo
consumo de energia
80LV31, 80LV32, 80LV51 e 80LV52 verses low-voltage (ISSI)
89C51 e 89C52 verses com memria Flash reprogramvel (Atmel, ISSI,Philips)
89C1051, 89C2051 e 89C4051 verses com memria Flash
reprogramvel, comparadores analgicos e invlucro reduzido (Atmel) 80C320 verso com clock otimizado (trs vezes mais veloz), capaz de
operar em at 33MHz (Dallas Semiconductor)
C505L verso com 32KB de ROM, 512 bytes de RAM, conversor A/D de10 bits e interface para LCD (Infineon Technologies)
P51XA-G3, P51XA-H3 e P51XAS3 verses com arquitetura de 16 bits(Philips)
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
10/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 9
DISPOSIO DOS TERMINAIS
AT89C51 (DIP40)
AT89C1051 (DIP20)
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
11/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 10
DESCRIO FUNCIONAL DOS TERMINAIS
Pino Nome E/S Funo1-8 P1.0-P1.7 E/S O Port 1 uma interface de E/S bidirecional com 8 bits
individualmente endereveis e resistores de pull-up internos.
Terminais que estejam no estado lgico 1 podem ser utilizadoscomo entradas.9 RST E Quando aplicado nvel lgico 1 a este terminal durante 2 ciclos de
mquina (com o oscilador operando) ocorre o reset domicrocontrolador. Um resistor interno conectado a VSS permite opower-on-reset com apenas um capacitor externo conectado a VCC.
10-17 P3.0-P3.7 E/S O Port 3 uma interface de E/S bidirecional com 8 bitsindividualmente endereveis e resistores de pull-up internos.Terminais que estejam no estado lgico 1 podem ser utilizadoscomo entradas. O Port 3 tambm contm os terminais deinterrupes, contadores, interface serial e expanso de memriade dados externa*.
18 XTAL2 Sada do amplificador inversor do oscilador.
19 XTAL1 Entrada do amplificador inversor do oscilador e entrada do gerador de clock interno.
20 VSS Potencial de referncia (terra).21-28 P2.0-P2.7 E/S O Port 2 uma interface de E/S bidirecional com 8 bits
individualmente endereveis e resistores de pull-up internos.Terminais que estejam no estado lgico 1 podem ser utilizadoscomo entradas. O Port 2 tambm gera a parte mais significativados endereos durante acessos s memrias externas deprograma ou dados.
29 PSEN\ S PROGRAM STORE ENABLEHabilita o acesso memria de programa externa durante a buscade instrues. Permanece em nvel lgico 1 durante o acesso damemria de programa interna.
30 ALE S ADDRESS LATCH ENABLEFornece o sinal para armazenamento da parte menos significativado endereo durante acessos s memrias externas de programaou dados.
31 EA\ E EXTERNAL ACCESSQuando em nvel lgico 1, as instrues da memria de programainterna so executadas. Quando em nvel lgico 0, todas asinstrues so buscadas na memria de programa externa. Nocaso do 8031 este terminal deve sempre estar em nvel lgico 0.
32-39 P0.0-P0.7 E/S O Port 0 uma interface de E/S bidirecional com 8 bitsindividualmente endereveis em dreno aberto. Terminais queestejam no estado lgico 1 podem ser utilizados como entradas de
alta impedncia. O Port 0 tambm atua como barramento de dadose gera de maneira multiplexada a parte menos significativa dosendereos durante acessos s memrias externas de programa oudados. No caso de acesso a memrias externas so utilizadosresistores de pull-up internos.
40 VCC Potencial de alimentao (+5V).
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
12/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 11
*Funes Especiais do Port 3
Pino Nome FunoP3.0 RXD/data Receptor da interface serial assncrona ou entrada e sada de dados da
interface serial sncrona.
P3.1 TXD/clock Transmissor da interface serial assncrona ou sada de clock da interfaceserial sncrona.P3.2 INT0\ Entrada de interrupo externa 0 ou sinal de controle para o contador 0.P3.3 INT1\ Entrada de interrupo externa 1 ou sinal de controle para o contador 1.P3.4 T0 Entrada externa para o contador 0.P3.5 T1 Entrada externa para o contador 1.P3.6 WR\ Sinal de escrita na memria externa de dados.P3.7 RD\ Sinal de leitura na memria externa de dados.
atravs das funes especiais dos terminais do Port 3 que se obtmacesso a perifricos internos do microcontrolador (interface serial, contadoresde eventos e controlador de interrupes). Os sinais de controle de leitura e
escrita da memria de dados externa tambm so fornecidos atravs determinais do Port 3. No entanto, o Port 3 pode ser utilizado apenas como E/Ssimples.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
13/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 12
EA\
CPU
MCS51
Gerador
deClock
Memria
DePrograma
Interna(ROM)
Memria
DeDados
Interna(RAM)
Temporizadores/
Contadoresde
Eventos(16bits)
Controledo
Barramento
deExpanso
Interfacesde
Entrada/Sada
Programveis
Interface
Serial
Programvel
Ba
rramentodeDadosInterno
Interrupe
s
Internas:
-T/C0
-T/C1
-Serial
XTAL1
XTAL2
T0
T1
ARQUITET
URAINTERNA:
Ports
RXD
TXD
ALE
PSEN\
RD\
WR\
INT1\
INT0\
RST
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
14/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 13
ORGANIZAO DA MEMRIA
O 8051 acessa as memrias de programa e dados atravs de sinais decontrole diferentes, resultando em mapas de memria separados paraprogramas e dados.
Memria de Programa
ROMINTERNA
ROMEXTERNA
0FFFH1000H
0000H
FFFFH
PSEN\=0
EA\=1
PSEN\=1
ROMEXTERNA PSEN\=0
EA\=0
0000H
FFFFH
A memria de programa pode ser expandida atravs de barramentosexternos. Aps o reset, o microcontrolador 8051 ir buscar a primeira instruono endereo 0000H da memria de programa. O nvel lgico presente noterminal EA\ determina se o microcontrolador dever iniciar a busca dasinstrues na memria interna ou exclusivamente na memria externa,
ignorando a memria interna, se a mesma existir. O sinal PSEN\ habilita oacesso memria de programa externa.
Memria de Dados
RAM
INTERNA
REGISTROSESPECIAIS
00H
FFH
RAM
EXTERNA
0000H
FFFFH
RD\
WR\
BANCOS DEREGISTROS
REGISTROSENDEREVEIS
POR BIT
RAM DEUSO GERAL
1FH20H
2FH30H
7FH80H
00H
7FH
De maneira similar, possvel expandir a memria de dados utilizandobarramentos externos. Entretanto, as memrias de dados interna e externa sotratadas pelo 8051 de maneira radicalmente diferente: a interna acessadaatravs de endereos de 8 bits (MOV) e a externa atravs de endereos de 16
bits (MOVX). Os sinais RD\ e WR\ so os responsveis pelos acessos deleitura e escrita, respectivamente, na memria de dados externa.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
15/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 14
BANCOS DE REGISTROS
Os microcontroladores da famlia MCS51 possuem quatro conjuntos deregistros, chamados de bancos de registros. Cada banco possui 8 registros,chamados de R0 a R7. Os registros de R0 a R7 normalmente so utilizados
como operandos de instrues, armazenando dados temporrios na execuodo programa.
Pode-se comutar o banco de registros em uso atravs do estado dos bitsde controle RS1 e RS0, existentes no registro de funo especial PSW. O usode diferentes bancos de registros especialmente til na implementao desubrotinas e rotinas de atendimento a interrupes, minimizando o uso da pilhapara o salvamento de dados.
Quando uma instruo utiliza o modo registro de endereamento, oendereo fsico de memria de dados interna a ser acessado depende doestado dos bits de controle RS1 e RS0, que determinam qual o banco deregistros em uso no momento, como mostra a tabela abaixo.
Banco PSW:RS1 PSW:RS0 Endereo Registro00H R001H R102H R203H R304H R405H R506H R6
0 0 0
07H R708H R009H R10AH R20BH R30CH R40DH R50EH R6
1 0 1
0FH R710H R011H R112H R213H R314H R415H R516H R6
2 1 0
17H R718H R0\19H R1\1AH R2\1BH R3\1CH R4\1DH R5\1EH R6\
3 1 1
1FH R7\
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
16/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 15
REGISTROS BIT-ENDEREVEIS
Nos microcontroladores da famlia MCS51, a faixa que vai do endereo20H ao endereo 2FH da memria de dados interna chamada de regio deregistros bit-enderecveis. Estas posies da memria de dados interna
possuem uma caracterstica especial que permite a alterao individual decada bit atravs de instrues especialmente destinadas a este fim. Destamaneira, cada bit enderevel possui um endereo individual especfico, comomostra a tabela abaixo.
Endereos Individuais dos BitsRegistro bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
20H 07H 06H 05H 04H 03H 02H 01H 00H21H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H22H 17H 16H 15H 14H 13H 12H 11H 10H23H 1FH 1EH 1DH 1CH 1BH 1AH 19H 18H
24H 27H 26H 25H 24H 23H 22H 21H 20H25H 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H26H 37H 36H 35H 34H 33H 32H 31H 30H27H 3FH 3EH 3DH 3CH 3BH 3AH 39H 38H28H 47H 46H 45H 44H 43H 42H 41H 40H29H 4FH 4EH 4DH 4CH 4BH 4AH 49H 48H2AH 57H 56H 55H 54H 53H 52H 51H 50H2BH 5FH 5EH 5DH 4CH 5BH 5AH 59H 58H2CH 67H 66H 65H 64H 63H 62H 61H 60H2DH 6FH 6EH 6DH 6CH 6BH 6AH 69H 68H2EH 77H 76H 75H 74H 73H 72H 71H 70H2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H
REGISTROS DE FUNO ESPECIAL
Os registros de funo especial (special function registers) so osresponsveis pelo controle e execuo das instrues do programa e pelaconfigurao dos perifricos internos, determinando as suas formas deoperao. O 8051 possui os seguintes registros de funo especial (osendereos na memria de dados interna encontram-se entre parntesis):
PC Program CounterContador de Programa: indica o endereo da prxima instruo a serexecutada (16 bits).
PSW (D0H) Program Status WordContm os sinalizadores (flags) que indicam as ocorrncias na execuo daltima operao lgica ou aritmtica. Contm tambm os bits de controle paraa seleo do banco de registros em uso.
SP (81H) Stack PointerPonteiro da Pilha: indica o topo da pilha (ltimo dado colocado).
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
17/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 16
A (E0H) e B (F0H)Trata-se do acumulador (A), empregado nas operaes lgicas e aritmticas daCPU, e de um registro secundrio (B), empregado apenas nas operaes demultiplicao e diviso. So registros intimamente relacionados com a UnidadeLgica e Aritmtica da CPU.
DPH (83H) e DPL (82H)Registros de 8 bits que compem respectivamente os bytes mais e menossignificativos do ponteiro de dados de 16 bits chamado DPTR, utilizado paraendereamento indireto da memria de programa e da memria externa dedados.
P0 (80H), P1 (90H), P2(A0H) e P3(B0H)Registros que contm cpias dos estados dos quatro Ports de E/S. A escritanesses registros altera automaticamente o contedo na sada do Port
correspondente. A leitura carrega o estado de entrada presente nos terminaisdo Port no registro correspondente.
IE (A8H) Interrupt Enable e IP (B8H) Interrupt PriorityRegistros de habilitao / desabilitao das interrupes e de definio daprioridade de atendimento de cada uma delas.
PCON (87H) Power ControlPresente apenas na verso CMOS, este registro permite colocar o 80C51 emmodos de reduo de consumo de energia, preservando o contedo damemria interna.
TCON (88H) Timer Control e TMOD (89H) Timer ModeRegistros de controle e modo de operao dos temporizadores / contadores deeventos.
TH1 (8DH), TL1 (8BH), TH0 (8CH) e TL0 (8AH)Registros de dados dos temporizadores / contadores de eventos 1 e 0,respectivamente. Contm os valores das contagens realizadas (16 bits).
SCON (98H) Serial Control e SBUF (99H) Serial BufferRegistros de controle da interface serial e de armazenamento dos dados aserem transmitidos (escrita) ou recebidos (leitura).
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
18/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 17
Registros de Funo Especial Bit-Endereveis
Da mesma forma que ocorre na regio de registros bit-endereveis,existem alguns registros de funo especial que tambm possuem bitsindividualmente endereveis, como mostra a tabela abaixo.
Endereos Individuais dos BitsRegistro bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
P0 87H 86H 85H 84H 83H 82H 81H 80HP1 97H 96H 95H 94H 93H 92H 91H 90HP2 A7H A6H A5H A4H A3H A2H A1H A0HP3 B7H B6H B5H B4H B3H B2H B1H B0HA E7H E6H E5H E4H E3H E2H E1H E0HB F7H F6H F5H F4H F3H F2H F1H F0H
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON
8FH 8EH 8DH 8CH 8BH 8AH 89H 88HSM1 SM2 SM3 REN TB8 RB8 T1 R1
SCON9FH 9EH 9DH 9CH 9BH 9AH 99H 98HEA ES ET1 EX1 ET0 EX0
IEAFH ACH ABH AAH A9H A8H
PS PT1 PX1 PT0 PX0IP
BCH BBH BAH B9H B8HCY AC F0 RS1 RS0 OV P
PSWD7H D6H D5H D4H D3H D2H D0H
CLOCK
O 8051 possui um oscilador interno destinado a gerar o sinal de clock dosistema. Pode-se fazer uso de um cristal oscilador na freqncia de operaodesejada, conectado-o aos terminais XTAL1 e XTAL2, juntamente com doiscapacitores de realimentao conectados ao terra do circuito.
Para fazer uso de um circuito de clock externo ao 8051, basta conectar oterminal XTAL1 ao potencial de terra do circuito (GND) e aplicar o sinal externoao terminal XTAL2. Dessa maneira o sinal de clock externo ir diretamente aocircuito de temporizao e controle do microcontrolador.
A freqncia de operao do 8051 pode chegar a um mximo de 8, 10ou 12MHz conforme o modelo utilizado, embora existam atualmente tambm
verses que operam em at 24MHz (89C51) e 33MHz (80C320).A freqncia de clock dividida internamente por 12 para a gerao dos
ciclos de mquina necessrios execuo das instrues. Sendo assim, osciclos de mquina do 8051 tm a durao de 12 ciclos de clock, embora emalgumas verses otimizadas (80C320) os ciclos de mquina durem apenas 4ciclos de clock, sendo portanto 3 vezes mais velozes que a verso original.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
19/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 18
RESET
O reset do 8051 ativado quando o terminal RST levado a nvel lgico1 por dois ou mais ciclos de mquina. Consiste basicamente na inicializao dealguns registros com valores predeterminados:
Os registros A, B, PSW, DPTR, PC e todos os registros dos temporizadores/ contadores de eventos so zerados.
O registro SP carregado com o valor 07H.
Os Ports P0, P1, P2 e P3 so carregados com FFH. Durante o reset o nvellgico dos terminais indeterminado, assumindo valor 1 aps a execuoda seqncia de reset interna.
O registro SCON zerado e o registro SBUF fica com valor indeterminado.
O registro PCON tem apenas o seu bit mais significativo zerado.
Os registros IE e IP so carregados com o valor XXX00000B,(X=indeterminado).
A RAM interna no tem o seu contedo afetado pelo reset.
Um circuito reset automtico ao ligar o sistema (power-on-reset) podeser implementado com a conexo de um capacitor externo entre o potencial dealimentao e o terminal RST.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
20/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 19
MEMRIAS EXTERNAS DE PROGRAMA E DE DADOS
Os Ports 0 e 2 podem ser utilizados para acessar memrias externascomo funo alternativa, possibilitando a expanso da capacidade de memriade programa e de dados do 8051. Nesse modo de operao, o Port 2 atua
como a parte mais significativa (A15-A8) e o Port 0 atua como a parte menossignificativa (A7-A0) do barramento de endereos externo. Os sinais dobarramento de dados externo (D7-D0) tambm so fornecidos em seguida peloPort 0, multiplexados com a parte menos significativa dos endereos.
8051
Latch EPROM RAM
D0-D7
A0-A7
A8-A15
D0-D7
A0-A7
A8-A15
AD0-AD7
ALE
PSEN\
RD\
WR\
CK
OE\ OE\ WR\
O sinal ALE indica quando a parte menos significativa dos endereosest disponvel no Port 0. Este sinal serve para habilitar um latch de 8 bitsexterno, destinado a armazenar a parte menos significativa do barramento deendereos (A7-A0). Aps o armazenamento dos sinais A7-A0, o Port 0
apresenta os sinais D7-D0. desta forma que ocorre a demultiplexao dobarramentos de dados e endereos.O sinal PSEN\ habilita a leitura da memria de programa externa,
tornando-se ativo quando o 8051 busca instrues externamente. O terminalEA\ quando em nvel lgico 1 informa ao 8051 que os primeiros 4KB damemria de programa esto na memria de programa interna e o restante namemria externa, se estiver presente. Quando em nvel lgico 0, o terminal EA\determina que o microcontrolador busque todas as instrues de programa namemria externa, ignorando completamente a memria interna, se esta existir.
Os sinais RD\ e WR\ somente so ativados no caso de leitura ou escrita,respectivamente, na memria de dados externa (as instrues que acessam a
memria de dados externa MOVX so distintas das que acessam amemria interna MOV).
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
21/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 20
Os sinais RD\, WR\ e PSEN\ nunca so ativados simultaneamente,conforme mostra a tabela abaixo.
PSEN\ RD\ WR\ Funo
1 1 1 Nenhum Acesso Externo1 1 0 Escrita na Memria de Dados
1 0 1 Leitura da Memria de Dados
0 1 1 Leitura da Memria de Programa
Os sinais de acesso s memrias externas possuem comportamentosbem definidos, apresentados nos diagramas de tempo a seguir.
Ciclo de Leitura na Memria de Programa Externa
ALE
PSEN\
Port 0
Port 2 A8-A15 A8-A15
A0-A7 A0-A7Instruo
Ciclo de Leitura na Memria de Dados Externa
ALE
PSEN\
Port 0
Port 2 P2.0-P2.7 / A8-A15 (DPH) A8-A15 (PCH)
A0-A7(Ri / DPL) Dado
RD\
Instr.A0-A7(PCL)
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
22/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 21
Ciclo de Escrita na Memria de Dados Externa
ALE
PSEN\
Port 0
Port 2 P2.0-P2.7 / A8-A15 (DPH) A8-A15 (PCH)
A0-A7(Ri / DPL) Dado
WR\
Instr.A0-A7(PCL)
Expanso das Interfaces de E/SPode-se empregar uma tcnica conhecida como E/S mapeada em
memria (memory mapped I/O) para se expandir as capacidades de E/S dosistema microcontrolado. O mtodo consiste em destinar uma frao da faixade endereos da memria de dados externa para o acesso a perifricosexternos. Sob o ponto de vista do software os perifricos externos so tratadoscomo se fossem posies da memria de dados externa, utilizando as mesmasinstrues de acesso (MOVX). A desvantagem est no aumento considervel
do tamanho do sistema devido necessidade componentes externos. Almdisso, o acesso a perifricos externos consome o dobro do tempo de acessoaos Ports do microcontrolador.
Flip-Flops DS0-S7
Endereos
Barramento de Dados
CK
BufferTri-
StateE0-E7
G1\ G2\
Decod.
RD\
WR\
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
23/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 22
Nas pginas a seguir so apresentados alguns diagramas esquemticosde possveis sistemas baseados em microcontroladores da famlia MCS51.
O primeiro deles (Sistema Mnimo) utiliza a menor quantidade possvelde componentes externos, apenas para implementar os circuitos de clock epower-on-reset. Neste caso, todos os pinos de E/S ficam disponveis para
interconexo com outros dispositivos externos no representados no diagrama.Em seguida so apresentados diagramas esquemticos de sistemas quefazem uso de memrias externas. So apresentados sistemas com apenasmemria de programa externa (Sistema com ROM Externa), apenas memriade dados externa (Sistema com RAM Externa) e, finalmente, com memrias deprograma e de dados externas (Sistema com ROM e RAM Externas). Os Ports0 e 2 ficam comprometidos com a implementao dos barramentos externos dedados e de endereos. O Port 3 fica parcialmente comprometido com aimplementao dos sinais de acesso memria de dados externa, quando estafor utilizada. Deve-se observar a presena do latch para demultiplexao dosbarramentos externos e a forma de conexo dos sinais do barramento de
controle (ALE, EA\, PSEN\, RD\ e WR\).O diagrama esquemtico de um sistema que utiliza a tcnica de E/S
mapeada em memria (Sistema com E/S Mapeada em Memria) tambm apresentado. Deve-se notar a presena de um decodificador de endereospara gerar os sinais de habilitao dos dispositivos de E/S, que neste caso soapenas flip-flops D (sadas) e buffers tri-state (entradas).
Por fim, apresentado o diagrama esquemtico de um sistema commemrias externas de programa e de dados, E/S mapeada em memria(interface para display inteligente de cristal lquido) e interface serial padroRS-232. O Sistema Completo apresentado bastante similar placa P51 (veranexos) e possui algumas cactersticas especiais quanto forma de acesso smemrias externas, possibilitando o seu uso com o programa monitorPAULMON (ver anexos).
Programas monitores como o PAULMON permitem que se armazene eexecute programas na memria RAM externa do sistema. Entretanto, para queisso seja possvel, o hardware deve prever alguma forma de acesso RAMexterna como se fosse memria de programa. No diagrama esquemtico doSistema Completo o sinal de leitura da RAM externa gerado atravs de umaoperao lgica E entre os sinais PSEN\ e RD\ (componente U7:A). Destaforma, a RAM externa acessada tanto como memria de dados externa(quando o sinal RD\ estiver ativo) quanto como memria de programa externa
(quando o sinal PSEN\ estiver ativo). Esta caracterstica faz com que os mapasde memria de programa e de dados se sobreponham, sendo necessrio,portanto, um decodificador de endereos para atribuir faixas de endereosdistintas para a habilitao da ROM e da RAM externas (decodificadorcomposto pelos componentes U3 e U7:B,C,D).
O mesmo decodificador de endereos gera sinais de habilitao parapossveis perifricos mapeados em memria, bem como o sinal de habilitaopara um display inteligente de cristal lquido (CN9) mapeado em memria(componentes U3 e U8:A,B,C,D).
O Sistema Completo apresentado possui diversos jumpers (JP1 a JP10)para a configurao do sistema (ver legenda no canto inferior esquerdo do
diagrama esquemtico).
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
24/97
U1
AT89C52
EA/VPP
31
PSEN
29
P11/T2EX
2
ALE/PROG
30
P00/AD0
39
P01/AD1
38
P02/AD2
37
P03/AD3
36
P04/AD4
35
P05/AD5
34
P06/AD6
33
P07/AD7
32
P20/A8
21
P21/A9
22
P22/A10
23
P23/A11
24
P24/A12
25
P25/A13
26
P26/A14
27
P27/A15
28
P37/RD
17
P36/WR
16
P35/T1
15
P34/T0
14
P33/INT
1
13
P32/INT
0
12
P31/TXD
11
P30/RX
D
10
XTAL2
18
P17
8
P16
7
P15
6
P14
5
P13
4
P12
3
RST
9
XTAL1
19
P10/T2
1
C1
10u
F
C3
33p
F
C2
33p
F
X1
11
.0
592MHz
HUGO
1.0 1
1
SISTEMAMIN
IMO
MINIMO51
.S01
03/2002
P2
.7
P2
.6
P2
.5
P2
.4
P2
.3
P2
.2
P2
.1
P2
.0
P0
.7
P0
.6
P0
.5
P0
.4
P0
.3
P0
.2
P0
.1
P0
.0
P3
.7
P3
.6
P3
.5
P3
.4
P3
.3
P3
.2
P3
.1
P3
.0
P1
.0
P1
.1
P1
.2
P1
.3
P1
.4
P1
.5
P1
.6
P1
.7
A
B
C
D
4321
D
C
B
A
1 2 3 4
A4
Rev
Num
ber
Title
Size
Da
te
Filename
Drawn
by
of
Shee
t
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
25/97
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
26/97
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
27/97
U1
8
0C32
ALE
30
EA
31
PSEN
29
P11/T2
EX
2
P00/AD0
39
P01/AD1
38
P02/AD2
37
P03/AD3
36
P04/AD4
35
P05/AD5
34
P06/AD6
33
P07/AD7
32
P20/A8
21
P21/A9
22
P22/A10
23
P23/A11
24
P24/A12
25
P25/A13
26
P26/A14
27
P27/A15
28
P37/RD
17
P36/WR
16
P35/T1
15
P34/T0
14
P33/INT1
13
P32/INT0
12
P31/TX
D
11
P30/RX
D
10
XTAL2
18
P17
8
P16
7
P15
6
P14
5
P13
4
P12
3
RST
9
XTAL1
19
P10/T2
1
U2
74HC373
8Q
19
7Q
16
6Q
15
5Q
12
4Q
9
3Q
6
2Q
5
1Q
2
8D
1
8
7D
1
7
6D
1
4
5D
1
3
4D
8
3D
7
2D
4
1D
3
C
1
1
OC
1
C3
33p
F
C2
33p
F
X1
11.0
592MHz
C1
10u
F
27C512
U3
E
20
G/VPP
22
Q8
19
Q7
18
Q6
17
Q5
16
Q4
15
Q3
13
Q2
12
Q1
11
A15
1
A14
27
A13
26
A12
2
A11
23
A10
21
A9
24
A8
25
A7
3
A6
4
A5
5
A4
6
A3
7
A2
8
A1
9
A0
10
U4
62256
OE
22
WE
27
CS
20
A14
1
A13
26
A12
2
A11
23
A10
21
A9
24
A8
25
A7
3
A6
4
A5
5
A4
6
A3
7
A2
8
A1
9
A0
10
D0
11
D1
12
D2
13
D3
15
D4
16
D5
17
D6
18
D7
19
RO
MRAM51
.S01
HUGO
1.0 1
1
SISTE
MACOM
ROM
ERAM
EXTERNAS
03
/2002
P1
.7
P1
.6
P1
.5
P1
.4
P1
.3
P1
.2
P1
.1
P1
.0
D7
D6
D5
D4
D3
D2
D1
D0
D0
D1
D2
D3
D4
D5
D6
D7
A0
A1
A2
A3
A4
A5
A6
A7
P3
.0
P3
.1
P3
.2
P3
.3
P3
.4
P3
.5
A8
A9
A10
A11
A12
A13
A14
A15
A7
A6
A5
A4
A3
A2
A1
A13
A12
A11
A10
A9
A8
A0
A14
A15
D7
D6
D5
D4
D3
D2
D1
D0
PSEN
A7
A6
A5
A4
A3
A2
A1
A13
A12
A11
A10
A9
A8
A0
A14
D7
D6
D5
D4
D3
D2
D1
D0
WR
RD
A
B
C
D
4321
C
A3
Rev
Num
ber
Title
Size
Da
te
Filename
Drawn
by
of
Shee
t
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
28/97
U3:A
74HC139
Y3
7
Y2
6
Y1
5
Y0
4
G
1
B
3
A
27
4HC139
U3:B
A
14
B
13
G
15
Y0
12
Y1
11
Y2
10
Y3
9
74HC244
U6:B
G
19
A1
11
A2
13
A3
15
A4
17
Y1
9
Y2
7
Y3
5
Y4
3
U6:A
74HC244
Y4
12
Y3
14
Y2
16
Y1
18
A4
8
A3
6
A2
4
A1
2
G
1
U7
7
4HC273
8Q
19
7Q
16
6Q
15
5Q
12
4Q
9
3Q
6
2Q
5
1Q
2
8D
18
7D
17
6D
14
5D
13
4D
8
3D
7
2D
4
1D
3
CLK
11
CLR
17
4HC273
U5
CLR
1
CLK
11
1D
3
2D
4
3D
7
4D
8
5D
13
6D
14
7D
17
8D
18
1Q
2
2Q
5
3Q
6
4Q
9
5Q
12
6Q
15
7Q
16
8Q
19
74HC244
U4:A
G
1
A1
2
A2
4
A3
6
A4
8
Y1
18
Y2
16
Y3
14
Y4
12
U4:B
74HC244
Y4
3
Y3
5
Y2
7
Y1
9
A4
17
A3
15
A2
13
A1
11
G
19
U1
AT89C52
EA/VPP
31
PSEN
29
P11/T2EX
2
ALE/PROG
30
P00/AD0
39
P01/AD1
38
P02/AD2
37
P03/AD3
36
P04/AD4
35
P05/AD5
34
P06/AD6
33
P07/AD7
32
P20/A8
21
P21/A9
22
P22/A10
23
P23/A11
24
P24/A12
25
P25/A13
26
P26/A14
27
P27/A15
28
P37/RD
17
P36/WR
16
P35/T1
15
P34/T0
14
P33/INT1
13
P32/INT0
12
P31/TXD
11
P30/RXD
10
XTAL2
18
P17
8
P16
7
P15
6
P14
5
P13
4
P12
3
RST
9
XTAL1
19
P10/T2
1
10u
F
C1
11
.0592MHz
X1
33p
F
C2
33p
F
C3
74HC373
U2
OC
1
C
11
1D
3
2D
4
3D
7
4D
8
5D
13
6D
14
7D
17
8D
18
1Q
2
2Q
5
3Q
6
4Q
9
5Q
12
6Q
15
7Q
16
8Q
19
03
/2002
SISTEMA
COM
E/SMAPEADAEM
MEMORIA
1
11
.0
HUGO
ESMEM51
.S01
RD0
RD1
WR
RD
RD0
WR1
WR0
RD1
A7
A6
A7
A6
RD2
RD3
WR3
WR2
S15
S14
S13
S12
S11
S10
S9
S8
E15
E14
E13
E12
E11
E10
E9
E8
D7
D6
D5
D4
D3
D2
D1
D0
D7
D6
D5
D4
D3
D2
D1
D0
WR1
WR0
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
E0
E1
E2
E3
E4
E5
E6
E7
S0
S1
S2
S3
S4
S5
S6
S7
P2
.7
P2
.6
P2
.5
P2
.4
P2
.3
P2
.2
P2
.1
P2
.0
P3
.5
P3
.4
P3
.3
P3
.2
P3
.1
P3
.0
A7
A6
A5
A4
A3
A2
A1
A0
D7
D6
D5
D4
D3
D2
D1
D0
D0
D1
D2
D3
D4
D5
D6
D7
P1
.0
P1
.1
P1
.2
P1
.3
P1
.4
P1
.5
P1
.6
P1
.7
A
B
C
D
4321
C
A3
Rev
Num
ber
Title
Size
Da
te
Filename
Drawn
by
of
Shee
t
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
29/97
100k
P1
U1
AT89C52
EA/VPP
31
PSEN
29
P11/T2EX
2
ALE/PROG
30
P00/AD0
39
P01/AD1
38
P02/AD2
37
P03/AD3
36
P04/AD4
35
P05/AD5
34
P06/AD6
33
P07/AD7
32
P20/A8
21
P21/A9
22
P22/A10
23
P23/A11
24
P24/A12
25
P25/A13
26
P26/A14
27
P27/A15
28
P37/RD
17
P36/WR
16
P35/T1
15
P34/T0
14
P33/INT1
13
P32/INT0
12
P31/TXD
11
P30/RXD
10
XTAL2
18
P17
8
P16
7
P15
6
P14
5
P13
4
P12
3
RST
9
XTAL1
19
P10/T2
1
JP1
C1
C3
C2
11
.0592MHz
X1
33p
F
C2
33p
F
C3
10u
F
C1
CON6M
CN7
1 2 3 4 5 6
CN8
CON4M
4321
CN6
CON4M
4321
CON8M
CN1
1 2 3 4 5 6 7 8
CON8M
CN2
1 2 3 4 5 6 7 8
CON8M
CN3
1 2 3 4 5 6 7 8
CON8M
CN4
1 2 3 4 5 6 7 8
CON8M
CN5
1 2 3 4 5 6 7 8
CN9
CON14M
10987654321
11
12
13
14
U8:B
74HC02
4
65
U8
:A
74H
C02
1
32
74HC08
U7:B
4 5
6
J
P7
C2
C3
C1
74HC08
U7:A
1 2
3
74HC373
U2
OC
1
C
11
1D
3
2D
4
3D
7
4D
8
5D
13
6D
14
7D
17
8D
18
1Q
2
2Q
5
3Q
6
4Q
9
5Q
12
6Q
15
7Q
16
8Q
19
JP3
C2
C3
C1
JP2
C2
C3
C1
JP6
C2
C3
C1
U5
62256
OE
22
WE
27
CS
20
A14
1
A13
26
A12
2
A11
23
A10
21
A9
24
A8
25
A7
3
A6
4
A5
5
A4
6
A3
7
A2
8
A1
9
A0
10
D0
11
D1
12
D2
13
D3
15
D4
16
D5
17
D6
18
D7
19
JP4
C2
C3
C1
U4
27C512
A0
10
A1
9
A2
8
A3
7
A4
6
A5
5
A6
4
A7
3
A8
25
A9
24
A10
21
A11
23
A12
2
A13
26
A14
27
A15
1
Q1
11
Q2
12
Q3
13
Q4
15
Q5
16
Q6
17
Q7
18
Q8
19
G/VPP
22
E
20
JP5
C2
C3
C1
U3
74HC138
Y7
7
Y6
9
Y5
10
Y4
11
Y3
12
Y2
13
Y1
14
Y0
15
G2B
5
G2A
4
G1
6
C
3
B
2
A
1
74HC02
U8:C
8 9
10
74HC02
U8:D
11
12
13
U7:D
74HC08
11
13
12
U7:C
74HC08
8
109
JP8
C2
C3
C1
C7
10u
F
MAX232
U6
R1IN
13
T2OUT
7
T1OUT
14
V-
6
V+
2
C1+
1
C1
-
3
C2+
4
C2
-
5
T1IN
11
T2IN
10
R1OUT
12
R2OUT
9
R2IN
8
C6
10u
F
10u
F
C4
10u
F
C5
D1
1N
4001
U9
VAL
7805
VI
1
G2
VO
3
C12
100nF
C11
100nF
C8
100uF
C9
33nF
C10
100nF
RST
C 1C 2
8k2
R1
R2
1
50k
JP9
C1
C3
C2
JP10
C1
C3
C2
CO
MPLE51
.S01
1
11
.0
HUGO
C1-
C3
C1-
C2
C1-
C3
C1-
C3
C1-
C3
C1-
C3
C1-
C3
C1-
C3
C1-
C2
C1-
C2
C1-
C2
C1-
C2
C1-
C2
C1-
C2
7654321
ROM
INTERNA
ROM
EXTERNA
27512
27256/512
2764/128/256
ROM
64K
ROM
8K
6264
62256
RAM
0000H
RAM
2000H
DADOS
2764/128
CONFIGURACOES
SISTEMACOMPLETO
03
/2002
DADOS/PROG
.
PASSO
APASSO
C1-
C3
C1-
C2
EXEC
.NORMAL
8
PSEN
CS2
CS1
D7
D6
D5
D4
D3
D2
D1
D0
D0D1D2D3D4D5D6D7D7D6D5D4D3D2D1D0
TX
RX
DSR
DTR
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
P1
.0
P1
.1
P1
.2
P1
.3
P1
.4
P1
.5
P1
.6
P1
.7
P3
.0
P3
.1
P3
.2
P3
.3
P3
.4
P3
.5
P3
.6
P3
.7
D0
D1
D2
D3
D4
D5
D6
A1
A0
D7
P3
.7
PSEN
A15
A14
A13
A12
A11
A10
A9
A8
P3
.7
P3
.6
P3
.5
P3
.4
P3
.3
P3
.2
P3
.1
P3
.0
A7
A6
A5
A4
A3
A2
A1
A0
D7
D6
D5
D4
D3
D2
D1
D0
D0
D1
D2
D3
D4
D5
D6
D7
P1
.0
P1
.1
P1
.2
P1
.3
P1
.4
P1
.5
P1
.6
P1
.7
PSEN
A15
A14
A14
A0
A12
A11
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
A8
A9
A10
A11
A12
A13
A1
A2
A3
A4
A5
A6
A7
A13
P3
.6
A13
A14
A15
CS1
CS2
P3
.6
P3
.7
P3
.3
P3
.0
DSR
RX
DTR
TX
P3
.1
+V
+V
P3
.5
P3
.4
A
B
C
D
4321
C
A3
Rev
Num
ber
Title
Size
Da
te
Filename
Drawn
by
of
Shee
t
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
30/97
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
31/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 24
b) O levantamento dos requisitos necessrios para determinado sistemabaseado na arquitetura MCS51 revelou a necessidade de pelo menos 6KBde memria de programa, pelo menos 200 bytes de memria de dados epelo menos 12 bits de E/S. Com base nessas informaes, projete o
hardware para tal sistema.
c) Deseja-se um sistema baseado no microcontrolador 89C51 que possuaexatamente 2KB de memria de dados externa e pelo menos 6 bits deentrada e 8 bits de sada a mais que os bits disponveis nos Ports de E/S.Projete o hardware de um sistema que atenda a esses requisitos, utilizandoa tcnica de E/S mapeada em memria para a implementao dos bits deE/S adicionais.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
32/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 25
PROGRAMAO
O 8051 utiliza cdigos de instruo de 8 bits. Entretanto, suas instruespodem ter extenso varivel entre um e trs bytes.
As instrues de apenas um byte de extenso no requerem operandos
ou ento j os possuem embutidos nos 8 bits do cdigo da instruo. Asinstrues de dois ou trs bytes de extenso so as que possuem um ou doisbytes adicionais, correspondentes ao(s) operando(s).
Para cada instruo o tempo de execuo pode ser de um a quatrociclos de mquina (cada ciclo de mquina corresponde a 12 ciclos de clock),conforme a complexidade da operao a ser executada e o nmero de bytesextras a serem buscados na memria de programa.
Na programao em linguagem Assembly (baixo nvel) so utilizadossmbolos mnemnicos para representar os cdigos das instrues, facilitando oentendimento por parte do programador, evitando que seja necessrio decoraros cdigos de cada instruo. A codificao do programa propriamente dita realizada por um aplicativo montador (assembler).
No caso do uso de uma linguagem de programao de alto nvel como alinguagem C utiliza-se um compilador, que o responsvel pela traduo parao Assembly e posterior montagem do cdigo.
MODOS DE ENDEREAMENTO
Modo ImediatoPermite carregar constantes em posies da memria de dados interna.
Nas instrues da famlia MCS51, as constantes so precedidas pelo smbolo#.
Modo DiretoEssa forma de endereamento utiliza diretamente o endereo da posio
da memria de dados interna na qual ser efetuada a operao.
Modo IndiretoNesse caso o endereo da posio de memria onde ser efetuada a
operao indicado de forma indireta pelos registros R0 ou R1 do banco deregistros em uso ou pelo registro DPTR. Os registros R0, R1 e DPTR atuamcomo ponteiros nessas instrues, sendo R0 e R1 ponteiros para endereos de8 bits e DPTR um ponteiro para endereos de 16 bits. Nas instrues da famliaMCS51, os ponteiros so precedidos pelo smbolo @.
Modo RegistroPermite o acesso aos registros R0 a R7 do banco de registros em uso
(working registers), definido pelos bits de controle RS1 e RS0 existentes noregistro de funo especial PSW.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
33/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 26
CONJUNTO DE INSTRUES
O conjunto das instrues do 8051 pode ser dividido em 5 grupos:transferncia de dados, operaes lgicas, operaes aritmticas, manipulaode variveis booleanas e controle de programa. A seguir sero analisadas
algumas das instrues de cada grupo.
Transferncia de DadosFazem parte do grupo de transferncia de dados as instrues MOV,
MOVC, MOVX, PUSH, POP, XCH e XCHD.A instruo MOV copia o contedo de um endereo da memria de dados
interna (ou uma constante) para outro endereo da memria de dados interna,utilizando a seguinte sintaxe:
MOV ,
O contedo do operando copiado para o operando, sendo possvel utilizar todos os modos de endereamento(imediato, direto, indireto e registro).
MOV A, #dadoCarrega no acumulador o valor da constante de 8 bits (dado). O valor da
constante pode estar em decimal (sem sufixo), hexadecimal (sufixo H) oubinrio (sufixo B).
Exemplo: MOV A, #01010101B
MOV A, diretoCarrega no acumulador o contedo do endereo da memria de dados
interna (direto).Exemplo: MOV A, 12H
MOV A, @RiCarrega no acumulador o contedo do endereo da memria de dados
interna apontado pelo registro R0 ou R1 (@Ri).Exemplo: MOV A, @R0
MOV A, RnCarrega no acumulador o contedo do registro R0, R1, R2, R3, R4, R5,
R6 ou R7 (Rn) do banco de registros em uso.Exemplo: MOV A, R0
MOV DPTR, #dado16Carrega no registro DPTR o valor da constante de 16 bits (dado16).Exemplo: MOV DPTR, #1234H
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
34/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 27
A instruo MOVC copia o contedo da memria de programa (interna ouexterna) para o acumulador, utilizando a seguinte sintaxe:
MOVC A,
O operando sempre ir empregar o modo de endereamentoindireto atravs de ponteiros. Trata-se da nica forma de leitura de constantesgravadas na memria de programa, como por exemplo, tabelas de dados (look-up tables).
MOVC A, @A+DPTRAdiciona o valor contido no acumulador ao valor contido no registro de
DPTR, utilizando o resultado como ponteiro para enderear uma posio damemria de programa e carrega o seu contedo no acumulador.
A instruo MOVX copia o contedo de uma posio da memria dedados externa para o acumulador ou vice-versa, utilizando as seguintessintaxes:
MOVX A,
MOVX , A
Os operandos e sempre iro utilizar o modo deendereamento indireto atravs de ponteiros. Trata-se da nica forma de leituraou escrita na memria de dados externa e de perifricos externos mapeadosem memria.
MOVX A, @DPTRCarrega o acumulador com o contedo da posio de memria de dados
externa apontada pelo registro DPTR.
MOVX @DPTR, ACarrega a posio de memria de dados externa apontada pelo registro
DPTR com o contedo do acumulador.
As instrues PUSH e POP trabalham com o armazenamento temporrio
de dados, utilizando a seguinte sintaxe:
PUSH
POP
possvel utilizar apenas o modo de endereamento direto.
PUSH diretoO registro SP incrementado e em seguida o contedo do endereo da
memria de dados interna (direto) carregado no topo da pilha.Exemplo: PUSH ACC
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
35/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 28
POP diretoO topo da pilha carregado no endereo da memria de dados interna
(direto). Em seguida o registro SP decrementado.Exemplo: POP ACC
A instruo XCH efetua a troca de contedos entre o acumulador e um segundooperando, utilizando a seguinte sintaxe:
XCH A,
possvel utilizar todos os modos de endereamento (imediato, direto,indireto e registro).
XCH A, diretoTroca os contedos do acumulador e do endereo da memria de dados
interna (direto).Exemplo: XCH A, 34H
A instruo XCHD efetua a troca dos nibbles menos significativos entre oacumulador e um segundo operando, utilizando a seguinte sintaxe:
XCHD A,
possvel utilizar apenas o modo de endereamento indireto componteiros de 8 bits (R0 ou R1).
XCHD A, @RiTroca apenas o nibble menos significativo dos contedos do acumulador
e do endereo da memria de dados interna apontada pelo registro R0 ou R1(@Ri).
Exemplo: XCHD A, @R0
Para se ter noo de todas as instrues de transferncia de dadosexistentes para a famlia MCS51 deve-se consultar a tabela de instruescompleta que se encontra nos anexos.
Exerccios1) Sabendo que a instruo MOVC envolve o acesso memria de programa
do microcontrolador 8051, explique o que ocorre com os barramentosexternos durante a execuo da instruo MOVC A, @A+DPTR. Leve emconsiderao os casos de acesso a endereos existentes na memria deprograma interna e externa.
2) Sabendo que a instruo MOVX envolve o acesso memria de dadosexterna do microcontrolador 8051, explique o que ocorre com osbarramentos externos durante a execuo das instrues MOVX A, @DPTR
e MOVX @DPTR, A. Qual instruo realiza uma escrita e qual instruorealiza uma leitura na memria de dados externa?
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
36/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 29
3) Execute o programa dado a seguir no simulador do ambiente Proview e tireconcluses sobre o efeito de cada instruo executada. Para uma melhornoo do que ocorre, sugere-se que o programa seja executado passo apasso, visualizando-se as janelas Main Registers e Data View.
INICIO: MOV SP, #20HMOV DPTR, #1234HMOV A, #56MOV 01H, #02HMOV R0, AMOV @R1, APUSH DPHPUSH DPLPUSH ACCPUSH PSWMOV PSW, #00011000B
MOV A, #78MOV R0, AMOV @R1, APOP DPLPOP DPHPOP PSWPOP ACCLJMP INICIO
4) Implemente programas em Assembly da famlia MCS51 para realizar astarefas a seguir. Sugere-se que os programas implementados sejam
simulados no ambiente Proview.
a) Defina o banco de registros 1, carregue o registro R0 com o valor 32H e oregistro R1 com o valor E5H. Depois efetue a troca dos contedos de R0 eR1 utilizando apenas instrues MOV.
b) Refaa o programa anterior utilizando as instrues POP e PUSH paraefetuar a troca dos contedos de R0 e R1.
c) Carregue no acumulador o contedo do endereo 36H da memria dedados interna utilizando endereamento direto. Depois carregue o endereo7FH da memria de dados interna com o valor armazenado no acumuladorutilizando endereamento direto.
d) Refaa o programa anterior utilizando endereamento indireto.
e) Leia o contedo do endereo 0000H da memria de programa noacumulador e depois carregue os endereos 2000H e 3000H da memriade dados externa com o valor armazenado no acumulador.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
37/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 30
Operaes LgicasFazem parte do grupo de operaes lgicas as instrues CLR, CPL,
ANL, ORL, XRL, RL, RLC, RR, RRC e SWAP.A instruo CLR zera o contedo do acumulador, possuindo uma nica
sintaxe:
CLR A
CLR AZera o contedo do acumulador.
A instruo CPL complementa o contedo do acumulador bit a bit,possuindo uma nica sintaxe:
CPL A
CPL AComplementa o contedo do acumulador bit a bit.
As instruesANL, ORL e XRL realizam as operaes lgicas E, OU eOU-EXCLUSIVO, respectivamente, utilizando as seguintes sintaxes:
ANL ,
ORL ,
XRL ,
O resultado da operao armazenado no , que pode sero acumulador ou uma posio da memria de dados interna endereadadiretamente. O pode utilizar todos os modos de endereamento(imediato, direto, indireto e registro).
ANL A, #dadoEfetua a operao lgica E entre o contedo do acumulador e a
constante (dado) bit a bit. O resultado armazenado no acumulador.Exemplo:ANL A, #0FH
ORL A, diretoEfetua a operao lgica OU entre o contedo do acumulador e o
endereo da memria de dados interna (direto) bit a bit. O resultado armazenado no acumulador.
Exemplo: ORL A, 3FH
XRL A, RnEfetua a operao lgica OU-EXCLUSIVO entre o contedo do
acumulador e o contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7 (Rn). Oresultado armazenado no acumulador.
Exemplo: XRL A, R1
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
38/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 31
As instrues RL e RLC deslocam o contedo do acumulador um bit esquerda, passando ou no pelo flag de carry. Possuem as seguintes sintaxesnicas:
RL A
RLC A
RL ADesloca o contedo do acumulador 1 bit esquerda. O valor do bit 0 vai
para o bit 1, o valor do bit 1 vai para o bit 2 e assim sucessivamente. O valor dobit 7 vai para o bit 0 e nenhum flag afetado.
RLC ADesloca o contedo do acumulador 1 bit esquerda passando pelo flag
de carry. O valor do bit 0 vai para o bit 1, o valor do bit 1 vai para o bit 2 e
assim sucessivamente. valor do bit 7 vai para o flag de carry e o valor do flagde carry vai para o bit 0.
As instrues RR e RRC deslocam o contedo do acumulador um bit esquerda, passando ou no pelo flag de carry. Possuem as seguintes sintaxesnicas:
RR A
RRC A
RR ADesloca o contedo do acumulador 1 bit direita. O valor do bit 7 vai
para o bit 6, o valor do bit 6 vai para o bit 5 e assim sucessivamente. O valor dobit 0 vai para o bit 7 e nenhum flag afetado.
RRC ADesloca o contedo do acumulador 1 bit direita passando pelo flag de
carry. O valor do bit 7 vai para o bit 6, o valor do bit 6 vai para o bit 5 e assimsucessivamente. valor do bit 0 vai para o flag de carry e o valor do flag de carryvai para o bit 7.
A instruo SWAP troca o nibble mais significativo pelo nibble menossignificativo do acumulador, possuindo a seguinte sintaxe nica:
SWAP A
SWAP ATroca o nibble mais significativo pelo nibble menos significativo do
acumulador.
Para se ter noo de todas as operaes lgicas existentes para a
famlia MCS51 deve-se consultar a tabela de instrues completa que seencontra nos anexos.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
39/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 32
Exerccios1) Analise o programa em Assembly da famlia MCS51 dado a seguir e
fornea a equao lgica do resultado final armazenado no acumulador emfuno dos registros utilizados:
LOGICA: MOV A, R0CPL A
ANL R1MOV B, AMOV A, R2
ANL A, R3CPL AXRL R4ORL A, BLJMP LOGICA
2) Implemente um programa em Assembly da famlia MCS51 que realize aseguinte equao lgica: ACC= [(R0+R1).R3]R4\
3) Apresente 2 formas de se zerar o contedo do acumulador utilizandoinstrues lgicas do Assembly da famlia MCS51.
4) Apresente 2 formas de se complementar o contedo do acumuladorutilizando instrues lgicas do Assembly da famlia MCS51.
5) Implemente um programa em Assembly da famlia MCS51 que seja capazde setar apenas o bit 7 e de zerar apenas o bit 0 do registro de funoespecial B, sem alterar o estado dos seus demais bits.
6) Qual o significado aritmtico de uma rotao esquerda do acumulador?
7) Qual o significado aritmtico de uma rotao direita do acumulador?
Operaes AritmticasFazem parte do grupo de operaes aritmticas as instruesADD,
ADDC, SUBB, INC, DEC, MUL, DIV e DA.A instruoADD realiza a adio entre o contedo do acumulador e o
contedo de um endereo da memria de dados interna (ou uma constante),utilizando a seguinte sintaxe:
ADD A,
O resultado da adio armazenado no acumulador, sendo possvelutilizar para o todos os modos de endereamento (imediato,direto, indireto e registro). O flag de carry afetado conforme o resultado daoperao.
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
40/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 33
ADD A, RnAdiciona o contedo do acumulador ao contedo do registro R0, R1, R2,
R3, R4, R5, R6 ou R7 (Rn). O resultado armazenado no acumulador e o flagde carry afetado conforme o resultado da operao.
Exemplo:ADD A, R2
A instruoADDC realiza a adio entre o contedo do acumulador, ocontedo de uma posio da memria de dados interna (ou uma constante) e oflag de carry, utilizando a seguinte sintaxe:
ADDC A,
O resultado da adio armazenado no acumulador, sendo possvelutilizar para o todos os modos de endereamento (imediato,direto, indireto e registro). O flag de carry afetado conforme o resultado da
operao.Esta instruo permite que adies com mais de 8 bits possam serimplementadas graas ao aproveitamento do flag de carry da operaoanterior.
ADDC A, @RiAdiciona o contedo do acumulador ao contedo do endereo da
memria de dados interna apontado por R0 ou R1 (@Ri) e ao flag de carry. Oresultado armazenado no acumulador e o flag de carry afetado conforme oresultado da operao.
Exemplo:ADDC A, @R0
A instruo SUBB realiza a subtrao entre o contedo do acumulador, ocontedo de uma posio da memria de dados interna (ou uma constante) e oflag de carry (borrow), utilizando a seguinte sintaxe:
SUBB A,
O resultado da subtrao armazenado no acumulador, sendo possvelutilizar para o todos os modos de endereamento (imediato,direto, indireto e registro). O flag de carry (borrow) afetado conforme o
resultado da operao.Esta instruo permite que subtraes com mais de 8 bits possam serimplementadas graas ao aproveitamento do flag de carry (borrow) daoperao anterior.
SUBB A, @RiSubtrai do contedo do acumulador o contedo do endereo da memria
de dados interna apontado por R0 ou R1 (@Ri) e o flag de carry (borrow). Oresultado armazenado no acumulador e o flag de carry (borrow) afetadoconforme o resultado da operao.
Exemplo: SUBB A, @R1
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
41/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 34
A instruo INC incrementa o operando de uma unidade, utilizando aseguinte sintaxe:
INC
possvel utilizar todos os modos de endereamento (imediato, direto,indireto e registro) e ainda o registro de 16 bits DPTR.
INC DPTRIncrementa o valor do registro de 16 bits DPTR.
A instruo DEC decrementa o operando de uma unidade, utilizando aseguinte sintaxe:
DEC
possvel utilizar todos os modos de endereamento (imediato, direto,indireto e registro).
DEC ADecrementa o valor do acumulador.
A instruo MUL realiza a multiplicao entre o acumulador e o registrode funo especial B, possuindo uma nica sintaxe:
MUL AB
MUL ABMultiplica o contedo do acumulador pelo contedo do registro de
funo especial B, armazenando a parte mais significativa do resultado em B ea parte menos significativa no acumulador.
A instruo DIV realiza a diviso entre o acumulador e o registro defuno especial B, possuindo uma nica sintaxe:
DIV AB
DIV ABDivide o contedo do acumulador pelo contedo do registro de funo
especial B, armazenando o quociente no acumulador e o resto em B. Se B fornulo o resultado da operao ser indefinido.
A instruo DA realiza o ajuste decimal do acumulador aps operaesde adio em BCD, possuindo uma nica sintaxe:
DA A
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
42/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 35
DA ARealiza o ajuste decimal do acumulador. Deve ser utilizada apenas aps
operaes de adio cujos operandos estejam codificados em BCD. O flag decarry afetado conforme o resultado do ajuste.
Para se ter noo de todas as operaes aritmticas existentes para afamlia MCS51 deve-se consultar a tabela de instrues completa que seencontra nos anexos.
Exerccios1) Execute os programas dados a seguir no simulador do ambiente Proview e
tire concluses sobre o efeito de cada instruo executada. Para umamelhor noo do que ocorre, sugere-se que os programas sejamexecutados passo a passo, visualizando-se as janelas Main Registers eData View.
a) SOMA1: MOV PSW, #00H ;adicao de 16 bits:MOV R0, #23H ; R0R1MOV R1, #90H ;+R2R3MOV R2, #14H ;-----MOV R3, #59H ; R4R5
MOV A, R1ADD A, R3 ;adiciona R1 e R3MOV R5, A ;LSB em R5MOV A, R0
ADDC A, R2 ;adiciona R0 e R2MOV R4, A ;MSB em R4LJMP SOMA1
b) SOMA2: MOV PSW, #00H ;adicao de 16 bits em BCD:MOV R0, #23H ; R0R1MOV R1, #90H ;+R2R3MOV R2, #14H ;-----MOV R3, #59H ; R4R5
MOV A, R1
ADD A, R3 ;adiciona R1 e R3DA A ;ajusta resultadoMOV R5, A ;LSB em R5MOV A, R0
ADDC A, R2 ;adiciona R0 e R2DA A ;ajusta resultadoMOV R4, A ;MSB em R4LJMP SOMA2
c) SUBT: MOV PSW, #00H ;subtracao de 16 bits:MOV R0, #23H ; R0R1
MOV R1, #90H ;-R2R3MOV R2, #14H ;-----
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
43/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 36
MOV R3, #59H ; R4R5
MOV A, R1SUBB A, R3 ;subtrai R3 de R1MOV R5, A ;LSB em R5
MOV A, R0SUBB A, R2 ;subtrai R2 de R0MOV R4, A ;MSB em R4LJMP SUBT
d) MULT: MOV PSW, #00H ;multiplicacao de 16 bits:MOV R0, #23H ; R0R1MOV R1, #90H ; xR2R3MOV R2, #14H ;--------MOV R3, #59H ;R4R5R6R7
MOV A, R1MOV B, R3MUL AB ;multiplica R1 e R3MOV R7, A ;LSB em R7MOV R6, B ;MSB em R6R7
MOV A, R1MOV B, R2MUL AB ;multiplica R1 e R2
ADD A, R6MOV R6, A ;adiciona LSB em R6
MOV A, BADDC A, #00HMOV R5, A ;MSB em R5
MOV A, R0MOV B, R3MUL AB ;multiplica R0 e R3
ADD A, R6MOV R6, A ;adiciona LSB em R6MOV A, B
ADDC A, R5 ;adiciona MSB em R5
MOV R5, A
MOV A, R0MOV B, R2MUL AB ;multiplica R0 e R2
ADD A, R5MOV R5, A ;adiciona LSB em R5MOV A, B
ADDC A, #00HMOV R4, A ;MSB em R4LJMP MULT
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
44/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 37
Manipulao de Variveis Booleanas (Bits)Fazem parte do grupo de manipulao de variveis booleanas as
instrues CLR, SETB, CPL,ANL, ORL, e MOV.A instruo CLR reseta uma varivel booleana, possuindo a seguinte
sintaxe:
CLR
O corresponde ao endereo individual do bit que deseja-sezerar (da regio da memria interna de dados enderevel bit-a-bit ou de umregistro de funo especial enderevel bit-a-bit).
CLR bitReseta o valor da varivel booleana endereada (bit).Exemplo: CLR 35H
A instruo SETB seta uma varivel booleana, possuindo a seguintesintaxe:
SETB
O corresponde ao endereo individual do bit que deseja-sesetar (da regio da memria interna de dados enderevel bit-a-bit ou de umregistro de funo especial enderevel bit-a-bit).
SETB bitSeta o valor da varivel booleana endereada (bit).Exemplo: SETB TR0
A instruo CPL complementa uma varivel booleana, possuindo aseguinte sintaxe:
CPL
O corresponde ao endereo individual do bit que deseja-secomplementar (da regio da memria interna de dados enderevel bit-a-bit ou
de um registro de funo especial enderevel bit-a-bit).
CPL bitComplementa o valor da varivel booleana endereada (bit).Exemplo: CPL C
As instruesANL, e ORL realizam as operaes lgicas E e OU com oflag de carry, respectivamente, utilizando as seguintes sintaxes:
ANL C,
ORL C,
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
45/97
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
46/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 39
Controle de ProgramaFazem parte do grupo de controle de programa as instrues LJMP,
AJMP, SJMP, JMP, LCALL,ACALL, RET, RETI, JNZ, JZ, JNC, JC, JNB, JB, JBC,CJNE, DJNZ e NOP.
Este grupo de instrues atua em endereos da memria de programa,
causando desvios na seqncia natural de execuo do programa (registro defuno especial PC).
As instrues LJMP, AJMP e SJMP so instrues de desvioincondicional e possuem as seguintes sintaxes:
LJMP
AJMP
SJMP
JMP @A+DPTR
O da instruo LJMP um endereo de 16 bits damemria de programa. Atravs dessa instruo possvel realizar desvios paraqualquer endereo dos 64Kb de memria de programa.
LJMP end16Efetua um desvio incondicional da execuo para o endereo (end16) da
memria de programa.Exemplo: LJMP 2000H
O da instruoAJMP um endereo de 11 bits damemria de programa. Atravs dessa instruo possvel realizar desviosapenas para a mesma pgina de 2Kb da memria de programa onde encontra-se a referida instruo.
AJMP end11Efetua um desvio incondicional da execuo na mesma pgina de 2Kb
da memria de programa. O endereo de 16 bits do desvio obtido pela CPUcompletando os 11 bits (end11) com os 5 bits mais significativos do endereocontido no registro de funo especial PC.
Exemplo:AJMP DESVIO
O da instruo SJMP um valor de 8 bits correspondenteao deslocamento relativo desejado em relao ao atual endereo de execuo(registro de funo especial PC). Atravs dessa instruo possvel realizardesvios relativos de 128 a +127 posies na memria de programa, pois odeslocamento dado em complemento de dois.
SJMP relEfetua um desvio incondicional relativo da execuo do programa. O
endereo de 16 bits do desvio obtido pela CPU somando-se o valor relativo(rel) ao endereo contido no registro de funo especial PC.
Exemplo: SJMP VOLTA
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
47/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 40
As instrues LCALL e ACALL so instrues de chamadas desubrotinas (funes) e possuem as seguintes sintaxes:
LCALL
ACALL
O da instruo LCALL um endereo de 16 bits damemria de programa. Atravs dessa instruo possvel realizar chamadasde subrotinas em qualquer endereo dos 64Kb de memria de programa.
LCALL end16Salva o contedo do registro de funo especial PC na pilha (o registro
SP incrementado 2 vezes, pois trata-se de um registro de 16 bits). Emseguida efetua um desvio para o endereo da subrotina (end16). O valor salvona pilha constitui o endereo de retorno a ser restaurado pela instruo RET aofinal da subrotina.
Exemplo: LCALL 3000H
O da instruoACALL um endereo de 11 bits damemria de programa. Atravs dessa instruo possvel realizar chamadasde subrotinas apenas para a mesma pgina de 2Kb da memria de programaonde encontra-se a referida instruo.
ACALL end11Salva o contedo do registro de funo especial PC na pilha (o registro
SP incrementado 2 vezes, pois trata-se de um registro de 16 bits). Em
seguida efetua um desvio para o endereo da subrotina (end11) na mesmapgina de 2KB da memria de programa. O valor salvo na pilha constitui oendereo de retorno a ser restaurado pela instruo RET ao final da subrotina.
Exemplo:ACALL TEMPO
As instrues RET e RETI so instrues que realizam o retorno dechamadas de subrotinas e interrupes, respectivamente, possuindo asseguintes sintaxes:
RET
RETI
As instrues de retorno recuperam o endereo original contido noregistro de funo especial PC no momento da chamada da subrotina ouinterrupo.
RETRetorna de uma subrotina. O endereo de retorno recuperado da pilha
e armazenado no registro de funo especial PC (o registro SP decrementado 2 vezes, pois trata-se de um registro de 16 bits).
Exemplo: RET
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
48/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 41
RETIRetorna de uma subrotina. O endereo de retorno recuperado da pilha
e armazenado no registro de funo especial PC (o registro SP decrementado 2 vezes, pois trata-se de um registro de 16 bits). A diferena emrelao instruo RET que a instruo RETI habilita novamente
interrupes de menor ou igual prioridade, anteriormente desabilitadas naocorrncia da interrupo.
Exemplo: RETI
As instrues JNZ, JZ, JNC e JC so instrues de desvio condicional epossuem as seguintes sintaxes:
JNZ
JZ
JNC
JC
A condio de desvio dada pelo mnemnico da instruo utilizada:JNZ efetua um desvio se o contedo do acumulador for diferente de zero, JZefetua um desvio se o contedo do acumulador for igual de zero, JNC efetuaum desvio se o estado do flag de carry for igual a zero e JC efetua um desviose o estado do flag de carry for igual a um. O de todas essasinstrues sempre um valor de 8 bits correspondente ao deslocamento dodesvio relativo desejado em relao ao atual endereo de execuo (registrode funo especial PC). Atravs dessa instruo possvel realizar desviosrelativos de 128 a +127 posies na memria de programa, pois o
deslocamento dado em complemento de dois.
JNZ relTesta o contedo do acumulador e efetua um desvio relativo no
programa se for diferente de zero. O endereo de 16 bits do desvio obtidopela CPU somando-se o valor relativo (rel) ao endereo contido no registro defuno especial PC, se o resultado do teste for verdadeiro.
Exemplo: JNZ VOLTA
JZ rel
Testa o contedo do acumulador e efetua um desvio relativo noprograma se for igual a zero. O endereo de 16 bits do desvio obtido pelaCPU somando-se o valor relativo (rel) ao endereo contido no registro defuno especial PC, se o resultado do teste for verdadeiro.
Exemplo: JZ ZERO
JNC relTesta o flag de carry e efetua um desvio relativo no programa se for igual
a zero. O endereo de 16 bits do desvio obtido pela CPU somando-se o valorrelativo (rel) ao endereo contido no registro de funo especial PC, se o
resultado do teste for verdadeiro.Exemplo: JNC SEM
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
49/97
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
50/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 43
A instruo CJNE realiza uma comparao entre 2 operandos e, casono sejam iguais, efetua um desvio na execuo do programa. Possui aseguinte sintaxe:
CJNE , ,
O pode ser o acumulador, um registro do banco deregistros em uso ou um ponteiro, o pode ser um endereo damemria de dados interna ou uma constante e o sempre umvalor de 8 bits correspondente ao deslocamento do desvio relativo desejado, aser efetuado no caso do e do serem diferentes.O deslocamento dado em complemento de dois.
CJNE A, direto, relCompara o contedo do acumulador com o contedo da posio de
memria de dados interna (direto). Se os valores forem iguais, o programaprossegue normalmente para a prxima instruo. Caso contrrio, um desvio realizado pela CPU somando-se o valor relativo (rel) ao endereo contido noregistro de funo especial PC.
Exemplo: CJNE A, 1FH, TECLA
A instruo DJNZ realiza uma decremento e, caso o resultado sejadiferente de zero, efetua um desvio na execuo do programa. Possui aseguinte sintaxe:
DJNZ ,
O pode ser um registro do banco de registros em uso ouum endereo da memria de dados interna ou uma constante e o sempre um valor de 8 bits correspondente ao deslocamento do desviorelativo desejado, a ser efetuado no caso do ser diferente dezero. O deslocamento dado em complemento de dois.
DJNZ Rn, relDecrementa o contedo do registro R0 a R7 (Rn) do banco de registros
em uso, ocorrendo um desvio no programa caso o resultado seja diferente de
zero. Se o resultado aps o decremento for nulo o programa prossegue para aprxima instruo. Caso ocorra um desvio, o endereo de desvio calculadopela CPU somando-se o valor relativo (rel) ao endereo contido no registro defuno especial PC.
Exemplo: DJNZ R0, LOOP
A instruo NOP aguarda o tempo de um ciclo de mquina da CPU semefetuar nenhuma operao. Possui a seguinte sintaxe:
NOP
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
51/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 44
NOPSem operao, apenas aguarda o tempo relativo a um ciclo de mquina.Exemplo: NOP
Para se ter noo de todas as instrues de manipulao de variveisbooleanas existentes para a famlia MCS51 deve-se consultar a tabela deinstrues completa que se encontra nos anexos.
Exerccios1) Implemente uma subrotina que receba um valor no registro R0 como
entrada e retorne esse valor elevado ao quadrado nos registros R1 e R2(R1 dever conter o byte mais significativo e R2 o menos significativo).
2) Implemente uma subrotina que receba um valor no acumulador e retorneum valor no registro B, seguindo a correspondncia dada na tabela a seguir:
A 10H 20H 30H 40HB 98H 76H 54H 23H
3) A instruo NOP bastante utilizada em laos de repetio para gerartemporizaes atravs de software, como mostrado na subrotina a seguir.Consultando a tabela de instrues completa para obter os tempos deexecuo de cada instruo e supondo uma freqncia de clock de 6MHz,calcule o tempo gerado pela subrotina ATRASO.
;**********************************************************
; ATRASO gera um tempo de atraso por software; ENTRADA: nada; SAIDA: tempo de atraso; DESTROI: R1 e R2 do banco de registros em uso;**********************************************************
ATRASO: MOV R1, #80HA1: MOV R2, #90HA2: NOP
NOPDJNZ R2, A2DJNZ R1, A1
RET
4) Como a instruo DA A somente pode ser usada para o ajuste decimal doacumulador aps operaes de adio, foi desenvolvida uma subrotina parao ajuste decimal do acumulador aps operaes de subtrao. Analise ofuncionamento da subrotina DAASUB, cuja listagem mostrada a seguir etire concluses sobre o seu funcionamento.
;**********************************************************; DAASUB - ajuste decimal do acumulador apos subtracoes; ENTRADA: A; SAIDA: A;**********************************************************
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
52/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 45
DAASUB: PUSH PSWPUSH A
ANL A, #0FHCLR CSUBB A, #0AH
JC SEM0 ;inferior precisa de ajuste?POP ACLR CSUBB A, #06H ;ajusta nibble inferiorPUSH A
SEM0: CPL C ;nao ajusta nibble inferiorPOP APUSH A
ANL A, #F0HCLR CSUBB A, #A0H
JC SEM1 ;superior precisa de ajuste?POP ACLR CSUBB A, #60H ;ajusta nibble superiorPUSH A
SEM1: CPL C ;nao ajusta nibble superiorPOP APOP PSWRET
5) A subrotina mostrada em seguida realiza a comparao de valores de 24
bits. As variveis de entrada so ponteiros para os bytes mais significativosdos valores a serem comparados. Analise o funcionamento da subrotinaCOMP3 e determine como o programador deve modific-la caso queiraampliar o nmero de bytes dos valores a serem comparados.
;**********************************************************; COMP3 compara valores de 3 bytes apontados por R0 e R1; ENTRADA: R0 e R1 = ponteiros para MSB; SADA: se Z = 1 -> R0=R1; se CY = 0 -> R0>R1; se CY = 1 -> R0
-
7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto
53/97
Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 46
Exerccios PrticosElabore os seguintes programas em Assembly da famlia MCS51,
verifica