Você está na página 1de 20

MINI-CURSO DE

MICROCONTROLADOR

José Edson dos Santos Marinho


Ednaldo dos Santos Marinho

INTRODUÇÃO A CPU de qualquer sistema de com- de execução. Durante o ciclo de uma ins-
Com o avanço da tecnologia e a uti- putador contém os seguintes grupos de trução a CPU faz com que o conteúdo
lização da eletrônica digital por grande unidades funcionais: do contador de programa seja colocado
parte das empresas, o emprego de no barramento de endereços, endere-
microcontroladores vêm sendo muito - Registradores e contadores çando, desta maneira, a posição de me-
requisitado para um melhor desenvol- Os registradores e contadores são mória que contém a instrução que deve
vimento da produção, diminuindo os unidades funcionais usadas para o ser executada.
custos e trazendo benefícios para as armazenamento temporário de bits den-
empresas que utilizam esse sistema. É tro da CPU.
importante salientar que, considerando UNIDADES DE ENTRADA/SAÍDA (I/O)
a relação custo/benefício, os microcon- - Unidade Lógica e Aritmética (ULA) As unidades de entrada/saída são
troladores podem não só ser usados em A unidade lógica e aritmética é a os meios pelos quais o usuário se co-
empresas de médio/grande porte, como unidade funcional da CPU que executa munica com o sistema. Essas unidades
podem também ser utilizados em vári- operações lógicas e aritméticas entre possuem interfaces que permitem a co-
os projetos de eletrônica, na substitui- palavras binárias, gerando uma outra nexão com dispositivos chamados de
ção de vários componentes digitais, ob- palavra na saída . periféricos, tais como teclado,
tendo-se assim no final do projeto um monitores, LCD´s, etc.
melhor acabamento – pois um - Unidade de controle e sincronização
microcontrolador ocuparia um menor A unidade de controle e sincroniza-
espaço físico - e uma maior eficiência e ção coordena e controla todas as uni- ARQUITETURA
praticidade, uma vez que todos os co- dades funcionais em uma seqüência A performance do microcontrolador
mandos seriam executados via software. lógica e sincronizada. depende da sua arquitetura interna, ou
Antes de um aprofundamento no seja, do modo em que o microcontro-
assunto microcontroladores, é importan- lador foi projetado tanto para o hardware
te conhecermos um pouco da história PROCESSAMENTO como para software. No hardware apre-
desses componentes desde as suas O processador ou unidade central sentaremos a arquitetura Von-Neumann,
origens. de processamento (CPU) é a parte do na qual se refere o software CISC.
Na década de 70 começaram a ser sistema que faz o processamento das
utilizados microprocessadores em com- informações para que as instruções se-
putadores para uma maior eficiência no jam executadas; as instruções devem - Arquitetura Von-Neumann
processamento de dados. O micropro- estar armazenadas na memória de pro- Na arquitetura Von-Neumann, os
cessador Intel foi um dos precursores grama em seqüência, formando assim barramentos de dados e endereços são
e, a partir daí, houve uma preocupação o programa . compartilhados entre memórias de pro-
em melhorar cada vez mais o sistema A CPU possui um registrador cha- gramas e memórias de dados na comu-
de processamento de dados através mado de contador de programa (PC) nicação com a CPU (figura1). Nesse tipo
desses componentes. Baseado na ar- que contém o endereço da próxima ins- de arquitetura, quando a CPU está
quitetura de um microprocessador e trução que deve ser executada. acessando a memória de programa não
seus periféricos, foi criado um compo- Toda vez que uma instrução é reti- pode acessar a memória de dados, por-
nente que (fisicamente em uma unida- rada da memória pela unidade central que usa os mesmos barramentos para
de) comportasse todo um sistema que de processamento, automaticamente o as duas memórias.
equivalesse a um microprocessador e contador de programa é incrementado
seus periféricos; assim surgiu o micro- para que, após o processamento desta
controlador. Todas as informações e ex- instrução, quando a CPU for buscar a CISC (Complex Instruction Set
plicações citadas neste trabalho basei- próxima instrução, baste usar o ende- Computer)
am-se nos microcontroladores 8051 e reço contido no contador de programa. CISC: Computador com Set de Ins-
8031 da Intel. Toda vez que a CPU é ligada ou trução mais Complexo, quanto maior a
resetada, automaticamente o seu con- complexidade da instrução que deve ser
tador de programa é zerado, desta for- executada, mais espaço ela ocupa no
UNIDADE CENTRAL DE ma, a primeira tarefa que a CPU irá rea- chip. Desse modo, chegará um momen-
PROCESSAMENTO (CPU) lizar é a execução da instrução contida to que passaremos a ter um set de ins-
A unidade central de processamento na posição de memória de endereço truções tão grande que começará a afe-
controla todas as funções realizadas “0000”. Cada instrução possui duas fa- tar o desempenho, dificultando a possi-
pelo sistema. ses distintas: o ciclo de busca e o ciclo bilidade de implementar outras funções

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


Figura 1 - Volatilidade vadores específicos e só uma vez. São
Memórias voláteis: são aquelas as memórias não voláteis;
que perdem as informações quando é
cortada sua alimentação. São memóri- Memórias EPROM (Erasable
as que geralmente usam como elemen- Programmable Ready Only Memory)
to de memória o flip-flop. Essas memórias são utilizadas no
Memórias não voláteis: são memó- sistema somente para a leitura , tam-
rias que mesmo desligando-se sua ali- bém empregadas como memórias de
mentação, não perdem as informações programa e só podem ser gravadas com
armazenadas. Dentre essas se desta- gravadores específicos. Podem ser apa-
cam as magnéticas e as eletrônicas gadas por raios ultravioleta e regrava-
ROM, PROM, EPROM, EEPROM , e das por muitas vezes. São chamadas
outras. memórias não voláteis.

- Memórias de escrita/leitura ou so- Memórias EEPROM ou E²PROM


mente leitura (Electrically Erasable Programmable
importantes. Ter um complexo (grande) Escrita/leitura: são memórias que Ready Only Memory)
set de intruções “CISC” nem sempre é podem ser acessadas pela CPU tanto Essas memórias podem ser usadas
interessante para um bom desempenho para leitura quanto para escrita; elas são no sistema tanto para leitura como para
do processador. usadas para armazenar dados que se- escrita, podem ser gravadas com gra-
Numa análise feita pelo laboratório rão utilizados durante a execução do vadores específicos ou pelo sistema;
da IBM sobre como estavam sendo usa- programa (memórias RAM´s, são apagadas eletricamente e regrava-
do os diversos tipos de instruções, EEPROM´s). das por muitas vezes; são consideradas
concluiram que num microprocessador memórias não voláteis.
que usava um set de instruções de, por Somente leitura: são as memórias
exemplo, 200 instruções, a maior parte que armazenam o programa, ou seja Memórias PEROM (Programmable
do processamento era feita apenas com são as memórias que só serão lidas Erasable Ready Only Memory)
umas 10 instruções. pela CPU e que já vêm gravadas para o Uma linha de memórias programá-
Uma grande parte das instruções era sistema (memórias ROM´s ,PROM´s , veis e apagáveis apenas para leitura, de
pouco usada, às vezes até uma única etc). 3V e 5V, apenas dentro do sistema.
vez em um longo programa, de modo Fabricadas com a avançada tecnologia
que elas poderiam ser implementadas - Tipo de armazenamento CMOS, não voláteis, suas característi-
pelas instruções básicas mais usadas. Estáticas: memórias estáticas são cas incluem:
Daí o aparecimento da nova arqui- aquelas nas quais as informações per- · Operação de leitura e programação
tetura com o set de instruções reduzido manecem armazenadas enquanto não em apenas 3V e 5V
“RISC”. houver escrita ou não faltar energia. · Proteção de dados de software e
Dinâmicas: memórias dinâmicas hardware
são memórias que perdem informações · Operação de programação por setor
MEMÓRIAS armazenadas mesmo com alimentação. · 1000 ciclos de programa
Memórias são os dispositivos que Na RAM dinâmica (ou DRAM) isso acon- · Retenção de dados de 10 anos
armazenam informações e são usadas tece porque cada célula tem um tran- · Baixa dissipação de potência
em todos os sistemas microcontrolados. sistor MOSFET e um capacitor que ar- · Tempo de ciclo de programa rápido
Existem vários tipos de memórias que mazena um dado (1bit). · Detecção de fim de programa
podem ser classificadas por vários ítens
diferentes. Vamos analisar os principais: - Tipos de memórias Memórias FLASH
Veremos a seguir alguns tipos de A memória FLASH é um dispositivo
- Acesso memórias existentes no mercado e que de armazenamento confiável, não volá-
As memórias armazenam informa- são muito utilizadas: til, de boa relação custo/ benefício e que
ções em lugares que se denominam “lo- possui características de leitura da
calidades de memória”. Cada localida- Memórias RAM (Random Acces EPROM, EEPROM e SRAM , porém
de de memória guarda um conjunto de Memory) quando aplica-se 12V sobre o dispositi-
bits e tem um endereço. No acesso des- Essas memórias são de acesso ale- vo, este pode ser gravado com base em
ses endereços podemos analisar : atório, que podem ser acessadas a qual- bytes. No caso da memória FLASH - 5V
O tempo de acesso: é o tempo que quer momento e em qualquer endere- estes dispositivos foram projetados para
a memória necessita para que sejam es- ço. Elas podem ser estáticas ou dinâmi- serem programados dentro do sistema
critos ou lidos os dados em suas locali- cas e também podem ser gravadas pelo com o fornecimento padrão de 5V. Em
dades; sistema com a tensão de 5V. São me- programadores de EPROM convencio-
Acesso seqüencial: nas memórias mórias consideradas voláteis. nais não há necessidade de 12Vpp, nem
que têm acesso seqüencial, para para programação, nem para apaga-
acessar um endereço de uma certa lo- Memórias ROM (Ready Only mento. É composta de uma arquitetura
calidade, precisa-se passar por ende- Memory) de apagamento de setor (qualquer com-
reços intermediários (as memórias mais Essas memórias são utilizadas no binação pode ser apagada simultanea-
comuns desse tipo são as que utilizam sistema somente para a leitura. mente) e 100.000 ciclos de apagamen-
fita magnética); to/programação.
Acesso aleatório: as memórias que Memórias PROM (Programmable
utilizam esse tipo de acesso são as que Ready Only Memory) Memória FLASHFILE
permitem que seja acessado qualquer Essas memórias são utilizadas no A memória FLASHFILE, simetrica-
dado em qualquer endereço sem a ne- sistema somente para a leitura; geral- mente bloqueada, da Intel, oferece uma
cessidade de ter que passar por outros mente usadas como memórias de pro- solução não volátil com leitura e pro-
endereços intermediários. grama, só podem ser gravadas com gra- gramação de mais alta densidade para

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


armazenamento em massa. O armaze- etc. A memória de programa pode ser máquina, tendo um resistor de pull-down
namento de aplicações de software e a ROM, FLASH ou outro tipo. No caso do interno permitindo que se use apenas
operação com código de sistema em microcontrolador 8051 ele pode funcio- um capacitor externo para obter o reset
RFAs (Residential Flash Arrays ) propor- nar como um microcontrolador ou como por power-on.
cionam execução instantânea, rápida e um microprocessador. Na figura 2 mos-
no local (in place). RFAs são protegi- trado o diagrama de blocos do 8051. A Do pino 10 ao pino 17 temos:
dos também contra o envelhecimento ATMEL possui uma enorme família de O port P3, que vai de P3.0 a P3.7
do software, já que este pode ser atua- componentes com as mesmas caracte- tem as mesmas características de fun-
lizado no sistema. O software RFA pro- rísticas do 805, alguns até com as mes- cionamento do port P1, tendo também
longa a vida da bateria e aumenta a mas pinagens dos registradores; outros outras funções especiais que estão des-
confiabilidade do sistema através da com pinagens diferentes, mas com o critas abaixo.
redução do número de acessos ao disk- mesmo set de instruções, com clock de
drive. 100.000 ciclos de apagamento/ 12 MHz até aproximadamente 35 MHz.
programação. Falaremos um pouco mais dessa
família mais adiante. A DALLAS Semi-
Memórias FIELD conductor tem um microcontrolador de
Estes dispositivos são para utiliza- alta performance, de até 90MHz, com-
ção em filmes digitais e sistemas patível com 8051.
multimídia. Eles fornecem dados atra-
vés de acesso serial de alta velocidade. Descrição da pinagem do 8051
Sua capacidade de memória preenche Do pino 1ao pino 8 temos:
um arquivo de uma tela de TV NTSC. O port P1, que vai de P1.0 a P1.7.
Cada um dos bits possui porta de leitu- Estes pinos são bidirecionais, podendo
ra e gravação assíncronas, de controle ser endereçáveis individualmente ou
independente a diferentes velocidades como porta de 8 bits; possuem resisto-
de clock, proporcionando uma operação res de pull-up internos, forçando assim
FIFO , renovando a células de armaze- nível lógico alto. Cada pino pode acio-
namento RAM automaticamente. nar até 4 portas TTL-LS.

Memórias FIFO Pino 9


Os dispositivos FIFO proporcionam RST/VPD. Estes pinos resetam o sis-
armazenamento temporário de dados tema com a aplicação de um nível lógi-
Fig. 3 - DESCRIÇÃO DA PINAGEM DO 8051.
em sequência de tal forma que a primei- co alto por, pelo menos, dois ciclos de
ra palavra na porta de entrada será a
primeira na porta de saída. As portas
operam de forma independente e os
dados podem ser lidos e gravados em
velocidades diferentes.
Os dispositivos FIFO possuem po-
sições de memória que inibem a entra-
da de dados adicionais caso estejam
ocupadas, podendo apenas enviar da-
dos armazenados para fora.
O tempo utilizado para completar
uma operação chama-se tempo de
acesso, esse valor pode determinar a
velocidade do sistema no qual o dispo-
sitivo está operando.

Memórias Seriais
Estes dispositivos são de tamanho
reduzido podendo ser ligados a um
barramento serial I²C (Inter-Integrated
Circuit Bus) ou SPI (Serial Peripheral
Interface) junto com outros dispositivos
seriais, com muitas vantagens em rela-
ção às memórias paralelas.

MICROCONTROLADORES
Existem no mercado muitos tipos de
microcontroladores, sendo o 8051 o
mais popular. O microcontrolador tam-
bém é conhecido com microcomputador
de um só chip reunindo num único com-
ponente vários elementos de um siste-
ma, antes baseado em microprocessa-
dor e que eram desempenhados por
vários componentes independentes tais
como RAM, ROM, comunicação serial, Fig. 2 - ARQUITETURA INTERNA EM BLOCO DO 8051BH.

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


pino 10 = P3.0 RXD/ Data : entra- Pino 31: ar um sinal para o buffer “lê pino”, que
da de dados serial. EA (External Enable) , entrada de pega o sinal que estiver nele e envia
pino 11 = P3.1 TXD/Clock: saída seleção de memórias. Quando coloca- para via de dados interna; quando se
de dados serial. do em nível lógico baixo, a CPU execu- quer ler o flip-flop, o sinal é enviado para
pino 12 = P3.2 INT0: interrupção ta somente as instruções da memória o buffer “lê latch” que libera o sinal da
externa de número 0, ativo em nível ló- de programa externa; quando em nível saída Q para a via de dados interna. No
gico baixo. lógico alto, a CPU executa as instruções microcontrolador existem algumas ins-
pino 13 = P3.3 INT1: interrupção da memória de programa interna (se truções responsáveis pela leitura do flip-
externa de número 1, ativo em nível ló- existir). flop, e outras do pino. Para que se pos-
gico baixo. sa ler um sinal externo no pino, deve-
pino 14 = P3.4 T/C0 : entrada ex- Pino 32 ao pino 39 temos: se primeiro escrever nele um nível alto
terna para o temporizador/contador de Port P0: que vai de P0.0 a P0.7. Este evitando assim que o transistor condu-
eventos. é um port de 8 bits bidirecional com dre- za e mande um sinal baixo no pino, pois
pino 15 = P3.5 T/C1: entrada ex- no aberto. se for entrar um sinal de nível alto no
terna para o temporizador/ contador de Sem resistores de pull-up internos, pino, o transistor não poderá estar
eventos. funciona como um barramento de da- saturado, senão entrará em conflito pre-
pino 16 = P3.6 WR: strobe dos, e a parte menos significativa do judicando a leitura. Isso acontece em
(sinalizador) de escrita de dados exter- barramento de endereços. todos os PORT’s do microcontrolador.
no Quando estão sendo usado os pinos de
pino 17 = P3.7 RD : strobe (sina- Pino 40, temos I/O como PORT’s (empregando somen-
lizador) de leitura de dados externo VCC (Alimentação positiva) te as memórias internas, é necessário
Obs: estas funções serão mais de- Basicamente, os pinos do microcon- o uso de resistores de pull-up no port
talhadas na continuação da apostila trolador são construídos como mostra a P0 .
figura 4 abaixo com algumas diferenças
Os pinos 18 e 19 são: uns dos outros, mas para explicação de
XTAL 1 (18) um modo geral pode ser considerado um CLOCK E CICLO DE MÁQUINA
XTAL 2 (19) flip-flop tipo D com dois buffers tri-state, O microcontrolador é um circuito di-
um transistor e um resistor. nâmico, e para o seu funcionamento
Pino 20: Quando o microcontrolador vai es- necessita de um sinal de clock (relógio)
VSS conectado ao terra do circuito crever no pino, o dado é enviado para a para sincronização de suas operações.
via de dados interna e também é dado Este sinal de clock é gerado por um
Do pino 21 ao pino 28 temos: um clock no flip-flop, que terá o mesmo oscilador que fornece um seqüência
O port P2, que vai de P2.0 a P2.7. sinal na saída “Q” (e o complemento des- ininterrupta de pulsos com períodos
Tem as mesmas características de fun- te sinal na saída Q/), que por sua vez constantes. O chamado ciclo de máqui-
cionamento do port P1, sendo estes pi- está ligada ao gate de um transistor, o na é uma quantidade de pulsos de clock
nos usados como pinos de endereça- qual entra em saturação quando for apli- que o processador requer para fazer
mento externo endereçando a parte cado nível “1”. suas funções; e o ciclo de instrução é a
mais significativa dos 16 bits (A8 a A15). Se o sinal que estiver na via de da- quantidade de ciclos de máquina que
dos for “1” e o flip-flop receber um clock, são necessários para a execução de
Pino 29: a saída Q terá um sinal de nível alto, e uma instrução.
PSEN (Program Store Enable), sa- Q/ terá um sinal de nível baixo que en- Um exemplo genérico de uma ins-
ída para habilitação do programa exter- trará no gate do transistor deixando-o trução: suponhamos que um processa-
no, sinalizador de leitura da memória em corte e, então, o sinal no pino será o dor qualquer leve para a execução de
de programa exter na; quando o do resistor, ou seja , nível “1”. Agora, se uma instrução 5 (cinco) ciclos de má-
microcontrolador busca instruções este o sinal que estiver na via de dados in- quina, e que cada ciclo de máquina des-
pino vai ao nível zero. terna for nível baixo e novamente o flip- se processador seja igual a 2 (dois)
flop receber um clock, na saída Q tere- clocks. Para executar essa instrução o
Pino 30: mos um sinal de nível baixo, e na saída processador levará 10 (dez) clocks; su-
ALE (Address Latch Enable), saí- Q/ um sinal de nível alto que levará o pondo também que desses 5 (cinco) ci-
da habilitadora do latch de endereços, transistor à saturação e com isso o pino clos de máquina, 2(dois) seriam para a
separando o barramento de dados da terá um nível baixo. Quando se quer ler busca da instrução na memória de pro-
parte menos significativa do barramento um pino, o microcontrolador deve envi- grama e os outros 3 (três) para a execu-
de endereços que são multiplexados
pelo port P0.

Fig. 4 - Construção básica de um pino. Figura 5

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


ção dessa instrução, como mostra o grá-
fico abaixo (figura 5).
No microcontrolador 8051 um ciclo
de máquina corresponde a 12 períodos,
e as instruções levam de 1 (um) a 3 (três)
ciclos de máquina para ser realizadas
dependendo da instrução. Conforme o
componente, o ciclo de máquina pode
ser em maior ou menor número de perí-
odos, outros microcontroladores têm os
ciclos de máquina diferentes. Figura 6
O 8051 possui internamente um cir-
cuito oscilador com um inversor linear mostra a figura 7 abaixo. O auto-reset é
de estágio simples, oferecendo duas usado para que se tenha um tempo para
possibilidades de clock distintas, sendo a fonte se estabilizar e, assim, todos os
um externa e outra interna. componentes do sistema serão alimen-
Para o uso de oscilador externo tados corretamente evitando níveis de
deve-se aterrar o pino 19 e injetar o si- tensões errados.
nal externo no pino 18 que, desta for- Outro modo de se obter o reset é
ma, não atuará no gerador interno. através de um “push-button” ligado ao
Figura 7
Para usarmos o clock gerado inter- pino 9, em paralelo com o capacitor
namente devemos intercalar entre os (‘reset forçado’).
pinos 18 e 19 um cristal com filtro Desse modo o reset pode ser dado Os registradores que são bytes e bits
cerâmico na freqüência desejada, como a qualquer instante sem a necessidade endereçáveis podem ser acessados bit
mostra na figura 6. de desligar o sistema. a bit individualmente, ou pode-se
acessar os 8 bits (byte) de uma vez .
Os registradores de funções espe-
RESET ORGANIZAÇÃO DA MEMÓRIA ciais de bytes e bits endereçáveis e seus
O reset não é bem uma interrup- No microcontrolador 8051 a memó- endereços, assim como os endereços
ção, mas às vezes o chamamos assim ria está organizada do seguinte modo: dos bytes, são mostrados na tabela 2.
por sua ação semelhante a uma inter- memórias internas de 256 bytes de OBS.: estes registradores fazem par-
rupção, já que ele interrompe o proces- memória RAM, sendo 128 bytes de re- te da RAM interna do 8051.
so e reinicia o sistema. No 8051 o reset gistradores de função especial e 128 de Na tabela 2 temos a parte da RAM
é ativo quando o pino 9 permanecer em registradores comuns; e até 4 kbytes de dos registradores de funções especiais
nível alto por pelo menos 2 ciclos de memória de programa interna. com nome e endereço individual dos
máquina. Quando os pinos do 8051 es- Em relação à memória externa, o bits.
tiverem todos em tri-state, e enquanto microcontrolador pode endereçar até 64 Alguns bits têm nomes e endereços,
estiver no processo de reset, os pinos kbytes de memória de programa exter- outros só nomes e outros só endereços;
permanecerão em alta impedância. na, ou 4kbytes internos e 60 kbytes ex- dependendo do microcontrolador usa-
Quando acontece uma interrupção ternos do pode-se ter mais registradores com
por reset, a CPU se reorganiza e outras funções .
inicializa com os seguintes valores nos
registradores. RESISTRADORES DE FUNÇÕES Descrevemos agora as funções de
Valores dos Registradores ESPECIAIS (SFR) cada um dos registradores :
após o RESET Na área de memória SFR (Regis-
Registrador Valor tradores de Funções Especiais) existem O acumulador ( E0 )
PC 0000 alguns registradores que são bytes e bits BIT7 ACC7 E7
ACC 00 endereçáveis, e outros que só são bytes BIT6 ACC6 E6
PSW 00 endereçáveis. Veja figura 8. BIT5 ACC5 E5
SP 07 BIT4 ACC4 E4
DPTR 0000 BIT3 ACC3 E3
P0-P1-P2-P3 FF FF
BIT2 ACC2 E2
IP Xxx00000 BIT1 ACC1 E1
IE 0xx00000 REGISTRADO-
BIT0 ACC0 E0
TMDO 00 RES DE
FUNÇÕES
TCOM 00 O acumulador é um registrador de
ESPECIAIS
TH0 00 uso geral e é um operador em várias
TL0 00 80 instruções, sendo também o lugar onde
TH1 00 fica o resultado de varias operações. Ele
TL1 00 7F é muitas vezes parte do operando da
ÁREA DE BYTES
SCOM 00 ENDEREÇÁVEIS instrução.
SBUF Indeterminado DIRETAMENTE
PCOM 0xxxxxxx* 30 Obs.: notem que o endereço do byte
B 00 do acumulador tem o mesmo no nome
TABELA 1 2F ÁREA DE BITS do endereço do bit zero, então, como
20 ENDEREÇÁVEIS acessar o endereço do bit sem alterar o
O 8051 pode ser automaticamente byte? É simples: no momento de
resetado toda vez que for ligado 1F BANCO DE acessar qualquer endereço, a instrução
(POWER-ON), colocando um resistor e REGISTRADORES de bit é diferente da instrução de byte,
um capacitor no pino 9 (RESET) como 00 Figura 8 logo o código em hexadecimal também

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


TABELA 2 terrupção pedida pelo canal serial ,
quando em nível lógico 0 inibe a inter-
Endereço ENDEREÇOS INDIVIDUAIS DOS BITS Registrador rupção pedida pelo canal serial.
Bytes
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC ET1 Enable Timer 1 (habilita timer
F0 F7 F6 F5 F4 F3 F2 F1 F0 B 1). Quando em nível lógico 1 habilita a
80 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 P0 interrupção pelo timer/count 1. Se EA es-
87 86 85 84 83 82 81 80 tiver habilitado, quando em nível lógico
90 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P1 0 inibe a interrupção pedida pelo timer/
97 96 95 94 93 92 91 90 count 1 .
A0 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P2
A7 A6 A5 A4 A3 A2 A1 A0 EX1 Enable external 1 (habilita
B0 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 P3 INT1). Quando em nível lógico 1, habili-
B7 B6 B5 B4 B3 B2 B1 B0 ta a interrupção pedida pelo dispositivo
A8 EA ES ET1 EX1 ET0 EX0 IE externo ligado no pino INT1 se AE esti-
AF AC AB AA A9 A8 ver=1; quando em nível lógico 0 inibe a
B8 PS PT1 PX1 PT0 PX0 IP interrupção pedida pelo dispositivo ex-
BC BB BA B9 B8 terno ligado ao pino INT1.
D0 CY AC F0 RS1 RS0 OV P PSW
D7 D6 D5 D4 D3 D2 D1 D0 ET0 Enable Timer 0 (habilita timer
98 SM1 SM2 SM3 REN TB8 RB8 TI RI SCN 0). Quando em nível lógico 1 habilita a
9F 9E 9D 9C 9B 9A 99 98 interrupção pelo timer/count 0. Se EA
88 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCOM estiver habilitado, quando em nível lógi-
8F 8E 8D 8C 8B 8A 89 88 co 0 inibe a interrupção pedida pelo
89 Gate C/T M1.1 M0.1 Gate C/T M1.0 M0.0 TMOD timer/count 0.
* * * * * * * * *
Obs: ‘ * ‘ = endereço não disponível em bits, só em bytes; EX0 Enable external 0 (habilita
INT0). Quando em nível lógico 1, habili-
é diferente e isso serve para todos re- Registrador P2 ( A0 ) ta a interrupção pedida pelo dispositivo
gistradores. BIT7 A7 P2.7 externo ligado no pino INT0 se AE esti-
BIT6 A6 P2.6 ver = 1; quando em nível lógico 0 inibe
BIT5 A5 P2.5 a interrupção pedida pelo dispositivo ex-
O registrador B ( F0 ) BIT4 A4 P2.4 terno ligado ao pino INT0.
BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 BIT3 A3 P2.3
F7 F6 F5 F4 F3 F2 F1 F0 BIT2 A2 P2.2 Registrador IP Interrupt Priority (B8)
BIT1 A1 P2.1 Através dos bits desse registrador
Esse registrador em algumas instru- BIT0 A0 P2.0 pode-se alterar a prioridade de interrup-
ções tem seu nome referenciado: MUL ção.
AB , DIV AB , que são operações entre Registrador P3 ( B0 ) BIT7 BF X
os registradores A e B, fora isso ele é BIT7 B7 P3.7 BIT6 BE X
um registrador como outro qualquer. BIT6 B6 P3.6 BIT5 BD X
BIT5 B5 P3.5 BIT4 BC PS
P0 , P1 , P2 e P3 BIT4 B4 P3.4 BIT3 BB PT1
BIT3 B3 P3.3 BIT2 BA PX1
São os registradores que espelham BIT2 B2 P3.2 BIT1 B9 PT0
a situação atual dos pinos físicos dos BIT1 B1 P3.1 BIT0 B8 PX0
ports. BIT0 B0 P3.0

Registrador P0 ( 80 ) Registrador IE Interrupt Enable(A8) PS Priority Serial (Prioridade Serial).


BIT7 87 P0.7 Este registrador é responsável pela Quando em nível 1 indica prioridade
BIT6 86 P0.6 a habilitação das interrupções para interrupção gerada pela serial, se
BIT5 85 P0.5 BIT7 AF EA a mesma estiver habilitada . Quando em
BIT4 84 P0.4 BIT6 AE X nível 0 indica baixa prioridade.
BIT3 83 P0.3 BIT5 AD X
BIT2 82 P0.2 BIT4 AC ES PT1 Priority Timer 1 (Prioridade do
BIT1 81 P0.1 BIT3 AB ET1 temporizador/contador 1). Se em nível
BIT0 80 P0.0 BIT2 AA EX1 1, indica prioridade para interrupção pe-
BIT1 A9 ET0 dida pelo temporizador / contador,
BIT0 A8 EX0
PX1 Priority External 1(Prioridade
Registrador P1 ( 90 ) Interrupção Externa). Quando em nível
BIT7 97 P1.7 EA Enable All: (habilita todas as 1, indica que a prioridade é para o dis-
BIT6 96 P1.6 interrupções). Quando em “0”, desabilita positivo que esteja ligado no pino 13
BIT5 95 P1.5 todas as interrupções ; quando em “1”, (INT1/P3.3) do 8051; no caso de nível 0
BIT4 94 P1.4 permite a escolha de habilitar qualquer indica baixa prioridade.
BIT3 93 P1.3 interrupção através dos bits de controle
BIT2 92 P1.2 individual a seguir PT0 Priority Timer 0 (Prioridade do
BIT1 91 P1.1 temporizador/contador 0). Se em nível
BIT0 90 P1.0 ES Enable Serial (habilita serial). 1, indica prioridade para interrupção pe-
Quando em nível lógico 1 habilita a in- dida pelo temporizador/contador.

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


PX0 Priority External 0 (Priorida- Registrador SCON Serial Control (98) tros modos a meio tempo de recepção
de Interrupção Externa 0) quando em Este registrador serve para o con- do stop bit e deve ser zerado por
nível 1, indica que a prioridade é para o trole do canal serial. software da rotina de atendimento para
dispositivo que esteja ligado no pino 12 BIT7 9F SM0 permitir novas interrupções.
(INT1/P3.2) do 8051; no caso de nível 0 BIT6 9E SM1
indica baixa prioridade. BIT5 9D SM2 Registrador TCON time control (88)
BIT4 9C REN BIT7 8F TF1
Registrador PSW Program Status BIT3 9B TB8 BIT6 8E TR1
Word (D0) BIT2 9A BB8 BIT5 8D TF0
Este registrador contém flags (bits) BIT1 99 TI BIT4 8C TR0
que indicam as ocorrências da ULA a BIT0 98 RI BIT3 8B IE1
cada operação lógica e aritmética que BIT2 8A IT1
houver, e também avisa em que banco SM0 e SM1: Estes selecionam o BIT1 89 IE0
de registradores está ativo. modo em que o 8051 irá operar com o BIT0 88 IT0
canal serial, como segue abaixo
BIT7 D7 CY SM0 SM1 Modo Taxa de transmissão
BIT6 D6 AC 0 0 0 Freq. Clock /12 TF1
BIT5 D5 F0 0 1 1 Variável ( Timer 1) Sempre que ocorrer um estouro de
BIT4 D4 RS1 1 0 2 Freq. Clock /32 ou 64 contagem no contador 1, este bit será
BIT3 D3 RS0 1 1 3 Variável ( Timer 1) levado a nível alto gerando o pedido de
BIT2 D2 0V interrupção do T/C 1 e será levado ao
BIT1 D1 X SM2 nível baixo automaticamente depois de
BIT0 D0 P Possui várias finalidades, dependen- ser atendida a interrupção.
do de que modo foi selecionado:
CY Carry Flag Modo 0: não tem qualquer efeito no TR1
AC Carry Auxiliar funcionamento do canal serial, deven- Será levado ao nível alto para ligar o
OV Overflow Flag do ficar em zero. contador 1(iniciando a contagem) e le-
Estas flags (CY, AC, OV ) são modi- Modo 1: não gera interrupção se vado ao nível baixo quando quiser des-
ficadas por algumas instruções, como estiver setado e o stop bit recebido for ligar o contador 1(parar a contagem) por
mostra a tabela abaixo ilegal. software.
Modo 2 e 3: habilita a comunicação
Instruções CY AC VO entre vários microcontroladores, nestes TF0
ADD x x x modos não é gerada interrupção se es- Sempre que ocorrer um estouro de
ADDC x x x tiver setado, e se o nono bit de dados contagem no contador 0, este bit será
ANL C,bit x - - enviado for zero. levado ao nível alto gerando o pedido
ANL C,\bit x - - de interrupção do T/C 0 e será levado
CLR C 0 - - REN Reception Enable (habilita re- ao nível baixo automaticamente depois
CPL C x - - cepção) de ser atendida a interrupção
CJNE x - - Se estiver setado habilita a recep-
DA x - - ção tão logo um start bit seja detectado, TR0
DIV 0 - x se estiver resetado desabilita a recep- Será levado ao nível alto para ligar o
MUL 0 - x ção. contador 0(iniciando a contagem) e le-
MOV C, bit x - - vado ao nível baixo quando quiser des-
ORL C, bit x - - TB8 ligar o contador 0 (parar a contagem)
ORL C, \bit x - - Nos modos 2 e 3 indica o estado do por software.
RLC x - - nono bit a ser transmitido, pode ser
RRC x - - setado ou resetado por software. IE1
SETB C 1 - - Esse bit será levado ao nível alto
SUBB x x x RB8 quando for detectado um sinal de nível
Não é usado no modo 0 , e no modo baixo no pino INT1, sinalizando o pedi-
RS1 Register bank Select 1 1 indica o estado do stop bit recebido, do de interrupção, e será levado ao ní-
RS0 Register bank Select 0 desde que SM2 esteja zerado. Nos mo- vel baixo logo depois que a interrupção
Estas duas flags selecionam o ban- dos 2 e 3 indica o estado do nono bit for atendida via hardware.
co de registradores do começo da RAM que foi recebido.
interna IT1
TI Indica qual o processo para que haja
RS1 RS0 Banco É uma flag de requerimento de in- a chamada de interrupção INT1. Se em
0 0 0 terrupção de transmissão, é setada pelo nível alto a interrupção será aceita na
0 1 1 hardware após a transmissão do oitavo transição negativa neste pino permane-
1 0 2 bit de dados quando no modo 0, e nos cendo pelo menos 12 períodos de clock,
1 1 3 outros modos ao início do stop bit e deve se em nível baixo a interrupção será
ser zerado por software da rotina de aceita apenas por nível baixo no pino.
atendimento para permitir novas inter-
F0 Flag 0 rupções. IE0
É um bit de uso geral. Quando so- Esse bit será levado ao nível alto
bra no registrador não tem função RI quando for detectado um sinal de nível
P Parity Flag É uma flag de requerimento de in- baixo no pino INT0 sinalizando o pedi-
Bit que vai para o nível lógico 1 quan- terrupção na recepção, é setada pelo do de interrupção, e será levado ao ní-
do o acumulador tiver um número par hardware após a recepção do oitavo bit vel baixo logo depois que a interrupção
de “1”. de dados quando no modo 0, e nos ou- for atendida via hardware.

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


IT0 M1.0 M0.0 Modo Operação DPH Data Pointer High (83) e
Indica qual o processo para que haja 0 0 0 C/T 0 de 8 bits com DPL Data Pointer Low (82)
a chamada de interrupção INT0. Se em clock /32 Esses registradores juntos formam
nível alto a interrupção será aceita na 0 1 1 C/T0 de 16bits um registrador de 16 bits chamado de
transição negativa neste pino permane- 1 0 2 C/T0 de 8 bits com DPTR (Data Pointer) e permite criar um
cendo pelo menos 12 períodos de clock, recarga automática endereço de acesso externo.
se em nível baixo a interrupção será 1 1 3 C/T0 de 8 bits.Dois
aceita apenas por nível baixo no pino. contadores de 8 bits
SP Stack Pointer (81)
Essa tabela também faz parte dos É um registrador utilizado com pilha
Registrador TMOD time mode (89) registradores de funções especiais, po- de endereços de retorno de sub-rotina,
BIT7 Gate rém não são bits endereçáveis , portan- ele é indiretamente manipulado pelas
BIT6 C/T1 to seus bits não tem nomes, e os regis- instruções CALL , RET e RETI , e
BIT5 M1.1 tradores só podem ser acessados pelo acessado diretamente pelas instruções
BIT4 M0.1 endereço dos bytes. PUSH e POP.
BIT3 Gate
BIT2 C/T0 8D Time High 1 TH1 Do endereço 30H ao endereço 7F H
BIT1 M1.0 8C Time High 0 TH0 da RAM temos registradores comuns
BIT0 M0.0 8B Time Low 1 TL1 com acesso por byte; já do endereço
8A Time Low 0 TL0 20H até o endereço 2F H, os registra-
Gate 87 Power Control Register PCON dores podem ser acessados tanto por
Este bit tem por função escolher 83 Data Pointer High DPH byte como por bits. Do endereço 00 H
como o T/C1 será habilitado. Se for 0 82 Data Pointer Low DPL ao endereço 1F H existem quatro ban-
(função temporizador), o T/C1 estará 81 Stack Pointer SP cos de registradores que só são bytes
habilitado, iniciando tal contagem quan- endereçáveis, como mostra a tabela
do o bit TR1(no registrador TCON) for 1. TH1 Time High 1 (8D) e TL1 Time abaixo.
Se o GATE for 1 (função contador), o T/ Low 1 (8B)
C1 estará habilitado quando TR1 e INT1 São registradores de 8 bits que em
estiverem em 1 simultaneamente. conjunto com registradores de 16 bits 7F
REGISTRADORES DE USO
são chamados de Time 1, Temporizador GERAL ENDEREÇÁVEIS POR
C/T e contador. BYTES
Este bit seleciona a função de con- 30
tador ou temporizador. Se o bit T/C1 for TH0 Time High 0 (8C) e TL0 Time 2F 7F 7E 7D 7C 7B 7A 79 78
0, a função é de temporizador e o sinal Low 0 (8A) 2E 77 76 75 74 73 72 71 70
será interno. Se o bit T/C1 for 1, a fun- São registradores de 8 bits que em 2D 6F 6E 6D 6C 6B 6A 69 68
ção será de contador e o sinal será ex- conjunto com registradores de 16 bits 2C 67 66 65 64 63 62 61 60
terno. são chamados de Time 0: Temporizador 2B 5F 5E 5D 5C 5B 5A 59 58
e contador. 2A 57 56 55 54 53 52 51 50
M1.1 e M0.1 29 4F 4E 4D 4C 4B 4A 49 48
Estes dois bits servem para deter- PCON Power Control ( 87 ) 28 47 46 45 44 43 42 41 40
Esse registrador é usado para alte- 27 3F 3E 3D 3C 3B 3A 39 38
minar em que modo o C/T1 irá traba-
lhar, como segue a tabela a baixo. rar modos de funcionamento do 26 37 36 35 34 33 32 31 30
microcontrolador com relação ao canal 25 2F 2E 2D 2C 2B 2A 21 20
serial e consumo de potência. 24 27 26 25 24 23 22 21 20
M1.1 M0.1 Modo Operação
0 0 0 C/T 1 de 8 bits 23 1F 1E 1D 1C 1B 1A 19 18
com clock /32 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 22 17 16 15 14 13 12 11 10
21 0F 0E 0D 0C 0B 0A 09 08
0 1 1 C/T1 de 16bits SMOD * * * GF1 GF2 PD IDL
1 0 2 C/T1 de 8 bits com * = bit sem função 20 07 06 05 04 03 02 01 00
recarga automática
1 1 3 C/T1 de 8 bits. Dois SMOD Do endereço 00H ao endereço 1FH
contadores de 8 bits Dobra a relação de divisão de temos conjuntos de registradores divi-
frequência na serial. didos em 4 bancos, sendo que cada
Gate banco com 8 registradores. Esses regis-
Este bit tem por função escolher GF1 tradores têm nomes que vão de R0 a
como o T/C0 será habilitado. Se for 0 Bit de uso geral. R7 ; os registradores de cada banco têm
(função temporizador), o T/C0 estará os mesmos nomes, só mudando o en-
habilitado iniciando tal contagem quan- FG0 dereço. Os bancos são acessados por
do o bit TR0(no registrador TCON) for 1. Bit de uso geral. duas flags no registrador PSW, como é
Se o GATE for 1 (função contador) o T/ mostrado na tabela da próxima página.
C0 estará habilitado quando TR0 e INT0 PD Qualquer registrador de qualquer
estiverem em 1 simultaneamente . Bit de Power-Down: modo especial banco pode ser acessado pelo endere-
de trabalho do microcontrolador da sé- ço imediato ou através do nome (R0 ,
C/T rie CMOS, em que o microcontrolador R1 , R2 , R3 , R4 , R5 , R6 e R7 ), basta
Este bit seleciona a função de con- “congela” suas atividades. para isso ter selecionado o banco cor-
tador ou temporizador. Se o bit T/C0 for reto. Obs.: o ponteiro de pilha está apon-
0, a função é de temporizador e o sinal IDL tado para o registrador do endereço 07H
será interno. Se o bit T/C0 for 1, a fun- Bit que ativa o modo “idle”, modo (R7 do banco 0) sempre que se liga o
ção será de contador e o sinal será ex- especial de trabalho do microcontrola- microcontrolador, mas poderá ser mu-
terno dor da série CMOS em que o microcon- dado para outro endereço da RAM pelo
M1.0 e M0.0 trolador “congela” suas atividades. programador, se for necessário.

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


Endereço Nome dos Nome dos Bits no Mascaramento terrompe a outra que já esteja sendo
absoluto Registradores Conjuntos PSW
É a forma de se evitar que aconte- executada, dependendo da prioridade
çam certas interrupções, esse de cada uma . Vamos dar principal aten-
1F R7 processoé feito geralmente por software. ção ao chip 8051. Os outros da família
1E R6 Existem sistemas que não possuem o podem ter detalhes de diferença na
1D R5 mascaramento , o que não possibilita quantidade de interrupções, mas o bá-
1C R4 BANCO RS1 RS0
que se desabilite as interrupções via sico é dado pelo 8051. As interrupções
software . do microcontrolador 8051 são as seguin-
1B R3 3 1 1 tes:
1A R2 Vetorada e não Vetorada
19 R1 As interrupções vetoradas são aque- Interrupção externa INT0 (endere-
18 R0
las que possuem um vetor de interrup- ço B2h): É um pino físico de interrup-
ção (endereço de início de interrupção) ção que tem que ser habilitado (e tam-
17 R7 fixo e que não pode ser mudado pelo bém determinada sua prioridade de atu-
16 R6 programador. As não vetoradas são ação) via software, conforme veremos
15 R5 aquelas em que o programador pode de- futuramente.
14 R4 BANCO RS1 RS0
finir o endereço inicial de interrupção.
Interrupção externa INT1 (endere-
13 R3 2 1 0 Tipos de sinais ço B3h): É outro pino físico de interrup-
12 R2 Existem três tipos de sinais lógicos, ção semelhante ao INT0.
11 R1 que um sistema pode reconhecer: OBS.: As interrupções INT0 e INT1
10 R0
· Por nível , alto ou baixo são pinos do Port P3, exatamente os pi-
· Por borda , de subida ou de descida nos P3.2 e P3.3, endereços B2h e B3h,
0F R7 · Por borda , de subida ou de descida e respectivamente, que, se utilizados para
0E R6 um nível correspondente. tal, diminuem o tamanho do Port P3 para
0D R5 outras aplicações.
0C R4 BANCO RS1 RS0
Tempo para atendimento
O reconhecimento da interrupção Interrupção interna gerada pelo
0B R3 1 0 1 demora um certo tempo para que se- TIMER/COUNTER 0: É uma ação de
0A R2 jam feitas as alterações nos registrado- interrupção interna gerada pelo TIMER
09 R1 res internos e efetuado o desvio de en- _0, que é um periférico interno ao
08 R0
dereço, dependendo do tipo de instru- microprocessador.
ção que esteja sendo executada e em
07 R7 que ponto do clock esta instrução está. Interrupção interna gerada pelo
06 R6 TIMER/COUNTER 1: É uma ação de
05 R5 interrupção interna gerada pelo
04 R4 BANCO RS1 RS0
INTERRUPÇÕES NA FAMÍLIA 8051 TIMER_1, que é o segundo periférico
No 8051 temos três maneiras de interno ao microprocessador.
03 R3 0 0 0 solicitar as interrupções: por software
02 R2 (instrução), por um periférico externo Interrupção pela Serial: É uma
01 R1 ou pela solicitação de uma interrupção ação de interrupção interna gerada pelo
00 R0
por periférico interno(timer / counter , periférico SERIAL.
porta serial etc.). Existem 5 fontes de Observação: Estes endereços são
interrupções com seus endereços defi- relativos à ROM/EPROM do microcon-
INTERRUPÇÃO nidos e elas são as mascaráveis INT0 , trolador. Logo, se utilizarmos estas in-
A interrupção é uma das mais im- INT1, TIMER 0, TIME 1 e SERIAL. Cada terrupções, não se poderá gravar um
portantes ferramentas nos sistemas de interrupção pode ser individualmente software em cima destes endereços das
controle de um microcontrolador , pois habilitada ou desabilitada, e também referidas interrupções, senão o sistema
é o processo pelo qual se interrompe a podem ser habilitadas ou desabilitadas se perde! Observe que listamos o pino
execução de um programa que está em todas de uma só vez, como mostra a de “Reset – RST “ como sendo de inter-
andamento para uma rotina que trata o tabela abaixo (obs.: em outros chips da rupção, pois ele, na verdade, é uma in-
que o programador faz de acordo com família 8051 pode-se ter diferença na terrupção não vetorada com o único pro-
a necessidade de um evento externo ou quantidade de interrupções. O básico é pósito de retornar o software ao seu
interno. A vantagem da interrupção está dado pelo 8051). ponto inicial.
na simplicidade do hardware e do
software, pois o sistema não precisa fi-
car monitorando o funcionamento de ENDEREÇO DE DESVIO DE TEMPORIZADORES / CONTADORES
certos periféricos. Deve-se, antes de (TIMER 0 e TIMER 1)
INTERRUPÇÃO
mais nada, conhecer alguns conceitos O 8051 tem dois registradores de 16
sobre propriedades das interrupções. As interrupções no 8051 são
bits para timer / counter, timer 0 e timer
“nesting”, ou seja, uma interrupção in-

Prioridade Nível de Endereço para


Quando as interrupções estão habi- prioridade Fonte Tipo Pino ou Bit atendimento
litadas (mais de uma interrupção), para RESET NÍVEL 9 0000
atendê-las deve ter uma ordem de aten- 1º INT0 NÍVEL ou BORDA P3.2 0003
dimento, impondo qual delas tem que 2º TIMER0 INTERNO/EXTERNO SOFT / P3.4 000B
ser atendida primeiro, no caso de duas 3º INT1 NÍVEL ou BORDA P3.3 0013
interrupções chegarem simultaneamen- 4º TIMER1 INTERNO/EXTERNO SOFT / P3.5 001B
te. 5º SERIAL RXD DADOS P3.0 0023

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


1. Todos podem ser configurados para
operar como timer ou counter (tempori- Figura 8
zador ou contador )
Na configuração timer, o registrador
é incrementado todo ciclo de máquina,
desde que o ciclo de máquina consista
em 12 períodos do oscilador, proporção
de contagem de 1/12 da freqüência do
oscilador.
Na função counter (contador), o re-
gistrador é incrementado em resposta
à transição de 1 para 0 na entrada ex-
terna correspondente T0 ou T1. Nesta
função a entrada é amostrada em todo
ciclo de máquina, quando uma
amostragem tem um nível 1 em um ci-
clo e um nível 0 no próximo ciclo , o con-
tador é incrementado.
Um novo valor aparecerá no regis-
trador no ciclo seguinte , aquele em que
a transição foi detectada . Se for neces-
sário, por exemplo, dois ciclos para de- Figura 9
tectar uma transição, a máxima razão
de contagem é de 1 / 24 da freqüência
do oscilador , não existindo restrições
sobre o duty cycle do sinal de entrada.
Através do registrador TMOD podemos
configurar os T/C’s em 4 modos que são:

MODO 0
Contador ou temporizador de 8 bits
com divisão de até 32 vezes. Os regis-
tradores TH0 ou TH1 recebem o valor
de contagem e pode ser até FFh com o
valor escrito pelo software, que também
pode ser lido a qualquer momento; se
ocorrer um estouro (overflow) o T/C em
questão gera um pedido de interrupção software , temos uma grande flexibilida- TR1 e TF1
que pode ou não ser aceito pela CPU de para trabalhar com este modo. Ob- Neste modo. T/C 1 pára sua opera-
interna do microcontrolador. Ainda nes- serve a figura 10. ção e fica inerte, sem receber pulsos de
se modo os registradores TL0 ou TL1 contagem. Para o T/C 0 temos dois sis-
com os bits 0, 1, 2, 3 e 4 servem para MODO 3 temas de 8 bits, um em THO e outro em
determinar em quanto será dividido o Neste modo o T/C1 pára sua opera- TL0. O T/C de 8 bits TL0 será controla-
sinal de contagem (interno ou externo) ção sem receber pulsos de contagem, do pelos bits TR0 e TF0, e o T/C de 8
podendo ir até 32 pela combinação bi- e o T/C0 fica com dois sistemas de 8 bits THO será controlado pelos bits TR1
nária desses bits; os bits 5 a 7 destes bits, um em TH0 e outro em TL0. e TF1.
registradores deverão ser ignorados. A O T/C de 8 bits TL0 será controlado
figura 8 mostra o funcionamento. pelos os bits TR0 e TF0, enquanto que Para o caso de programarmos o T/C
o outro T/C de 8 bits será controlado pe- 0 para o modo 3, podemos programar
MODO 1 los bits TR1 e TF1. T/C 1 para qualquer um dos outros mo-
Neste modo temos um T/C de 16
bits e, desta forma, usamos os pares de Figura 10
registradores TH0/TL0 ou TH1/TL0 para
efetuar a contagem. Quando um estou-
ro acontecer ou seja quando o par de
registradores passa de FFFFh para
0000h, é setado o bit de overflow ( TF0
ou Tf1) forçando uma interrupção, se
esta tiver sido previamente programada
via software. Ver figura 9.

MODO 2
Nos registradores TL0 ou TL1 tere-
mos o valor de onde começará a conta-
gem, e nos registradores TH0 ou TH1
teremos o valor de recarga, os quais se-
rão recarregados em TL0 ou TL1 sem-
pre que um estouro acontecer nos mes-
mos. Como cada registrador pode ser
alterado a qualquer momento pelo

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


cação (normas padronizadas para trans-
Figura 11
missão e recepção de dados), tais como
o RS-485 e o RS-232, sendo este últi-
mo o mais utilizado no mundo atualmen-
te, pois define todos os padrões (elétri-
cos, mecânicos e de transmissão) a se-
rem empregados numa comunicação de
dados. Na comunicação serial opera-se
com três sistemas de interligação digi-
tais: simplex, half–duplex e full-duplex.
Figura 12.
No modo simplex, temos apenas um
elemento que transmite e um outro que
recebe os dados, este modo é muito uti-
lizado em impressoras e terminais de
dados de bancos.
No modo half-duplex, também temos
um elemento que transmite e um outro
que recebe, só que não é possível trans-
mitir e receber as informações ao mes-
dos restantes, mas este não poderá bit em bit, um por vez na sequência. Este mo tempo, de modo simultâneo, como
gerar pedido de interrupção, pois o bit é um modo de comunicação muito re- nos walkie-talkies, por exemplo.
de requisição de interrupção do T/C 1 comendado para transmissões de da- No modo full-duplex ou apenas
estará sendo usado por T/C 0, mas mes- dos a longa distância. A comunicação duplex, é possível transmitir e receber
mo assim o overflow neste contador serial usa níveis de tensão de 0 e a 5 V dados simultaneamente. O microcontro-
poderá ser utilizado para chavear o ge- TTL e, para facilitar a transmissão de lador 8051 tem uma interface serial in-
rador de taxa de transmissão do canal dados entre equipamentos diferentes, terna que utiliza exatamente deste modo
serial. Neste modo, o T/C 0 será habili- utiliza-se do código ASCII (American de interligação de sistema digital.
tado pelo bit de controle do T/C 1, mais Standard Code for Interchange of
especificamente TR1, no registro TCON Information), que representa cada
e, ao ocorrer o overflow de TH0, quem caracter como uma palavra binária de 8
será setado é o bit TF1 e não o TF0. bits. Na comunicação serial em níveis
Veja a figura 11. de tensão pode-se ter problemas rela-
Se configurarmos o T/C 1 para o cionados à distância (como ruídos, por
modo 3, o registro TL0 poderá ser usa- exemplo). Daí o uso de um outro padrão
do como T/C de 8 bits, mas será contro- de tensões (no caso do sistema RS-232,
lado pelos bits GATE, C/T, TR0 e TF0. utiliza-se de tensões de 30 V), facilitan- Figura 12
Neste modo o overflow em TH0 aciona- do a transmissão de dados por uma
rá o flag de requisição de interrupção grande distância com poucas interferên-
referente ao T/C 1, e o overflow de TL0 cias). INTERFACE SERIAL NO 8051
acionará o flag de requisição de inter- A comunicação serial pode ser No 8051 a interface serial já é imple-
rupção referente ao TC0. síncrona ou assíncrona: na primeira, mentada no próprio chip, e ela é do tipo
além dos bits de dados tem-se também Full-Duplex ou, conforme usaremos no
os denominados bits de sincronismo decorrer do texto duplex onde, neste
COMUNICAÇÃO DE DADOS (bits que ajustam o clock interno do re- caso, dados podem estar sendo recebi-
Para se transmitir dados entre equi- ceptor para que este tenha compatibili- dos e enviados simultaneamente no
pamentos são necessários dispositivos dade suficiente para receber os dados hardware sem necessitar a intervenção
de comunicação de dados. do transmissor). Além dos bits de direta do programa (a CPU é sinalizada
A transmissão de dados pode ser sincronismo, existem os chamados bits via interrupção, quando alguma atitude
classificada pela sua forma (paralela ou de parada (bits usados para informar ao do programa for precisa: recepção ou
serial), pela forma do sinal transmitido receptor o fim dos bits de dados). Es- envio de um byte).
(analógico ou digital) e pelo sentido do ses bits de parada permitem que o re- Isto significa que o sistema pode re-
sinal na transmissão (simplex, half- ceptor confirme se recebeu ou não uma ceber e transmitir informações simulta-
duplex e duplex). Para uma transmissão informação corretamente. neamente, sendo que para tal temos
de dados a longa distância, para uma No caso da comunicação registros especialmente destinados para
maior fidelidade é necessário que se assíncrona, é transmitido um caracter este fim. Este registro chama-se SBUF
conver tam os sinais digitais em por vez, bit a bit; onde existe um bit para (Serial buffer) e uma escrita no mesmo
analógicos ao transmitir, e ao receber indicar o início da transmissão, chama- implica em transmissão automática do
converter os sinais analógicos em digi- do de start bit, e outro para indicar o fim dado escrito: assim como um certo dado
tais através de aparelhos chamados da transmissão, o chamado stop bit. O que chegue no pino de recepção impli-
modems. A denominada comunicação start bit é reconhecido como uma tran- cará na automática operação de recep-
de dados pode ser feita de duas formas: sição do nível alto presente na linha para ção por parte do sistema, independen-
serial e paralela. Neste trabalho será nível baixo, enquanto que o stop bit é temente do controle do usuário (desde
dada ênfase à comunicação serial, que reconhecido pela transição do nível bai- que o canal serial esteja habilitado).
é mais utilizada. xo para o nível alto. Se o último bit refe- Pode parecer, à primeira vista, que
rente ao dado for em nível alto, o siste- temos um único registro físico para efe-
ma aguarda um novo start bit, para ini- tuar este trabalho. Isto não é verdade.
COMUNICAÇÃO SERIAL ciar a recepção de um novo caracter. Temos, na realidade, dois registros com
A comunicação serial é feita com a Para a comunicação serial existem o mesmo nome SBUF, sendo que um é
transmissão de bytes ou caracteres de vários tipos de protocolos de comuni- para recepção e outro para transmissão.

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


O reconhecimento é feito pelo sistema MODO 3 DE OPERAÇÃO DO CANAL COMUNICAÇÃO ENTRE VÁRIOS 8051
através das instruções que o utilizam. SERIAL
Se for instrução de escrita, o registro de Este modo é idêntico ao modo 2, Os modos 2 e 3 nos permite interli-
transmissão será alterado, e se for ins- exceto pela taxa de transmissão que é gar vários 8051, sendo um deles o mes-
trução de leitura, o dado será captado variável. tre e os demais escravos. Esta
no registro de recepção. interligação pode ser vista na Figura
A transmissão é automática ao es- abaixo 15.
crevermos um dado no registro SBUF, GERAÇÃO DAS TAXAS Nestes modos, os bytes de dados
logo, se não desejarmos usar transmis- DE SINALIZAÇÃO são compostos de:
são serial, basta não endereçarmos este Neste item veremos como gerar ta- - um start bit.
registro como destino. É claro que para xas de sinalização variáveis, nos modos - 8 bits de dados.
fazermos uma transmissão é necessá- que as permitam. Para isto será neces- - Um nono bit que pode ser 0 ou 1 e que
rio antes configurar parâmetros sário estudarmos o registro de função vai para o bit RB8.
caracterizadores da comunicação serial: especial PCON. - Um stop bit.
modo de transmissão, velocidade de O registrador PCON contém bits
transmissão, quantidade de bits de da- para controle dos modos de potência no Na recepção, se SM2 = 1 e RB8 = 1,
dos, quantidade de stop bits e tipo de chip (para que em caso de falta de ener- a interrupção do canal serial será aten-
paridade adotada. gia elétrica, não percamos memória), dida. Assim, podemos criar condições
flags de uso geral é um bit em particu- para que um 8051 mestre possa enviar
lar, chamado SMOD, que controla a di- dados serialmente para vários 8051 ‘es-
MODO 1 DE OPERAÇÃO DO CANAL visão da taxa de freqüência do canal cravos’, da seguinte forma:
SERIAL serial. Como este bit não é endereçável
Neste modo de operação e nos pró- devemos carregar o bit SMOD indireta- 1 – No início do trabalho, todos os
ximos (assíncronos), o pino de recep- mente e se não utilizarmos as funções ‘escravos’ estarão com SM2 = 1 (pron-
ção é o RXD (pino 10, porta P3.0) e o dos outros bits, poderemos deixá-lo em tos para receber dados, cujo nono bit
de transmissão é o TXD (pino 11, porta 0. Nos modos 1e 3 a taxa de transmis- seja 1).
P3.1). são é fornecida pelo Timer / Counter, 2 – Quando o 8051 mestre desejar
Neste modo são transmitidos/rece- onde cada ordem de transmissão é ge- enviar dados para alguns dos ‘escravos’.
bidos 10 bits em cada pacote, sendo um rada ao ocorrer o overflow deste conta- 3 – Escreverá um em seu bit TB8.
start bit (nível 0) seguido de 8 bits de dor. Para isso, devemos desabilitar a 4 – Enviará serialmente o endereço
dados e o stop bit (nível 1) (figura 13). A interrupção deste Timer/Counter. do escravo desejado (8 bits).
taxa de transmissão é variável e sua ge- O Timer/counter 1 pode ser configu- 5 – Como teremos todos os bits dos
ração será vista em um item a seguir. rado para temporizador ou contador em ‘escravos’ com RB8 em 1, então, todos
Neste modo, na recepção o stop bit qualquer um dos três modos de opera- serão interrompidos para poder verificar
vai para o bit RB8 no SCON. ção. O mais comum é usá-lo no modo se é seu endereço o enviado.
de recarga automática (timer de 8 bits) 6 – O escravo que for selecionado
e neste caso temos a seguinte fórmula zerará seu bit SM2 e estará preparado
simplificada. para receber os dados, os quais deve-
A formula é: (todos os valores em rão ter agora o nono bit (RB8) em 0. Os
decimal depois transformar o resultado demais ‘escravos’ permanecerão com
em Hex) SM2 em 1 e, desta forma, não serão

Figura 13 Clock Clock


Baud-Rate= ou TH1 = 256 – ( )
N (256 – TH1) N . Baud-Rate
MODO 2 DE OPERAÇÃO DO CANAL N = 384, se SMOD for = 1.
SERIAL N = 192, se SMOD for = 0.
Neste modo, em cada pacote são
transmitidos/recebidos 11 bits, sendo
um start bit (nível 0) seguido de 8 bits
de dados, um nono bit (de livre escolha
do usuário, 0 ou 1) e um stop bit (nível
1)(figura 14). A taxa de transmissão Figura 15
pode ser escolhida para 1/32 ou 1/64
da freqüência de clock do sistema.

Opções de Baud-Rate no modo 2


Clock Baud-Rate Baud-Rate Erro Bit Carga do
utilizado desejado obtido % SMOD Time 1
Figura 14 11,059 MHz 1.200 1.200 0 0 E8h
No caso da transmissão, o nono bit 11,059 MHz 2.400 2.400 0 0 F4h
pode ser escolhido entre 0 ou 1, ape- 11,059 MHz 9.600 9.600 0 0 FDh
nas escrevendo-se o valor desejado no 11,059 MHz 19.200 19.200 0 1 FDh
bit TB8 do registro SCON. Assim como 12,000 MHz 1.200 1.202 0.16 0 E6h
no modo 1, o nono bit recebido vai para 12,000 MHz 2.400 2.404 0.16 1 E6h
o bit RB8 no SCON e o stop bit será 12,000 MHz 9.600 8.923 7 1 F9h
ignorado. 12,000 MHz 19.200 20.833 8.5 1 FDh

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


mais interrompidos, pois os dados têm Correspondência entre pino e sinais
RB8 = 0 e poderão continuar suas ativi-
dades normalmente. PINO SINAL FUNÇÃO
7 – Quando o mestre desejar nova- 1 PA3 Bit 3 da porta A
mente enviar um endereço, bastará en- 2 PA2 Bit 2 da porta A
viar novamente o nono bit em 1, para
habilitara interrupção em todos os ‘es- 3 PA1 Bit 1 da porta A
cravos’. 4 PA0 Bit 0 da porta A
5 RD Sinal ativo em zero que habilita o envio de dados através da
interface para o microcontrolador através do barramento de dados
EXPANSÃO DE I / O
6 CS Sinal ativo em zero que habilita o funcionamento da interface
8255 7 GND Referência 0V
A PPI 8255 é uma interface de fina- 8 A1 A1 e A0 são conectados no barramento de endereço do sistema ,
lidade geral programável, compatível 9 A0 usado para selecionar uma das três portas ou registrador da
com o 8051, que apresenta as seguin-
tes características : palavra de controle do 8255
10 PC7 Bit 7 da porta C
* Alimentação = 5V 11 PC6 Bit 6 da porta C
* três por tas de oito bits cada , 12 PC5 Bit 5 da porta C
programáveis por software
* programação feita utilizando-se ins- 13 PC4 Bit 4 da porta C
truções de entrada e saída (IN e OUT) 14 PC0 Bit 0 da porta C
e uma palavra de controle 15 PC1 Bit 1 da porta C
*operação realizada em três modos dis- 16 PC2 Bit 2 da porta C
tintos: modo 0, modo 1, modo 2.
17 PC3 Bit 3 da porta C
Pinagem 18 PB0 Bit 0 da porta B
Os pinos da 8255 têm a seguinte 19 PB1 Bit 1 da porta B
configuração mostrados na figura 16, 20 PB2 Bit 2 da porta B
enquanto a figura 17 mostra o
endereçamento. 21 PB3 Bit 3 da porta B
22 PB4 Bit 4 da porta B
23 PB5 Bit 5 da porta B
24 PB6 Bit 6 da porta B
25 PB7 Bit 7 da porta B
26 VCC Tensão de alimentação
27 D7 Bit 7 de dados
28 D6 Bit 6 de dados
29 D5 Bit 5 de dados
30 D4 Bit 4 de dados
31 D3 Bit 3 de dados
32 D2 Bit 2 de dados
33 D1 Bit 1 de dados
34 D0 Bit 0 de dados
35 RESET Sinal vindo do sistema para limpar os registradores ativos em nível 1
36 WR Sinal de controle, ativo em nível zero que habilita a operação
de escrita
37 PA7 Bit 7 da porta A
38 PA6 Bit 6 da porta A
Figura 16 39 PA5 Bit 5 da porta A
40 PA4 Bit 4 da porta A
SOFTWARE
O software, também conhecido de alternativas e opções para atingir os uma certa tarefa”. No microprocessador
como programa, é um conjunto de ins- mesmos resultados. essas tarefas podem ser :
truções colocadas em um seqüência ló- Para se programar um sistema é - ler ou escrever numa posição de
gica, pela qual o processador poderá necessário que se conheça a parte do memória;
tomar algumas “decisões” já definidas hardware, ou seja , a arquitetura inter- - fazer uma operação aritmética e ló-
pelo programador. na do microcontrolador a ser programa- gica;
A programação de um sistema é a do, seus periféricos, o set de instrução, - fazer qualquer outra manipulação
construção correta dessa seqüência de etc. de dados, etc.
instruções que ele deve realizar para A instrução para um microproces-
conduzir à solução de um problema. INSTRUÇÃO sador pode ser representada por lingua-
Essa seqüência é variável, pois o pro- A instrução pode ser definida como gem de máquina, códigos em hexade-
gramador possui uma ampla variedade sendo uma “ordem dada para executar cimal ou binário.

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


Endereçamento A1 A0 Porta selecionada
O endereçamento é feito por meio da combina- 0 0 Porta A
0 1 Porta B
ção dos bits de endereço A0 e A1. 1 0 Porta C
1 1 Unidade de controle
Fig. 17 - Endereçamento.

Outra maneira de representação Cada fabricante de microcontrolador Label Código de Operando Comentário
pode ser feita através dos mnemônicos define os mnemônicos para os seus pro- Operação ou Endereço
(códigos que representam uma dutos .
sequência de palavras) de um progra- Algumas linguagens assembly utili-
ma fonte, que serão transformados em zam o mesmo código (instrução de má- LABEL
linguagem de máquina (ou linguagem quina) para diversas CPU´s (Unidade A principal característica da lingua-
objeto) por um programa compilador Central de Processamento) porém an- gem ASSEMBLY é o uso de label (lê-se
(tradutor). tes de iniciar a tradução deve-se infor- ‘lêibol).
mar ao tradutor para qual CPU deve ser O label torna a programação em
feita a tradução. ASSEMBLY mais rápida e segura, por-
LINGUAGEM ASSEMBLY A linguagem assembly é classifica- que ao invés de lidar com um endereço
A linguagem ASSEMBLY foi a primei- da de baixo nível , porque na elabora- absoluto, lida-se com um conjunto de
ra linguagem que surgiu nesta área de ção do programa há a necessidade de caracteres (label). Este artifício é útil
computação, sendo formada por elaborar rotinas para o completo con- para se seguir o fluxo de dados, e tam-
mnemônicos. trole da CPU. bém quando se acrescenta ou se retira
Cada mnemônico possui o um códi- alguma instrução, pois o novo endere-
go correspondente em hexadecimal, e ço do label é automaticamente corrigi-
cada ‘família’ de microcontrolador pos- ASSEMBLER: do pelo programa compilador
sui um conjunto de mnemônicos diferen- O tradutor assembler é um progra- Assembler.
te. Esta linguagem tem como finalidade ma de computador que produz um có- A única restrição é que o primeiro
facilitar o manuseio das instruções para digo binário correspondente a cada caracter do label deve ser sempre uma
desenvolver programas, desde uma sim- mnemônico. Os programas de tradução letra, isto é, ele não pode começar com
ples rotina até um sofisticado programa avisam quando encontram algum erro um número.
para controle industrial. no programa fonte (programa elabora-
Todo microcontrolador precisa de do para a CPU). CÓDIGO DE OPERAÇÃO
um lista de instruções para ser seguida O código de operação é simples-
passo-a-passo, lista essa chamada de mente a instrução em si. No código de
programa, que diz exatamente o que o ESTRUTURA DA LINGUAGEM operação aparecerá apenas o conjunto
microcontrolador deve fazer. ASSEMBLY de caracteres, que representará o tipo
O microcontrolador só faz duas coi- A linguagem ASSEMBLY é dividida de instrução, tal como soma, carrega-
sas: lê e processa números binários. em grupos , e nessa ordem: mento, teste, entre outras.

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


OPERANDO OU ENDEREÇO serir um dado no meio do programa. ADD A, XXH = Grava no acu-
Este grupo é dividido em duas par- Exemplos: mulador o resultado da soma deste com
tes. A primeira parte da informação é DB “F” o conteúdo de memória do endereço
chamada de ‘operando’, sendo a de- DB “FRASES” XXH
signação dada para mencionar o fluxo
de dados. A segunda é chamada de ‘en- ORG (endereço) ENDEREÇAMENTO MODO INDIRETO
dereço’ e é utilizada pelas instruções de Esta pseudo-instrução é usada para Neste modo o endereço alvo é obti-
“CALL” e “JMP”. definir uma posição de memória de onde do indiretamente através dos registra-
o programa deve começar , ou seja, dores R0 e R1.
COMENTÁRIO carrega o PC (Program Counter) com o Exemplos:
Este grupo se destina ao comentá- endereço definido MOV R1, #44H = Grava no regis-
rio. É considerado muito importante num Exemplo: trador R1 o valor 44 H
programa. ORG 08H
Os comentários facilitam a visuali- MOV @R1, #77 = Grava o valor
zação do fluxo do programa. O comen- EQU 77 no endereço 44H, que foi obtido in-
tário deve, na maioria das vezes, dizer Esta pseudo-instrução é usada para diretamente
para que se destina a instrução, e não definir um label , (NOME EQU NN)
simplesmente descrevê-la. Exemplos: ANL A, @R1 = Grava o resulta-
AUXI EQU 82H do da operação AND entre o acumula-
DELIMITADORES dor e o que estiver no endereço 44H.
Os delimitadores são usados para END Esse resultado é gravado no acumula-
separação dos grupos : label, código de Esta pseudo-instrução é usada para dor.
operação, operando ou endereço e co- indicar o fim de um programa.
mentários.
Um espaço ou um conjunto de es- $ MODO REGISTRADOR
paços em branco serve para separar Esta pseudo-instrução é usada para Na utilização deste modo há a inclu-
cada grupo. representar o endereço onde se locali- são do nome do registrador no opcode,
Dois pontos delimitam o fim de um za o ‘program counter’, geralmente usa- ocasionando a economia de um byte de
label. Em uma ‘pseudo-instrução’ ( ins- do em JUMP relativos. endereço. Os bits RS1 e RS0 do regis-
trução que não pertence ao conjunto de Exemplo: trador PSW selecionarão o banco de
instruções da CPU) não há necessida- JMP $ registradores (0, 1, 2 e 3) que irão afe-
de de dois pontos depois de um label. tar o registrador.
A vírgula separa o operando de en- Exemplos:
dereço e o ponto-e-vírgula indica o iní- CONJUNTO DE INSTRUÇÕES MOV R4, A = Grava o conteúdo
cio de comentário. DO 8051 do acumulador no registrador R4
No conjunto de instruções do 8051,
PSEUDO-INSTRUÇÃO elas podem ocupar de um a três bytes MOV A, Rn = Grava o conteúdo do
Pseudo-Instrução é um termo usa- na posição de memória de programa e registrador Rn no acumulador
do em linguagem ASSEMBLY, também gastar de um a quatro ciclos de máqui-
chamado de “Instrução Especial”. na para serem executadas; esta varia- MOV R3, #44H = Grava o valor
Pseudo-Instrução pode ser empre- ção no tempo de execução existe por- hexadecimal de 44 no registrador R3
gada na definição de label, definição de que as formas de endereçamento são
nome de programa, definição de diferentes e têm instruções que usam DEC R2 = Decrementa o conteúdo
‘string’(palavra) , definição do endereço mais de um ciclo de busca. Cada ciclo do registrador R2
inicial do programa, reserva de área de de máquina gasta 12 períodos de clock,
memória e definição de byte. com um cristal de 12 MHz e cada ciclo XRL A, Rn = Grava o resultado da
Sempre que se define um dado de máquina tem o tempo de 1µs. operação XOR entre o acumulador e o
hexadecimal em um programa que co- registrador Rn. Este resultado é grava-
meça com letra ( A, B, C, D,E, ou F ) do no acumulador
deve-se colocar um zero na frente; os ENDEREÇAMENTOS:
números em hexadecimal deverão ter XCH A, R6 = Alterna os dados
a letra “H” no final; os números em bi- ENDEREÇAMENTO MODO DIRETO entre o registrador R6 e o acumulador
nário deverão ter a letra “B”; os núme- Neste modo são as instruções que
ros em octal deverão ter as letras “O” ou utilizam diretamente os primeiros 128 CJNE R5, #33.rel = Faz a compa-
“Q” e os números em decimal deverão endereços das RAM internas , registra- ração do conteúdo do registrador R5
ter a letra “D” ou somente o próprio nú- dores de I/O ,status e controle, logo após com o valor 33. Se estes forem diferen-
mero. o seu ‘opcode’ (código da instrução). tes, daí o fluxo de execução é desviado
Abaixo estão relacionadas algumas para o endereço indicado por ‘rel’.
pseudo-instruções importantes: Exemplos:

TITTLE (nome do programa) MOV A, XXH = Move para o acu- MODO ESPECÍFICO
Esta pseudo-instrução serve para mulador o conteúdo do endereço XXH A REGISTRADOR
nomear um programa e, quando este Aqui utiliza-se de instruções de ape-
programa for impresso, esta pseudo-ins- MOV XXH, A = Move para o nas um byte, uma vez que o registrador
trução aparecerá em todas as folhas. endereço XXH, o conteúdo do acumu- (no caso o do exemplo) já estará incluí-
lador do no opcode.
DB “ X” Exemplos:
Esta pseudo-instrução é usada para MOV XXH,YYH = Move para o DA A = Converte o conteúdo do
definir um byte para quando se quer endereço XXH, o conteúdo do endere- acumulador em código BCD
definir um tabela de dados ou para in- ço YYH

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


RL A = Rotaciona para a esquer- MOVX @DPTR, A = Grava o valor ADDC A, direto
da os bits do acumulador do acumulador no endereço DPTR, na Soma o conteúdo da posição de memória
memória RAM externa. com o ACC, e com flag carry, o resultado é
MUL AB = Multiplica o conteúdo gravado no ACC.
do acumulador pelo conteúdo do regis- MOVX A, @Ri = Grava o conteú- ADDC A, @Ri
trador B, gravando a parte mais signifi- do do endereço X: (Ri + P2), no acumu- Soma o conteúdo da posição de memória
cativa do resultado em B e a menos sig- lador. indicado por Ri (R1 ou R0) com o ACC, e
nificativa no acumulador com a flag carry, o resultado é gravado no
ACC.
CLR C = Escreve no flag carry o TIPOS DE INSTRUÇÕES ADDC A, # dado
dígito “0” Os microcontroladores da família Soma o dado ao ACC, e a flag carry, o re-
8051 têm vários tipos diferentes de ins- sultado é gravado no ACC.
INC DPTR = Incrementa o con- truções, sendo cada uma representada SUBB A, Rn
teúdo do registrador de 16 bits. DPTR. por seu mnemônico e pelo código em Subtrai do ACC, o conteúdo de Rn (R0 à
hexadecimal. R7) e o ‘vem um’ (borrow), o resultado é
Estas instruções são mostradas a gravado no ACC.
MODO CONSTANTE IMEDIATO seguir: SUBB A, direto
Este modo permite que possa ope- As anotações seguintes são usadas Subtrai do ACC. o conteúdo da posição de
rar com dados diretamente na instrução. nas tabelas a seguir (modo de memória e o ‘vem um’ (borrow), o resultado
Exemplos: endereçamento). é gravado no ACC
Rn pode ser registradores SUBB A, @Ri
MOV B, #54 = Grava o valor 54 no de R0 a R7 Subtrai do ACC, o conteúdo da posição de
registrador B Ri indica registrador R0 ou R1 memória indicado por Ri (R1 ou R0) e o
@Ri endereçado pelo valor vem um (se existir) o resultado é gravado
MOV R3, #87H = Grava o valor de R0 ou R1 no ACC.
87 em hexadecimal no registrador R3 #Dado valor constante, numeral SUBB A, # dado
de 8 bits: #20H(hex), Subtrai do ACC, o dado e o ‘vem um’ (se
ORL A, #67 = Grava no acumula- #30(dec), #01010101B(bin) existir), o resultado é gravado no ACC.
dor o resultado de uma operação OR #Dado16 valor constante, numeral de INC A
entre o acumulador e o valor 67. 16 bits: #1FF2H(hex) Soma 1 ao ACC.
Direto um endereço de memória INC Rn
RAM interna (8 bits), Soma 1 ao conteúdo de Rn (R0 a R7).
MODO ENDEREÇAMENTO À MEMÓ- registradores de status e INC direto
RIA DE PROGRAMA controles, e portas Soma 1 ao conteúdo da posição de memó-
Este modo permite a utilização de End16 endereço de 16 bits para ria.
instruções que fazem somente a leitura ROM (usado por LCALL e INC @Ri
da memória de programa, sendo muito LJMP) Soma 1 ao conteúdo de memória indicado
utilizadas para a leitura de tabelas na End11 endereço de 11 bits para por Ri (R0 ou R1).
EPROM. O endereço denominado ‘alvo’ ROM (usado por DEC A
é formado pela soma do conteúdo do ACALL e AJMP) Subtrai 1 do ACC.
registrador de 16 bits DPTR (data rel endereço relativo DEC Rn
pointer) ou PC (program counter) com o ou utilização de label Subtrai 1 do conteúdo de Rn (R0 a R7).
conteúdo do acumulador. bit variável da RAM interna, DEC direto
Exemplos: bits de I/O , bits de status Subtrai 1 do conteúdo da posição de me-
e controle mória.
MOVC A, @A+DPTR = Grava o DEC @Ri
byte lido no endereço resultante da TABELAS Subtrai 1 do conteúdo da posição de me-
soma do acumulador com o registrador As tabelas a seguir mostram os mória indicado por Ri (R0 ou R1).
de 16 bits DTPR , no acumulador. mnemônicos e suas descrição. INC DPTR
Soma 1 ao registrador DPTR.
MOVC A, @A+PC = Grava o byte Tabela de Operações Aritméticas MUL AB
lido no endereço resultante da soma do Mnemônico Multiplica o conteúdo do ACC pelo conteú-
acumulador com o registrador de 16 bits Descrição do do registrador B. O resultado fica em B
PC , no acumulador. ADD A,Rn (MSB) e ACC (LSB)
Soma o conteúdo de Rn com ACC, o resul- DIV AB
tado da soma é gravado no ACC. Divide o conteúdo do ACC pelo conteúdo
MODO ENDEREÇAMENTO À MEMÓ- ADD A, direto do registrador B. O resultado fica em A e o
RIA DE DADOS EXTERNA Soma o conteúdo da posição de memória resto em B.
Este modo permite o acesso à me- com ACC, o resultado é gravado no ACC. DA A
mória RAM externa, pela instrução ADD A, @Ri Converte em BCD, o conteúdo do ACC.
MOVX. Acesso este feito através de pon- Soma o conteúdo da posição de memória
teiros de 16 bits (@ DPTR e @Ri), de indicado por Ri (R1 ou R0) com ACC, gra-
forma indireta. Na utilização do ponteiro vando o resultado no ACC. Tabela de Operações Lógicas
@Ri, os 8 bits menos significativos es- ADD A, # dado Mnemônico
tarão no registrador Ri (R0 ou R1) e os Soma o dado ao ACC. O resultado é grava- Descrição
8 bits restantes estarão na porta P2, for- do no ACC. ANL A, Rn
mando assim o endereço de 16 bits. ADDC A, Rn Grava no acumulador o resultado da ope-
Exemplos: Soma o conteúdo de Rn (R0 à R7) ao ACC, ração lógica AND entre o acumulador e
e com a flag carry, o resultado é gravado registrador Rn
no ACC.

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


ANL A, direto CLR A MOVC A,@A+DPTR
Grava no acumulador o resultado da ope- Zera o acumulador Carrega o acumulador com o conteúdo en-
ração lógica AND entre o acumulador e CPL A dereçado pelo acumulador mais o regis-
conteúdo do endereço “direto” Inverte todos os bits do acumulador trador DPTR
ANL A, @Ri RL A MOVC A, @A+PC
Grava no acumulador o resultado da ope- Rotaciona todos os bits do acumulador para Carrega o acumulador com o conteúdo en-
ração lógica AND entre o acumulador e o esquerda dereçado pelo acumulador mais o regis-
conteúdo endereçado pelo registrador Ri RLC A trador PC
ANL A, #dado Rotaciona todos os bits do acumulador para MOVX A, @Ri
Grava no acumulador o resultado da ope- esquerda junto com a flag carry Carrega o acumulador com o conteúdo da
ração lógica AND entre o acumulador e o RR A RAM externa endereçado pelo registrador
dado Rotaciona todos os bits do acumulador para Ri
ANL direto, A direita MOVX A, @DPTR
Grava no endereço “direto” o resultado da RRC Carrega o acumulador com o conteúdo da
operação lógica AND entre o endereço “di- Rotaciona todos os bits do acumulador para RAM externa endereçado pelo registrador
reto” e o acumulador direita junto com a flag carry DPTR
ANL direto,#dado SWAP A MOVX @Ri, A
Grava no endereço “direto” o resultado da Troca os nibbles do acumulador (equivale Carrega o registrador da RAM externa en-
operação lógica AND entre o endereço “di- a 4 instruções RL A) dereçado pelo registrador de 8 bits Ri , com
reto” e o dado o conteúdo do acumulador
ORL A, Rn Transferência de Dados MOVX @DPTR, A
Grava no acumulador o resultado da ope- Mnemônico Carrega o registrador da RAM externa en-
ração lógica OR entre o acumulador e re- Descrição dereçado pelo registrador de 16 bits DPTR,
gistrador Rn MOV A, Rn com o conteúdo do acumulador
ORL A, direto Carrega o acumulador com o conteúdo do PUSH direto
Grava no acumulador o resultado da ope- registrador Rn Incrementa o registrador SP e salva na pi-
ração lógica OR entre o acumulador e con- MOV A, direto lha o conteúdo do endereço “direto”
teúdo do endereço “direto” Carrega o acumulador com o conteúdo do POP direto
ORL A, @Ri endereço “direto” (endereços dos registra- Grava na memória o conteúdo da pilha e
Grava no acumulador o resultado da ope- dores internos) decrementa o registrador SP
ração lógica OR entre o MOV A, @Ri XCH A, Rn
acumulador e o conteúdo endereçado pelo Carrega o acumulador com o conteúdo en- Troca os dados do acumulador com o re-
registrador Ri dereçado pelo registrador Ri gistrador Rn
ORL A, #dado MOV A, #dado XCH A, direto
Grava no acumulador o resultado da ope- Carrega o acumulador com o dado Troca os dados do acumulador com o en-
ração lógica OR entre o acumulador e dado MOV Rn, A dereço “direto”
ORL direto, A Carrega o registrador Rn com o conteúdo XCH A, @Ri
Grava no endereço “direto” o resultado da do acumulador troca os dados do acumulador com o re-
operação lógica OR entre o endereço “di- MOV Rn, direto gistrador endereçado por Rn
reto” e o acumulador Carrega o registrador Rn com o conteúdo XCHD A, @Ri
ORL direto,#dado do endereço “direto” Troca os nibbles menos significativos do
Grava no endereço “direto” o resultado da MOV Rn, #dado acumulador com o registrador endereçado
operação lógica OR entre o endereço “di- Carrega o registrador Rn com o dado por Ri
reto” e o dado MOV direto, A
XRL A, Rn Carrega o endereço “direto” com o conteú- Variáveis Booleanas Bit
Grava no acumulador o resultado da ope- do do acumulador Mnemônico
ração lógica XOR entre o acumulador e MOV direto, Rn Descrição
registrador Rn Carrega o endereço “direto” com o conteú- CLR C - grava 0 no flag carry
XRL A, direto do do registrador Rn CLR Bit
Grava no acumulador o resultado da ope- MOV direto1,direto2 Grava 0 no bit endereçável (bit de pino ou
ração lógica XOR entre o acumulador e Carrega o endereço “direto1” com o con- bit de registradores)
conteúdo do endereço “direto” teúdo endereço2 “direto2” SETB C - grava 1 no flag carry
XRL A, @Ri MOV direto, @Ri SETB Bit
Grava no acumulador o resultado da ope- Carrega o endereço “direto” com o conteú- Grava 1 no bit endereçável (bit de pino ou
ração lógica XOR entre o do endereçado pelo registrador Ri bit de registradores)
acumulador e o conteúdo endereçado pelo MOV direto, #dado CPL C - Complementa o flag carry
registrador Ri Carrega o endereço “direto” com o dado CPL Bit
XRL A, #dado MOV @Ri, A Complementa o bit endereçável (bit de pino
Grava no acumulador o resultado da ope- Carrega o registrador endereçado por Ri ou bit de registradores)
ração lógica XOR entre o acumulador e o com o conteúdo do acumulador ANL C, Bit
dado MOV @Ri, direto Grava no flag carry o resultado da opera-
XRL direto, A Carrega o registrador endereçado por Ri ção lógica AND entre o flag carry e o bit
Grava no endereço “direto” o resultado da com o conteúdo do endereço “direto” endereçável (bit de pino ou bit de registra-
operação lógica XOR entre o endereço “di- MOV @Ri, dado dores)
reto” e o acumulador Carrega o registrador endereçado por Ri ANL C, \Bit
XRL direto,#dado com o dado Grava no flag carry o resultado da opera-
Grava no endereço “direto” o resultado da MOV DPTR,dado16 ção lógica AND entre o flag carry e o com-
operação lógica XOR entre o endereço “di- Carrega o registrador DPTR com o dado plemento do bit endereçável (bit de pino ou
reto” e o dado de 16 bits bit de registradores).

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


ORL C, Bit CJNE A,#dado,rel SUBB A, # dado 2 94 1
Grava no flag carry o resultado da opera- Compara o conteúdo do acumulador com INC A 1 04 1
ção lógica OR entre o flag carry e o bit o dado, e desvia para o endereço “rel” se INC R0 1 08 1
endereçável (bit de pino ou bit de registra- for diferente INC R1 1 09 1
dores) CJNE Rn,#dado,rel INC R2 1 0A 1
ORL C, \Bit Compare o conteúdo do registrador Rn com INC R3 1 0B 1
Grava no flag carry o resultado da opera- o dado, e desvie para o endereço “rel” se INC R4 1 0C 1
ção lógica OR entre o flag carry e o com- for diferente INC R5 1 0D 1
plemento do bit endereçável (bit de pino ou CJNE @Ri,#dado,rel INC R6 1 0E 1
bit de registradores) Compara o conteúdo do endereçado por Ri INC R7 1 0F 1
MOV C, Bit com o dado, e desvie para o endereço “rel” INC direto 2 05 1
Grava no flag carry o conteúdo do bit se for diferente INC @R0 1 06 1
endereçável (bit de pino ou bit de registra- DJNZ Rn, rel INC @R1 1 07 1
dores) Decrementa o registrador Rn e desvia para DEC A 1 14 1
MOV Bit, C o endereço “rel” se o resultado for diferente DEC R0 1 18 1
Grava no bit endereçável (bit de pino ou bit de zero DEC R1 1 19 1
de registradores) o conteúdo do flag carry DJNZ direto, rel DEC R2 1 1A 1
Decrementa o endereço “direto” e desvia DEC R3 1 1B 1
Fluxo de Execução para o endereço “rel” se o resultado for di- DEC R4 1 1C 1
Mnemônico ferente de zero DEC R5 1 1D 1
Descrição NOP DEC R6 1 1E 1
ACALL End 11 Não faz nada. DEC R7 1 1F 1
Chamada curta de sub-rotina (11 bits, 2 DEC direto 2 15 1
kbytes da posição atual) As tabelas a seguir mostram os DEC @R0 1 16 1
LCALL End 16 mnemônicos, tamanho em byte, código DEC @R1 1 17 1
Chamada longa de sub-rotina (16 bits , qual- em hexa e número de ciclo de cada ins- INC DPTR 1 A3 2
quer posição da EPROM ) trução. É importante saber o tempo de MUL AB 1 A4 4
RET cada instrução quando se for trabalhar DIV AB 1 84 4
Retorno de sub-rotina com rotinas de tempo. DA A 1 D4 1
RETI
Retorno de sub-rotina de interrupção Operações Aritméticas Operações Lógicas
AJMP End 11 Mnemônico e tamanho Código Tempo Mnemônico e tamanho Código Tempo
Desvio curto para endereço de 11 bits, 2 operandos em byte em hex Ciclo operandos em byte em hex Ciclo
kbytes da posição atual maq. maq.
LJMP End 16 ADD A,R0 1 28 1 ANL A, R0 1 58 1
Desvio longo para endereço de 16 bits, ADD A,R1 1 29 1 ANL A, R1 1 59 1
qualquer posição da EPROM ADD A,R2 1 2A 1 ANL A, R2 1 5A 1
SJMP rel ADD A,R3 1 2B 1 ANL A, R3 1 5B 1
Desvio relativo curto ADD A,R4 1 2C 1 ANL A, R4 1 5C 1
JMP @A+DPTR ADD A,R5 1 2D 1 ANL A, R5 1 5D 1
Desvio indireto para a posição de memó- ADD A,R6 1 2E 1 ANL A, R6 1 5E 1
ria endereçada pelo acumulador mais o re- ADD A,R7 1 2F 1 ANL A, R7 1 5F 1
gistrador DPTR ADD A, direto 2 25 1 ANL A, direto 2 55 1
JZ rel ADD A, @R0 1 26 1 ANL A, @R0 1 56 1
Desvia para o endereço “rel” se o acumula- ADD A, @R1 1 27 1 ANL A, @R1 1 57 1
dor for igual a zero ADD A, # dado 2 24 1 ANL A, #dado 2 54 1
JNZ rel ADDC A, R0 1 38 1 ANL direto, A 2 52 1
Desvia para o endereço “rel” se o acumula- ADDC A, R1 1 39 1 ANL direto,#dado 3 53 2
dor for diferente de zero ADDC A, R2 1 3A 1 ORL A, R0 1 48 1
JC rel ADDC A, R3 1 3B 1 ORL A, R1 1 49 1
Desvia para o endereço “rel” se o flag carry ADDC A, R4 1 3C 1 ORL A, R2 1 4A 1
estiver setado ADDC A, R5 1 3D 1 ORL A, R3 1 4B 1
JNC rel ADDC A, R6 1 3E 1 ORL A, R4 1 4C 1
Desvia para o endereço “rel” se o flag carry ADDC A, R7 1 3F 1 ORL A, R5 1 4D 1
estiver zerado ADDC A, direto 2 35 1 ORL A, R6 1 4E 1
JB bit, rel ADDC A, @R0 1 36 1 ORL A, R7 1 4F 1
Desvia para o endereço “rel” se o bit ADDC A, @R1 1 37 1 ORL A, direto 2 45 1
endereçável estiver setado ADDC A, # dado 2 34 1 ORL A, @R0 1 46 1
JNB bit, rel SUBB A, R0 1 98 1 ORL A, @R1 1 47 1
Desvia para o endereço “rel” se o bit SUBB A, R1 1 99 1 ORL A, #dado 2 44 1
endereçável estiver zerado SUBB A, R2 1 9A 1 ORL direto, A 2 42 1
JBC bit, rel SUBB A, R3 1 9B 1 ORL direto,#dado 3 43 2
Desvia para o endereço “rel” se o bit SUBB A, R4 1 9C 1 XRL A, R0 1 68 1
endereçável estiver setado e depois zera o SUBB A, R5 1 9D 1 XRL A, R1 1 69 1
bit SUBB A, R6 1 9E 1 XRL A, R2 1 6A 1
CJNE A,direto,rel SUBB A, R7 1 9F 1 XRL A, R3 1 6B 1
Compara o conteúdo do acumulador com SUBB A, direto 2 95 1 XRL A, R4 1 6C 1
o conteúdo do endereço “direto”, e desvia SUBB A, @R0 1 96 1 XRL A, R5 1 6D 1
para o endereço “rel” se for diferente SUBB A, @R1 1 97 1 XRL A, R6 1 6E 1

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


XRL A, R7 1 6F 1 MOV @R0, A 1 F6 1 CJNE R0,dado,rel 3 B8 2
XRL A, direto 2 65 1 MOV @Ri1 A 1 F7 1 CJNE R1,dado,rel 3 B9 2
XRL A, @R0 1 66 1 MOV @R0, direto
2 A6 2 CJNE R2,dado,rel 3 BA 2
XRL A, @R1 1 67 1 MOV @R1, direto
2 A7 2 CJNE R3,dado,rel 3 BB 2
XRL A, #dado 2 64 1 MOV @R0, dado 2 76 1 CJNE R4,dado,rel 3 BC 2
XRL direto, A 2 62 1 MOV @R1, dado 2 77 1 CJNE R5,dado,rel 3 BD 2
XRL direto,#dado 3 63 2 MOV DPTR,dado16 3 90 2 CJNE R6,dado,rel 3 BE 2
CLR A 1 E4 1 MOVC A,@A+DPTR 1 93 2 CJNE R7,dado,rel 3 BF 2
CPL A 1 F4 1 MOVC A, @A+PC 1 83 2 CJNE @R0,#dado,rel 3 B6 2
RL A 1 23 1 MOVX A, @R0 1 E2 2 CJNE @R1,#dado,rel 3 B7 2
RLC A 1 33 1 MOVX A, @R1 1 E3 2 DJNZ R0, rel 2 D8 2
RR A 1 03 1 MOVX A, @DPTR 1 E0 2 DJNZ R1, rel 2 D9 2
RRC A 1 13 1 MOVX @R0, A 1 F2 2 DJNZ R2, rel 2 DA 2
SWAP A 1 C4 1 MOVX @R1, A 1 F3 2 DJNZ R3, rel 2 DB 2
MOVX @DPTR, A 1 F0 2 DJNZ R4, rel 2 DC 2
PUSH direto 2 C0 2 DJNZ R5, rel 2 DD 2
Transferência de Dados POP direto 2 D0 2 DJNZ R6, rel 2 DE 2
Mnemônico e tamanho Código Tempo XCH A, R0 1 C8 1 DJNZ R7, rel 2 DF 2
operandos em byte em hex Ciclo XCH A, R1 1 C9 1 DJNZ direto, rel 3 D5 2
maq. XCH A, R2 1 CA 1 NOP 1 00 1
MOV A, R0 1 E8 1 XCH A, R3 1 CB 1
MOV A, R1 1 E9 1 XCH A, R4 1 CC 1
MOV A, R2 1 EA 1 XCH A, R5 1 CD 1 ALGORÍTMOS
MOV A, R3 1 EB 1 XCH A, R6 1 CE 1 Algorítmo é a descrição de um con-
MOV A, R4 1 EC 1 XCH A, R7 1 CF 1 junto de comandos que resultam numa
MOV A, R5 1 ED 1 XCH A, direto 2 C5 1 sucessão de ações. Geralmente, um al-
MOV A, R6 1 EE 1 XCH A, @R0 1 C6 1 goritmo se destina a resolver uma ação,
MOV A, R7 1 EF 1 XCH A, @R1 1 C7 1 fixar um padrão de comportamento a ser
MOV A, direto 2 E5 1 XCHD A, @R0 1 D6 1 seguido ou uma norma de execução a
MOV A, @R0 1 E6 1 XCHD A, @R1 1 D7 1 ser trilhada para se atingir um resultado
MOV A, @R1 1 E7 1 final ,a solução de um problema.
MOV A, #dado 2 74 1 Variáveis Booleanas Bit
MOV R0, A 1 F8 1 Mnemônico e tamanho Código Tempo Exemplo:
MOV R1, A 1 F9 1 operandos em byte em hex Ciclo Algoritmo do “programa soma”
MOV R2, A 1 FA 1 maq. “programa soma” em assembly (8051)
MOV R3, A 1 FB 1 CLR C 1 C3 1
MOV R4, A 1 FC 1 CLR Bit 2 C2 1 A←10 MOV A,#0AH
MOV R5, A 1 FD 1 SETB C 1 D3 1 B←05 MOV B,#05H
MOV R6, A 1 FE 1 SETB Bit 2 D2 1 R0←A+B ADD AB
MOV R7, A 1 FF 1 CPL C 1 B3 1 MOV R0,A
MOV R0, direto 2 A8 2 CPL Bit 2 B2 1
MOV R1, direto 2 A9 2 ANL C, Bit 2 82 2
MOV R2, direto 2 AA 2 ANL C, \ Bit 2 B0 2 FLUXOGRAMA
MOV R3, direto 2 AB 2 ORL C, Bit 2 72 2 O fluxograma é uma representação
MOV R4, direto 2 AC 2 ORL C, \ Bit 2 A0 2 gráfica das tarefas de um programa, por
MOV R5, direto 2 AD 2 MOV C, Bit 2 A2 1 meio de símbolos que fornecem a se-
MOV R6, direto 2 AE 2 MOV Bit, C 2 92 2 qüência de um processo. O fluxograma
MOV R7, direto 2 AF 2 ajuda a organizar o programa, permitin-
MOV R0, #dado 2 78 1 Fluxo de Execução do o seu delineamento e possibilitando
MOV R1, #dado 2 79 1 Mnemônico e tamanho Código Tempo seguir passo- a- passo o que será exe-
MOV R2, #dado 2 7A 1 operandos em byte em hex Ciclo cutado nele.
MOV R3, #dado 2 7B 1 maq. Existem estruturas, definições rigo-
MOV R4, #dado 2 7C 1 ACALL End 11 2 11 2 rosas das regras de um fluxograma e
MOV R5, #dado 2 7D 1 LCALL End 16 3 12 2 uma variedade de símbolos para a cons-
MOV R6, #dado 2 7E 1 RET 1 22 2 trução do mesmo, o que é interessante
MOV R7, #dado 2 7F 1 RETI 1 32 2 seguir, principalmente quando se trata
MOV direto, A 2 F5 1 AJMP End 11 2 01 2 de um projeto complexo onde se encon-
MOV direto, R0 2 88 2 LJMP End 16 3 02 2 tram várias pessoas no mesmo projeto,
MOV direto, R1 2 89 2 SJMP rel 2 80 2 programando partes diferentes do flu-
MOV direto, R2 2 8A 2 JMP @A+DPTR 1 73 2 xograma. Com um fluxograma bem
MOV direto, R3 2 8B 2 JZ rel 2 60 2 estruturado fica fácil corrigir eventuais
MOV direto, R4 2 8C 2 JNZ rel 2 70 2 erros que possam surgir no decorrer do
MOV direto, R5 2 8D 2 JC rel 2 40 2 projeto.
MOV direto, R6 2 8E 2 JNC rel 2 50 2 Para o programador de microcon-
MOV direto, R7 2 8F 2 JB bit, rel 3 20 2 trolador é preferível que ele estruture o
MOV direto1,direto2 3 85 2 JNB bit, rel 3 30 2 seu fluxograma, podendo assim criar um
MOV direto, @R0 2 86 2 JBC bit, rel 3 10 2 estilo individual, pois não convém de-
MOV direto, @R1 2 87 2 CJNE A,direto,rel 3 B5 2 terminar princípios fixos ou normas de
MOV direto, #dado 3 75 2 CJNE A,#dado,rel 3 B4 2 funcionamento, mesmo porque os pro-

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001


gramas para os microcontroladores são DECISÃO
muito pessoais. Programas diferentes Indica a possibilidade
podem chegar ao mesmos resultados,
e o fluxograma depende do sistema, do de desvios para di-
tipo de equipamento para qual será fei- versos pontos do
to o programa, do tipo da linguagem, etc. programa
O fluxograma não é um elemento
indispensável ao desenvolvimento de
um programa, porém, sem ele se torna PROCESSO PRÉ-DEFINIDO
mais difícil qualquer alteração ou corre-
ção. O fluxograma deve ser feito com a Indica uma rotina que será executa-
visualização do problema a ser resolvi- da fora do programa
do passo-a-passo, e o programa deve principal (sub-rotinas)
ser feito por partes, e testado a cada
parte para que fique mais simples de-
tectar e solucionar qualquer tipo de erro.
As alterações devem ser bem analisa- CONECTOR FORA DE
das porque poderão influenciar em ou- PÁGINA
tras partes do programa. Uma entrada ou saída de
Essencialmente, o projeto de um pro-
grama a ser processado por sistema uma página para outra
deve ter os seguintes procedimentos: página do diagrama
- análise do problema
- elaboração do fluxograma
- escrever o programa em linguagem
simbólica FLUXO
- traduzir o programa para linguagem de Indica a direção do fluxo
máquina de dados ou de um
- testar e, se necessário corrigir, processamento
Na análise do problema devem ser
determinados de maneira bem clara
quais os objetivos a ser alcançados, CONEXÃO
exatamente que tarefa deve ser realiza- Indica a rota de prossegui-
da e definir todo o hardware do sistema. mento do fluxograma
O fluxograma deve ser dividido em ta-
refas e a definição da sequência que es-
tas tarefas deve-se executadas incluin- SUB-ROTINA
do-se decisões. Um grupo de opera-
Para escrever o programa deve ser ções separadas do
primeiramente determinar que tipo de fluxo do programa
linguagem será utilizada, se uma lingua-
gem de baixo nível ou alto nível.
A tradução do programa para lingua- VISOR
gem de máquina é feita normalmente
por um programa copilador já instalado Saída de informações
no PC e depende da linguagem usada através de vídeo ou
para escrever o programa. O teste pode display
ser feito através de um programa simu-
lador ou diretamente no sistema para
qual o programa esta sendo escrito. ENTRADA / SAÍDA
Qualquer função relaci-
onada com dispositivo
Alguns símbolos utilizado em
fluxogramas são apresentados a de entrada ou saída ge-
seguir. néricos

MODIFICAÇÃO DE
TERMINAL PROGRAMA
Ponto de início, térmi- Qualquer função
no ou interrupção de que altera o próprio
um programa. programa

PROCESSAMENTO TECLADO
Um grupo de instru- Entrada de informa-
ções que executam uma função de ções através de te-
processamento do programa. clado. n

SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001 SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001