tutorial) saber eletronica - mini curso de micro control ad or (8051)

20

Click here to load reader

Upload: api-3702256

Post on 07-Jun-2015

1.519 views

Category:

Documents


18 download

TRANSCRIPT

Page 1: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

INTRODUÇÃOCom o avanço da tecnologia e a uti-

lização da eletrônica digital por grandeparte das empresas, o emprego demicrocontroladores vêm sendo muitorequisitado para um melhor desenvol-vimento da produção, diminuindo oscustos e trazendo benefícios para asempresas que utilizam esse sistema. Éimportante salientar que, considerandoa relação custo/benefício, os microcon-troladores podem não só ser usados emempresas de médio/grande porte, comopodem também ser utilizados em vári-os projetos de eletrônica, na substitui-ção de vários componentes digitais, ob-tendo-se assim no final do projeto ummelhor acabamento – pois ummicrocontrolador ocuparia um menorespaço físico - e uma maior eficiência epraticidade, uma vez que todos os co-mandos seriam executados via software.

Antes de um aprofundamento noassunto microcontroladores, é importan-te conhecermos um pouco da históriadesses componentes desde as suasorigens.

Na década de 70 começaram a serutilizados microprocessadores em com-putadores para uma maior eficiência noprocessamento de dados. O micropro-cessador Intel foi um dos precursorese, a partir daí, houve uma preocupaçãoem melhorar cada vez mais o sistemade processamento de dados atravésdesses componentes. Baseado na ar-quitetura de um microprocessador eseus periféricos, foi criado um compo-nente que (fisicamente em uma unida-de) comportasse todo um sistema queequivalesse a um microprocessador eseus periféricos; assim surgiu o micro-controlador. Todas as informações e ex-plicações citadas neste trabalho basei-am-se nos microcontroladores 8051 e8031 da Intel.

UNIDADE CENTRAL DEPROCESSAMENTO (CPU)

A unidade central de processamentocontrola todas as funções realizadaspelo sistema.

A CPU de qualquer sistema de com-putador contém os seguintes grupos deunidades funcionais:

- Registradores e contadoresOs registradores e contadores são

unidades funcionais usadas para oarmazenamento temporário de bits den-tro da CPU.

- Unidade Lógica e Aritmética (ULA)A unidade lógica e aritmética é a

unidade funcional da CPU que executaoperações lógicas e aritméticas entrepalavras binárias, gerando uma outrapalavra na saída .

- Unidade de controle e sincronizaçãoA unidade de controle e sincroniza-

ção coordena e controla todas as uni-dades funcionais em uma seqüêncialógica e sincronizada.

PROCESSAMENTOO processador ou unidade central

de processamento (CPU) é a parte dosistema que faz o processamento dasinformações para que as instruções se-jam executadas; as instruções devemestar armazenadas na memória de pro-grama em seqüência, formando assimo programa .

A CPU possui um registrador cha-mado de contador de programa (PC)que contém o endereço da próxima ins-trução que deve ser executada.

Toda vez que uma instrução é reti-rada da memória pela unidade centralde processamento, automaticamente ocontador de programa é incrementadopara que, após o processamento destainstrução, quando a CPU for buscar apróxima instrução, baste usar o ende-reço contido no contador de programa.

Toda vez que a CPU é ligada ouresetada, automaticamente o seu con-tador de programa é zerado, desta for-ma, a primeira tarefa que a CPU irá rea-lizar é a execução da instrução contidana posição de memória de endereço“0000”. Cada instrução possui duas fa-ses distintas: o ciclo de busca e o ciclo

de execução. Durante o ciclo de uma ins-trução a CPU faz com que o conteúdodo contador de programa seja colocadono barramento de endereços, endere-çando, desta maneira, a posição de me-mória que contém a instrução que deveser executada.

UNIDADES DE ENTRADA/SAÍDA (I/O)As unidades de entrada/saída são

os meios pelos quais o usuário se co-munica com o sistema. Essas unidadespossuem interfaces que permitem a co-nexão com dispositivos chamados deperifér icos, tais como teclado,monitores, LCD´s, etc.

ARQUITETURAA performance do microcontrolador

depende da sua arquitetura interna, ouseja, do modo em que o microcontro-lador foi projetado tanto para o hardwarecomo para software. No hardware apre-sentaremos a arquitetura Von-Neumann,na qual se refere o software CISC.

- Arquitetura Von-NeumannNa arquitetura Von-Neumann, os

barramentos de dados e endereços sãocompartilhados entre memórias de pro-gramas e memórias de dados na comu-nicação com a CPU (figura1). Nesse tipode arquitetura, quando a CPU estáacessando a memória de programa nãopode acessar a memória de dados, por-que usa os mesmos barramentos paraas duas memórias.

CISC (Complex Instruction SetComputer)

CISC: Computador com Set de Ins-trução mais Complexo, quanto maior acomplexidade da instrução que deve serexecutada, mais espaço ela ocupa nochip. Desse modo, chegará um momen-to que passaremos a ter um set de ins-truções tão grande que começará a afe-tar o desempenho, dificultando a possi-bilidade de implementar outras funções

José Edson dos Santos MarinhoEdnaldo dos Santos Marinho

MINI-CURSO DEMICROCONTROLADOR

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

Page 2: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

importantes. Ter um complexo (grande)set de intruções “CISC” nem sempre éinteressante para um bom desempenhodo processador.

Numa análise feita pelo laboratórioda IBM sobre como estavam sendo usa-do os diversos tipos de instruções,concluiram que num microprocessadorque usava um set de instruções de, porexemplo, 200 instruções, a maior partedo processamento era feita apenas comumas 10 instruções.

Uma grande parte das instruções erapouco usada, às vezes até uma únicavez em um longo programa, de modoque elas poderiam ser implementadaspelas instruções básicas mais usadas.

Daí o aparecimento da nova arqui-tetura com o set de instruções reduzido“RISC”.

MEMÓRIASMemórias são os dispositivos que

armazenam informações e são usadasem todos os sistemas microcontrolados.Existem vários tipos de memórias quepodem ser classificadas por vários ítensdiferentes. Vamos analisar os principais:

- AcessoAs memórias armazenam informa-

ções em lugares que se denominam “lo-calidades de memória”. Cada localida-de de memória guarda um conjunto debits e tem um endereço. No acesso des-ses endereços podemos analisar :

O tempo de acesso : é o tempo quea memória necessita para que sejam es-critos ou lidos os dados em suas locali-dades;

Acesso seqüencial : nas memóriasque têm acesso seqüencial, paraacessar um endereço de uma certa lo-calidade, precisa-se passar por ende-reços intermediários (as memórias maiscomuns desse tipo são as que utilizamfita magnética);

Acesso aleatório: as memórias queutilizam esse tipo de acesso são as quepermitem que seja acessado qualquerdado em qualquer endereço sem a ne-cessidade de ter que passar por outrosendereços intermediários.

- VolatilidadeMemórias voláteis : são aquelas

que perdem as informações quando écortada sua alimentação. São memóri-as que geralmente usam como elemen-to de memória o flip-flop.

Memórias não voláteis : são memó-rias que mesmo desligando-se sua ali-mentação, não perdem as informaçõesarmazenadas. Dentre essas se desta-cam as magnéticas e as eletrônicasROM, PROM, EPROM, EEPROM , eoutras.

- Memórias de escrita/leitura ou so-mente leitura

Escrita/leitura : são memórias quepodem ser acessadas pela CPU tantopara leitura quanto para escrita; elas sãousadas para armazenar dados que se-rão utilizados durante a execução doprograma (memórias RAM´s,EEPROM´s).

Somente leitura : são as memóriasque armazenam o programa, ou sejasão as memórias que só serão lidaspela CPU e que já vêm gravadas para osistema (memórias ROM´s ,PROM´s ,etc).

- Tipo de armazenamentoEstáticas : memórias estáticas são

aquelas nas quais as informações per-manecem armazenadas enquanto nãohouver escrita ou não faltar energia.

Dinâmicas : memórias dinâmicassão memórias que perdem informaçõesarmazenadas mesmo com alimentação.Na RAM dinâmica (ou DRAM) isso acon-tece porque cada célula tem um tran-sistor MOSFET e um capacitor que ar-mazena um dado (1bit).

- Tipos de memóriasVeremos a seguir alguns tipos de

memórias existentes no mercado e quesão muito utilizadas:

Memórias RAM (Random AccesMemory)

Essas memórias são de acesso ale-atório, que podem ser acessadas a qual-quer momento e em qualquer endere-ço. Elas podem ser estáticas ou dinâmi-cas e também podem ser gravadas pelosistema com a tensão de 5V. São me-mórias consideradas voláteis.

Memórias ROM (Ready OnlyMemory)

Essas memórias são utilizadas nosistema somente para a leitura.

Memórias PROM (ProgrammableReady Only Memory)

Essas memórias são utilizadas nosistema somente para a leitura; geral-mente usadas como memórias de pro-grama, só podem ser gravadas com gra-

vadores específicos e só uma vez. Sãoas memórias não voláteis;

Memórias EPROM (ErasableProgrammable Ready Only Memory)

Essas memórias são utilizadas nosistema somente para a leitura , tam-bém empregadas como memórias deprograma e só podem ser gravadas comgravadores específicos. Podem ser apa-gadas por raios ultravioleta e regrava-das por muitas vezes. São chamadasmemórias não voláteis.

Memórias EEPROM ou E²PROM(Electrically Erasable ProgrammableReady Only Memory)

Essas memórias podem ser usadasno sistema tanto para leitura como paraescrita, podem ser gravadas com gra-vadores específicos ou pelo sistema;são apagadas eletricamente e regrava-das por muitas vezes; são consideradasmemórias não voláteis.

Memórias PEROM (ProgrammableErasable Ready Only Memory)

Uma linha de memórias programá-veis e apagáveis apenas para leitura, de3V e 5V, apenas dentro do sistema.Fabricadas com a avançada tecnologiaCMOS, não voláteis, suas característi-cas incluem:· Operação de leitura e programaçãoem apenas 3V e 5V· Proteção de dados de software ehardware· Operação de programação por setor· 1000 ciclos de programa· Retenção de dados de 10 anos· Baixa dissipação de potência· Tempo de ciclo de programa rápido· Detecção de fim de programa

Memórias FLASHA memória FLASH é um dispositivo

de armazenamento confiável, não volá-til, de boa relação custo/ benefício e quepossui características de leitura daEPROM, EEPROM e SRAM , porémquando aplica-se 12V sobre o dispositi-vo, este pode ser gravado com base embytes. No caso da memória FLASH - 5Vestes dispositivos foram projetados paraserem programados dentro do sistemacom o fornecimento padrão de 5V. Emprogramadores de EPROM convencio-nais não há necessidade de 12Vpp, nempara programação, nem para apaga-mento. É composta de uma arquiteturade apagamento de setor (qualquer com-binação pode ser apagada simultanea-mente) e 100.000 ciclos de apagamen-to/programação.

Memória FLASHFILEA memória FLASHFILE, simetrica-

mente bloqueada, da Intel, oferece umasolução não volátil com leitura e pro-gramação de mais alta densidade para

Figura 1

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

Page 3: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

armazenamento em massa. O armaze-namento de aplicações de software e aoperação com código de sistema emRFAs (Residential Flash Arrays ) propor-cionam execução instantânea, rápida eno local (in place). RFAs são protegi-dos também contra o envelhecimentodo software, já que este pode ser atua-lizado no sistema. O software RFA pro-longa a vida da bateria e aumenta aconfiabilidade do sistema através daredução do número de acessos ao disk-drive. 100.000 ciclos de apagamento/programação.

Memórias FIELDEstes dispositivos são para utiliza-

ção em filmes digitais e sistemasmultimídia. Eles fornecem dados atra-vés de acesso serial de alta velocidade.Sua capacidade de memória preencheum arquivo de uma tela de TV NTSC.Cada um dos bits possui porta de leitu-ra e gravação assíncronas, de controleindependente a diferentes velocidadesde clock, proporcionando uma operaçãoFIFO , renovando a células de armaze-namento RAM automaticamente.

Memórias FIFOOs dispositivos FIFO proporcionam

armazenamento temporário de dadosem sequência de tal forma que a primei-ra palavra na porta de entrada será aprimeira na porta de saída. As portasoperam de forma independente e osdados podem ser lidos e gravados emvelocidades diferentes.

Os dispositivos FIFO possuem po-sições de memória que inibem a entra-da de dados adicionais caso estejamocupadas, podendo apenas enviar da-dos armazenados para fora.

O tempo utilizado para completaruma operação chama-se tempo deacesso, esse valor pode determinar avelocidade do sistema no qual o dispo-sitivo está operando.

Memórias SeriaisEstes dispositivos são de tamanho

reduzido podendo ser ligados a umbarramento serial I²C (Inter-IntegratedCircuit Bus) ou SPI (Serial PeripheralInterface) junto com outros dispositivosseriais, com muitas vantagens em rela-ção às memórias paralelas.

MICROCONTROLADORESExistem no mercado muitos tipos de

microcontroladores, sendo o 8051 omais popular. O microcontrolador tam-bém é conhecido com microcomputadorde um só chip reunindo num único com-ponente vários elementos de um siste-ma, antes baseado em microprocessa-dor e que eram desempenhados porvários componentes independentes taiscomo RAM, ROM, comunicação serial,

etc. A memória de programa pode serROM, FLASH ou outro tipo. No caso domicrocontrolador 8051 ele pode funcio-nar como um microcontrolador ou comoum microprocessador. Na figura 2 mos-trado o diagrama de blocos do 8051. AATMEL possui uma enorme família decomponentes com as mesmas caracte-rísticas do 805, alguns até com as mes-mas pinagens dos registradores; outroscom pinagens diferentes, mas com omesmo set de instruções, com clock de12 MHz até aproximadamente 35 MHz.

Falaremos um pouco mais dessafamília mais adiante. A DALLAS Semi-conductor tem um microcontrolador dealta performance, de até 90MHz, com-patível com 8051.

Descrição da pinagem do 8051Do pino 1ao pino 8 temos:O port P1 , que vai de P1.0 a P1.7.

Estes pinos são bidirecionais, podendoser endereçáveis individualmente oucomo porta de 8 bits; possuem resisto-res de pull-up internos, forçando assimnível lógico alto. Cada pino pode acio-nar até 4 portas TTL-LS.

Pino 9RST/VPD. Estes pinos resetam o sis-

tema com a aplicação de um nível lógi-co alto por, pelo menos, dois ciclos de

máquina, tendo um resistor de pull-downinterno permitindo que se use apenasum capacitor externo para obter o resetpor power-on.

Do pino 10 ao pino 17 temos:O port P3 , que vai de P3.0 a P3.7

tem as mesmas características de fun-cionamento do port P1, tendo tambémoutras funções especiais que estão des-critas abaixo.

Fig. 2 - ARQUITETURA INTERNA EM BLOCO DO 8051BH.

Fig. 3 - DESCRIÇÃO DA PINAGEM DO 8051.

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

Page 4: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

pino 10 = P3.0 RXD/ Data : entra-da de dados serial.

pino 11 = P3.1 TXD/Clock: saídade dados serial.

pino 12 = P3.2 INT0: interrupçãoexterna de número 0, ativo em nível ló-gico baixo.

pino 13 = P3.3 INT1: interrupçãoexterna de número 1, ativo em nível ló-gico baixo.

pino 14 = P3.4 T/C0 : entrada ex-terna para o temporizador/contador deeventos.

pino 15 = P3.5 T/C1: entrada ex-terna para o temporizador/ contador deeventos.

pino 16 = P3.6 WR: strobe(sinalizador) de escrita de dados exter-no

pino 17 = P3.7 RD : strobe (sina-lizador) de leitura de dados externo

Obs : estas funções serão mais de-talhadas na continuação da apostila

Os pinos 18 e 19 são:XTAL 1 (18)XTAL 2 (19)

Pino 20:VSS conectado ao terra do circuito

Do pino 21 ao pino 28 temos:O port P2 , que vai de P2.0 a P2.7.

Tem as mesmas características de fun-cionamento do port P1, sendo estes pi-nos usados como pinos de endereça-mento externo endereçando a partemais significativa dos 16 bits (A8 a A15).

Pino 29:PSEN (Program Store Enable), sa-

ída para habilitação do programa exter-no, sinalizador de leitura da memóriade programa externa; quando omicrocontrolador busca instruções estepino vai ao nível zero.

Pino 30:ALE (Address Latch Enable), saí-

da habilitadora do latch de endereços,separando o barramento de dados daparte menos significativa do barramentode endereços que são multiplexadospelo port P0.

Pino 31:EA (External Enable) , entrada de

seleção de memórias. Quando coloca-do em nível lógico baixo, a CPU execu-ta somente as instruções da memóriade programa externa; quando em nívellógico alto, a CPU executa as instruçõesda memória de programa interna (seexistir).

Pino 32 ao pino 39 temos:Port P0: que vai de P0.0 a P0.7. Este

é um port de 8 bits bidirecional com dre-no aberto.

Sem resistores de pull-up internos,funciona como um barramento de da-dos, e a parte menos significativa dobarramento de endereços.

Pino 40, temosVCC (Alimentação positiva)Basicamente, os pinos do microcon-

trolador são construídos como mostra afigura 4 abaixo com algumas diferençasuns dos outros, mas para explicação deum modo geral pode ser considerado umflip-flop tipo D com dois buffers tri-state,um transistor e um resistor.

Quando o microcontrolador vai es-crever no pino, o dado é enviado para avia de dados interna e também é dadoum clock no flip-flop, que terá o mesmosinal na saída “Q” (e o complemento des-te sinal na saída Q/), que por sua vezestá ligada ao gate de um transistor, oqual entra em saturação quando for apli-cado nível “1”.

Se o sinal que estiver na via de da-dos for “1” e o flip-flop receber um clock,a saída Q terá um sinal de nível alto, eQ/ terá um sinal de nível baixo que en-trará no gate do transistor deixando-oem corte e, então, o sinal no pino será odo resistor, ou seja , nível “1”. Agora, seo sinal que estiver na via de dados in-terna for nível baixo e novamente o flip-flop receber um clock, na saída Q tere-mos um sinal de nível baixo, e na saídaQ/ um sinal de nível alto que levará otransistor à saturação e com isso o pinoterá um nível baixo. Quando se quer lerum pino, o microcontrolador deve envi-

ar um sinal para o buffer “lê pino”, quepega o sinal que estiver nele e enviapara via de dados interna; quando sequer ler o flip-flop, o sinal é enviado parao buffer “lê latch” que libera o sinal dasaída Q para a via de dados interna. Nomicrocontrolador existem algumas ins-truções responsáveis pela leitura do flip-flop, e outras do pino. Para que se pos-sa ler um sinal externo no pino, deve-se primeiro escrever nele um nível altoevitando assim que o transistor condu-za e mande um sinal baixo no pino, poisse for entrar um sinal de nível alto nopino, o transistor não poderá estarsaturado, senão entrará em conflito pre-judicando a leitura. Isso acontece emtodos os PORT’s do microcontrolador.Quando estão sendo usado os pinos deI/O como PORT’s (empregando somen-te as memórias internas, é necessárioo uso de resistores de pull-up no portP0 .

CLOCK E CICLO DE MÁQUINAO microcontrolador é um circuito di-

nâmico, e para o seu funcionamentonecessita de um sinal de clock (relógio)para sincronização de suas operações.Este sinal de clock é gerado por umoscilador que fornece um seqüênciaininterrupta de pulsos com períodosconstantes. O chamado ciclo de máqui-na é uma quantidade de pulsos de clockque o processador requer para fazersuas funções; e o ciclo de instrução é aquantidade de ciclos de máquina quesão necessários para a execução deuma instrução.

Um exemplo genérico de uma ins-trução: suponhamos que um processa-dor qualquer leve para a execução deuma instrução 5 (cinco) ciclos de má-quina, e que cada ciclo de máquina des-se processador seja igual a 2 (dois)clocks. Para executar essa instrução oprocessador levará 10 (dez) clocks; su-pondo também que desses 5 (cinco) ci-clos de máquina, 2(dois) seriam para abusca da instrução na memória de pro-grama e os outros 3 (três) para a execu-

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

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

Page 5: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

ção dessa instrução, como mostra o grá-fico abaixo (figura 5).

No microcontrolador 8051 um ciclode 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 realizadasdependendo da instrução. Conforme ocomponente, o ciclo de máquina podeser em maior ou menor número de perí-odos, outros microcontroladores têm osciclos de máquina diferentes.

O 8051 possui internamente um cir-cuito oscilador com um inversor linearde estágio simples, oferecendo duaspossibilidades de clock distintas, sendoum externa e outra interna.

Para o uso de oscilador externodeve-se aterrar o pino 19 e injetar o si-nal externo no pino 18 que, desta for-ma, não atuará no gerador interno.

Para usarmos o clock gerado inter-namente devemos intercalar entre ospinos 18 e 19 um cristal com filtrocerâmico na freqüência desejada, comomostra na figura 6.

RESETO reset não é bem uma interrup-

ção, mas às vezes o chamamos assimpor sua ação semelhante a uma inter-rupção, já que ele interrompe o proces-so e reinicia o sistema. No 8051 o reseté ativo quando o pino 9 permanecer emnível alto por pelo menos 2 ciclos demáquina. Quando os pinos do 8051 es-tiverem todos em tri-state, e enquantoestiver no processo de reset, os pinospermanecerão em alta impedância.

Quando acontece uma interrupçãopor reset, a CPU se reorganiza einicializa com os seguintes valores nosregistradores.

Valores dos Registradoresapós o RESET

Registrador ValorPC 0000

ACC 00PSW 00SP 07

DPTR 0000P0-P1-P2-P3 FF

IP Xxx00000IE 0xx00000

TMDO 00TCOM 00TH0 00TL0 00TH1 00TL1 00

SCOM 00SBUF IndeterminadoPCOM 0xxxxxxx*

B 00

O 8051 pode ser automaticamenteresetado toda vez que for ligado(POWER-ON), colocando um resistor eum capacitor no pino 9 (RESET) como

mostra a figura 7 abaixo. O auto-reset éusado para que se tenha um tempo paraa fonte se estabilizar e, assim, todos oscomponentes do sistema serão alimen-tados corretamente evitando níveis detensões errados.

Outro modo de se obter o reset éatravés de um “push-button” ligado aopino 9, em paralelo com o capacitor(‘reset forçado’).

Desse modo o reset pode ser dadoa qualquer instante sem a necessidadede desligar o sistema.

ORGANIZAÇÃO DA MEMÓRIANo microcontrolador 8051 a memó-

ria está organizada do seguinte modo:memórias internas de 256 bytes dememória RAM, sendo 128 bytes de re-gistradores de função especial e 128 deregistradores comuns; e até 4 kbytes dememória de programa interna.

Em relação à memória externa, omicrocontrolador pode endereçar até 64kbytes de memória de programa exter-na, ou 4kbytes internos e 60 kbytes ex-ternos

RESISTRADORES DE FUNÇÕESESPECIAIS (SFR)

Na área de memória SFR (Regis-tradores de Funções Especiais) existemalguns registradores que são bytes e bitsendereçáveis, e outros que só são bytesendereçáveis. Veja figura 8.

Os registradores que são bytes e bitsendereçáveis podem ser acessados bita bit individualmente, ou pode-seacessar os 8 bits (byte) de uma vez .

Os registradores de funções espe-ciais de bytes e bits endereçáveis e seusendereços, assim como os endereçosdos bytes, são mostrados na tabela 2.

OBS.: estes registradores fazem par-te da RAM interna do 8051.

Na tabela 2 temos a parte da RAMdos registradores de funções especiaiscom nome e endereço individual dosbits.

Alguns bits têm nomes e endereços,outros só nomes e outros só endereços;dependendo do microcontrolador usa-do pode-se ter mais registradores comoutras funções .

Descrevemos agora as funções decada um dos registradores :

O acumulador ( E0 )BIT7 ACC7 E7BIT6 ACC6 E6BIT5 ACC5 E5BIT4 ACC4 E4BIT3 ACC3 E3BIT2 ACC2 E2BIT1 ACC1 E1BIT0 ACC0 E0

O acumulador é um registrador deuso geral e é um operador em váriasinstruções, sendo também o lugar ondefica o resultado de varias operações. Eleé muitas vezes parte do operando dainstrução.

Obs.: notem que o endereço do bytedo acumulador tem o mesmo no nomedo endereço do bit zero, então, comoacessar o endereço do bit sem alterar obyte? É simples: no momento deacessar qualquer endereço, a instruçãode bit é diferente da instrução de byte,logo o código em hexadecimal também

Figura 6

Figura 7

REGISTRADO-RES DE

FUNÇÕESESPECIAIS

ÁREA DE BYTESENDEREÇÁVEISDIRETAMENTE

ÁREA DE BITSENDEREÇÁVEIS

BANCO DEREGISTRADORES

FF

80

7F

00

1F20

2F

30

Figura 8

TABELA 1

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

Page 6: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

é diferente e isso serve para todos re-gistradores.

O registrador B ( F0 )BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0F7 F6 F5 F4 F3 F2 F1 F0

Esse registrador em algumas instru-ções tem seu nome referenciado: MULAB , DIV AB , que são operações entreos registradores A e B, fora isso ele éum registrador como outro qualquer.

P0 , P1 , P2 e P3

São os registradores que espelhama situação atual dos pinos físicos dosports.

Registrador P0 ( 80 )BIT7 87 P0.7BIT6 86 P0.6BIT5 85 P0.5BIT4 84 P0.4BIT3 83 P0.3BIT2 82 P0.2BIT1 81 P0.1BIT0 80 P0.0

Registrador P1 ( 90 )BIT7 97 P1.7BIT6 96 P1.6BIT5 95 P1.5BIT4 94 P1.4BIT3 93 P1.3BIT2 92 P1.2BIT1 91 P1.1BIT0 90 P1.0

Registrador P2 ( A0 )BIT7 A7 P2.7BIT6 A6 P2.6BIT5 A5 P2.5BIT4 A4 P2.4BIT3 A3 P2.3BIT2 A2 P2.2BIT1 A1 P2.1BIT0 A0 P2.0

Registrador P3 ( B0 )BIT7 B7 P3.7BIT6 B6 P3.6BIT5 B5 P3.5BIT4 B4 P3.4BIT3 B3 P3.3BIT2 B2 P3.2BIT1 B1 P3.1BIT0 B0 P3.0

Registrador IE Interrupt Enable(A8)Este registrador é responsável pela

a habilitação das interrupçõesBIT7 AF EABIT6 AE XBIT5 AD XBIT4 AC ESBIT3 AB ET1BIT2 AA EX1BIT1 A9 ET0BIT0 A8 EX0

EA Enable All: (habilita todas asinterrupções). Quando em “0”, desabilitatodas as interrupções ; quando em “1”,permite a escolha de habilitar qualquerinterrupção através dos bits de controleindividual a seguir

ES Enable Serial (habilita serial).Quando em nível lógico 1 habilita a in-

terrupção pedida pelo canal serial ,quando em nível lógico 0 inibe a inter-rupção pedida pelo canal serial.

ET1 Enable Timer 1 (habilita timer1). Quando em nível lógico 1 habilita ainterrupção pelo timer/count 1. Se EA es-tiver habilitado, quando em nível lógico0 inibe a interrupção pedida pelo timer/count 1 .

EX1 Enable external 1 (habilitaINT1). Quando em nível lógico 1, habili-ta a interrupção pedida pelo dispositivoexterno ligado no pino INT1 se AE esti-ver=1; quando em nível lógico 0 inibe ainterrupção pedida pelo dispositivo ex-terno ligado ao pino INT1.

ET0 Enable Timer 0 (habilita timer0). Quando em nível lógico 1 habilita ainterrupção pelo timer/count 0. Se EAestiver habilitado, quando em nível lógi-co 0 inibe a interrupção pedida pelotimer/count 0.

EX0 Enable external 0 (habilitaINT0). Quando em nível lógico 1, habili-ta a interrupção pedida pelo dispositivoexterno ligado no pino INT0 se AE esti-ver = 1; quando em nível lógico 0 inibea interrupção pedida pelo dispositivo ex-terno ligado ao pino INT0.

Registrador IP Interrupt Priority (B8)Através dos bits desse registrador

pode-se alterar a prioridade de interrup-ção.

BIT7 BF XBIT6 BE XBIT5 BD XBIT4 BC PSBIT3 BB PT1BIT2 BA PX1BIT1 B9 PT0BIT0 B8 PX0

PS Priority Serial (Prioridade Serial).Quando em nível 1 indica prioridadepara interrupção gerada pela serial, sea mesma estiver habilitada . Quando emnível 0 indica baixa prioridade.

PT1 Priority Timer 1 (Prioridade dotemporizador/contador 1). Se em nível1, indica prioridade para interrupção pe-dida pelo temporizador / contador,

PX1 Priority External 1(PrioridadeInterrupção Externa). Quando em nível1, indica que a prioridade é para o dis-positivo que esteja ligado no pino 13(INT1/P3.3) do 8051; no caso de nível 0indica baixa prioridade.

PT0 Priority Timer 0 (Prioridade dotemporizador/contador 0). Se em nível1, indica prioridade para interrupção pe-dida pelo temporizador/contador.

Obs: ‘ * ‘ = endereço não disponível em bits, só em bytes;

EndereçoBytes

E0 E7 E6 E5 E4 E3 E2 E1 E0 ACCF0 F7 F6 F5 F4 F3 F2 F1 F0 B80 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 P0

87 86 85 84 83 82 81 8090 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P1

97 96 95 94 93 92 91 90A0 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P2

A7 A6 A5 A4 A3 A2 A1 A0B0 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 P3

B7 B6 B5 B4 B3 B2 B1 B0A8 EA ES ET1 EX1 ET0 EX0 IE

AF AC AB AA A9 A8B8 PS PT1 PX1 PT0 PX0 IP

BC BB BA B9 B8D0 CY AC F0 RS1 RS0 OV P PSW

D7 D6 D5 D4 D3 D2 D1 D098 SM1 SM2 SM3 REN TB8 RB8 TI RI SCN

9F 9E 9D 9C 9B 9A 99 9888 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCOM

8F 8E 8D 8C 8B 8A 89 8889 Gate C/T M1.1 M0.1 Gate C/T M1.0 M0.0 TMOD

* * * * * * * * *

RegistradorENDEREÇOS INDIVIDUAIS DOS BITS

TABELA 2

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

Page 7: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

PX0 Priority External 0 (Priorida-de Interrupção Externa 0) quando emnível 1, indica que a prioridade é para odispositivo que esteja ligado no pino 12(INT1/P3.2) do 8051; no caso de nível 0indica baixa prioridade.

Registrador PSW Program StatusWord (D0)

Este registrador contém flags (bits)que indicam as ocorrências da ULA acada operação lógica e aritmética quehouver, e também avisa em que bancode registradores está ativo.

BIT7 D7 CYBIT6 D6 ACBIT5 D5 F0BIT4 D4 RS1BIT3 D3 RS0BIT2 D2 0VBIT1 D1 XBIT0 D0 P

CY Carry FlagAC Carry AuxiliarOV Overflow FlagEstas flags (CY, AC, OV ) são modi-

ficadas por algumas instruções, comomostra a tabela abaixo

Instruções CY AC VOADD x x xADDC x x xANL C,bit x - -ANL C,\bit x - -CLR C 0 - -CPL C x - -CJNE x - -DA x - -DIV 0 - xMUL 0 - xMOV C, bit x - -ORL C, bit x - -ORL C, \bit x - -RLC x - -RRC x - -SETB C 1 - -SUBB x x x

RS1 Register bank Select 1RS0 Register bank Select 0Estas duas flags selecionam o ban-

co de registradores do começo da RAMinterna

RS1 RS0 Banco0 0 00 1 11 0 21 1 3

F0 Flag 0É um bit de uso geral. Quando so-

bra no registrador não tem funçãoP Parity FlagBit que vai para o nível lógico 1 quan-

do o acumulador tiver um número parde “1”.

Registrador SCON Serial Control (98)Este registrador serve para o con-

trole do canal serial.BIT7 9F SM0BIT6 9E SM1BIT5 9D SM2BIT4 9C RENBIT3 9B TB8BIT2 9A BB8BIT1 99 TIBIT0 98 RI

SM0 e SM1: Estes selecionam omodo em que o 8051 irá operar com ocanal serial, como segue abaixoSM0 SM1 Modo Taxa de transmissão

0 0 0 Freq. Clock /120 1 1 Variável ( Timer 1)1 0 2 Freq. Clock /32 ou 641 1 3 Variável ( Timer 1)

SM2Possui várias finalidades, dependen-

do de que modo foi selecionado:Modo 0: não tem qualquer efeito no

funcionamento do canal serial, deven-do ficar em zero.

Modo 1: não gera interrupção seestiver setado e o stop bit recebido forilegal.

Modo 2 e 3: habilita a comunicaçãoentre vários microcontroladores, nestesmodos não é gerada interrupção se es-tiver setado, e se o nono bit de dadosenviado for zero.

REN Reception Enable (habilita re-cepção)

Se estiver setado habilita a recep-ção tão logo um start bit seja detectado,se estiver resetado desabilita a recep-ção.

TB8Nos modos 2 e 3 indica o estado do

nono bit a ser transmitido, pode sersetado ou resetado por software.

RB8Não é usado no modo 0 , e no modo

1 indica o estado do stop bit recebido,desde que SM2 esteja zerado. Nos mo-dos 2 e 3 indica o estado do nono bitque foi recebido.

TIÉ uma flag de requerimento de in-

terrupção de transmissão, é setada pelohardware após a transmissão do oitavobit de dados quando no modo 0, e nosoutros modos ao início do stop bit e deveser zerado por software da rotina deatendimento para permitir novas inter-rupções.

RIÉ uma flag de requerimento de in-

terrupção na recepção, é setada pelohardware após a recepção do oitavo bitde dados quando no modo 0, e nos ou-

tros modos a meio tempo de recepçãodo stop bit e deve ser zerado porsoftware da rotina de atendimento parapermitir novas interrupções.

Registrador TCON time control (88)BIT7 8F TF1BIT6 8E TR1BIT5 8D TF0BIT4 8C TR0BIT3 8B IE1BIT2 8A IT1BIT1 89 IE0BIT0 88 IT0

TF1Sempre que ocorrer um estouro de

contagem no contador 1, este bit serálevado a nível alto gerando o pedido deinterrupção do T/C 1 e será levado aonível baixo automaticamente depois deser atendida a interrupção.

TR1Será levado ao nível alto para ligar o

contador 1(iniciando a contagem) e le-vado ao nível baixo quando quiser des-ligar o contador 1(parar a contagem) porsoftware.

TF0Sempre que ocorrer um estouro de

contagem no contador 0, este bit serálevado ao nível alto gerando o pedidode interrupção do T/C 0 e será levadoao nível baixo automaticamente depoisde ser atendida a interrupção

TR0Será levado ao nível alto para ligar o

contador 0(iniciando a contagem) e le-vado ao nível baixo quando quiser des-ligar o contador 0 (parar a contagem)por software.

IE1Esse bit será levado ao nível alto

quando for detectado um sinal de nívelbaixo no pino INT1, sinalizando o pedi-do de interrupção, e será levado ao ní-vel baixo logo depois que a interrupçãofor atendida via hardware.

IT1Indica qual o processo para que haja

a chamada de interrupção INT1. Se emnível alto a interrupção será aceita natransição negativa neste pino permane-cendo pelo menos 12 períodos de clock,se em nível baixo a interrupção seráaceita apenas por nível baixo no pino.

IE0Esse bit será levado ao nível alto

quando for detectado um sinal de nívelbaixo no pino INT0 sinalizando o pedi-do de interrupção, e será levado ao ní-vel baixo logo depois que a interrupçãofor atendida via hardware.

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

Page 8: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

IT0Indica qual o processo para que haja

a chamada de interrupção INT0. Se emnível alto a interrupção será aceita natransição negativa neste pino permane-cendo pelo menos 12 períodos de clock,se em nível baixo a interrupção seráaceita apenas por nível baixo no pino.

Registrador TMOD time mode (89)BIT7 GateBIT6 C/T1BIT5 M1.1BIT4 M0.1BIT3 GateBIT2 C/T0BIT1 M1.0BIT0 M0.0

GateEste bit tem por função escolher

como o T/C1 será habilitado. Se for 0(função temporizador), o T/C1 estaráhabilitado, iniciando tal contagem quan-do o bit TR1(no registrador TCON) for 1.Se o GATE for 1 (função contador), o T/C1 estará habilitado quando TR1 e INT1estiverem em 1 simultaneamente.

C/TEste bit seleciona a função de con-

tador ou temporizador. Se o bit T/C1 for0, a função é de temporizador e o sinalserá interno. Se o bit T/C1 for 1, a fun-ção será de contador e o sinal será ex-terno.

M1.1 e M0.1Estes dois bits servem para deter-

minar em que modo o C/T1 irá traba-lhar, como segue a tabela a baixo.

M1.1 M0.1 Modo Operação0 0 0 C/T 1 de 8 bits

com clock /320 1 1 C/T1 de 16bits1 0 2 C/T1 de 8 bits com

recarga automática1 1 3 C/T1 de 8 bits. Dois

contadores de 8 bits

GateEste bit tem por função escolher

como o T/C0 será habilitado. Se for 0(função temporizador), o T/C0 estaráhabilitado iniciando tal contagem quan-do o bit TR0(no registrador TCON) for 1.Se o GATE for 1 (função contador) o T/C0 estará habilitado quando TR0 e INT0estiverem em 1 simultaneamente .

C/TEste bit seleciona a função de con-

tador ou temporizador. Se o bit T/C0 for0, a função é de temporizador e o sinalserá interno. Se o bit T/C0 for 1, a fun-ção será de contador e o sinal será ex-terno

M1.0 e M0.0

M1.0 M0.0 Modo Operação0 0 0 C/T 0 de 8 bits com

clock /320 1 1 C/T0 de 16bits1 0 2 C/T0 de 8 bits com

recarga automática1 1 3 C/T0 de 8 bits.Dois

contadores de 8 bits

Essa tabela também faz parte dosregistradores de funções especiais, po-rém não são bits endereçáveis , portan-to seus bits não tem nomes, e os regis-tradores só podem ser acessados peloendereço dos bytes.

8D Time High 1 TH18C Time High 0 TH08B Time Low 1 TL18A Time Low 0 TL087 Power Control Register PCON83 Data Pointer High DPH82 Data Pointer Low DPL81 Stack Pointer SP

TH1 Time High 1 (8D) e TL1 TimeLow 1 (8B)

São registradores de 8 bits que emconjunto com registradores de 16 bitssão chamados de Time 1, Temporizadore contador.

TH0 Time High 0 (8C) e TL0 TimeLow 0 (8A)

São registradores de 8 bits que emconjunto com registradores de 16 bitssão chamados de Time 0: Temporizadore contador.

PCON Power Control ( 87 )Esse registrador é usado para alte-

rar modos de funcionamento domicrocontrolador com relação ao canalserial e consumo de potência.

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0SMOD * * * GF1 GF2 PD IDL

* = bit sem função

SMODDobra a relação de divisão de

frequência na serial.

GF1Bit de uso geral.

FG0Bit de uso geral.

PDBit de Power-Down: modo especial

de trabalho do microcontrolador da sé-rie CMOS, em que o microcontrolador“congela” suas atividades.

IDLBit que ativa o modo “idle”, modo

especial de trabalho do microcontrola-dor da série CMOS em que o microcon-trolador “congela” suas atividades.

DPH Data Pointer High (83) eDPL Data Pointer Low (82)

Esses registradores juntos formamum registrador de 16 bits chamado deDPTR (Data Pointer) e permite criar umendereço de acesso externo.

SP Stack Pointer (81)É um registrador utilizado com pilha

de endereços de retorno de sub-rotina,ele é indiretamente manipulado pelasinstruções CALL , RET e RETI , eacessado diretamente pelas instruçõesPUSH e POP.

Do endereço 30H ao endereço 7F Hda RAM temos registradores comunscom acesso por byte; já do endereço20H até o endereço 2F H, os registra-dores podem ser acessados tanto porbyte como por bits. Do endereço 00 Hao endereço 1F H existem quatro ban-cos de registradores que só são bytesendereçáveis, como mostra a tabelaabaixo.

7F

302F 7F 7E 7D 7C 7B 7A 79 782E 77 76 75 74 73 72 71 702D 6F 6E 6D 6C 6B 6A 69 682C 67 66 65 64 63 62 61 602B 5F 5E 5D 5C 5B 5A 59 582A 57 56 55 54 53 52 51 5029 4F 4E 4D 4C 4B 4A 49 4828 47 46 45 44 43 42 41 4027 3F 3E 3D 3C 3B 3A 39 3826 37 36 35 34 33 32 31 3025 2F 2E 2D 2C 2B 2A 21 2024 27 26 25 24 23 22 21 2023 1F 1E 1D 1C 1B 1A 19 1822 17 16 15 14 13 12 11 1021 0F 0E 0D 0C 0B 0A 09 0820 07 06 05 04 03 02 01 00

REGISTRADORES DE USOGERAL ENDEREÇÁVEIS PORBYTES

Do endereço 00H ao endereço 1FHtemos conjuntos de registradores divi-didos em 4 bancos, sendo que cadabanco com 8 registradores. Esses regis-tradores têm nomes que vão de R0 aR7 ; os registradores de cada banco têmos mesmos nomes, só mudando o en-dereço. Os bancos são acessados porduas flags no registrador PSW, como émostrado na tabela da próxima página.

Qualquer registrador de qualquerbanco pode ser acessado pelo endere-ço imediato ou através do nome (R0 ,R1 , R2 , R3 , R4 , R5 , R6 e R7 ), bastapara isso ter selecionado o banco cor-reto. Obs.: o ponteiro de pilha está apon-tado para o registrador do endereço 07H(R7 do banco 0) sempre que se liga omicrocontrolador, mas poderá ser mu-dado para outro endereço da RAM peloprogramador, se for necessário.

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

Page 9: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

INTERRUPÇÃOA interrupção é uma das mais im-

portantes ferramentas nos sistemas decontrole de um microcontrolador , poisé o processo pelo qual se interrompe aexecução de um programa que está emandamento para uma rotina que trata oque o programador faz de acordo coma necessidade de um evento externo ouinterno. A vantagem da interrupção estána simplicidade do hardware e dosoftware, pois o sistema não precisa fi-car monitorando o funcionamento decertos periféricos. Deve-se, antes demais nada, conhecer alguns conceitossobre propriedades das interrupções.

PrioridadeQuando as interrupções estão habi-

litadas (mais de uma interrupção), paraatendê-las deve ter uma ordem de aten-dimento, impondo qual delas tem queser atendida primeiro, no caso de duasinterrupções chegarem simultaneamen-te.

MascaramentoÉ a forma de se evitar que aconte-

çam certas interrupções, esseprocessoé feito geralmente por software.Existem sistemas que não possuem omascaramento , o que não possibilitaque se desabilite as interrupções viasoftware .

Vetorada e não VetoradaAs interrupções vetoradas são aque-

las que possuem um vetor de interrup-ção (endereço de início de interrupção)fixo e que não pode ser mudado peloprogramador. As não vetoradas sãoaquelas em que o programador pode de-finir o endereço inicial de interrupção.

Tipos de sinaisExistem três tipos de sinais lógicos,

que um sistema pode reconhecer:· Por nível , alto ou baixo· Por borda , de subida ou de descida· Por borda , de subida ou de descida eum nível correspondente.

Tempo para atendimentoO reconhecimento da interrupção

demora um certo tempo para que se-jam feitas as alterações nos registrado-res internos e efetuado o desvio de en-dereço, dependendo do tipo de instru-ção que esteja sendo executada e emque ponto do clock esta instrução está.

INTERRUPÇÕES NA FAMÍLIA 8051No 8051 temos três maneiras de

solicitar as interrupções: por software(instrução), por um periférico externoou pela solicitação de uma interrupçãopor periférico interno(timer / counter ,porta serial etc.). Existem 5 fontes deinterrupções com seus endereços defi-nidos e elas são as mascaráveis INT0 ,INT1, TIMER 0, TIME 1 e SERIAL. Cadainterrupção pode ser individualmentehabilitada ou desabilitada, e tambémpodem ser habilitadas ou desabilitadastodas de uma só vez, como mostra atabela abaixo (obs.: em outros chips dafamília 8051 pode-se ter diferença naquantidade de interrupções. O básico édado pelo 8051).

ENDEREÇO DE DESVIO DEINTERRUPÇÃO

As interrupções no 8051 são“nesting”, ou seja, uma interrupção in-

terrompe a outra que já esteja sendoexecutada, dependendo da prioridadede cada uma . Vamos dar principal aten-ção ao chip 8051. Os outros da famíliapodem ter detalhes de diferença naquantidade de interrupções, mas o bá-sico é dado pelo 8051. As interrupçõesdo microcontrolador 8051 são as seguin-tes:

Interrupção externa INT0 (endere-ço B2h): É um pino físico de interrup-ção que tem que ser habilitado (e tam-bém determinada sua prioridade de atu-ação) via software, conforme veremosfuturamente.

Interrupção externa INT1 (endere-ço B3h): É outro pino físico de interrup-ção semelhante ao INT0.

OBS.: As interrupções INT0 e INT1são pinos do Port P3, exatamente os pi-nos P3.2 e P3.3, endereços B2h e B3h,respectivamente, que, se utilizados paratal, diminuem o tamanho do Port P3 paraoutras aplicações.

Interrupção interna gerada peloTIMER/COUNTER 0: É uma ação deinterrupção interna gerada pelo TIMER_0, que é um periférico interno aomicroprocessador.

Interrupção interna gerada peloTIMER/COUNTER 1: É uma ação deinterrupção interna gerada peloTIMER_1, que é o segundo periféricointerno ao microprocessador.

Interrupção pela Serial: É umaação de interrupção interna gerada peloperiférico SERIAL.

Observação: Estes endereços sãorelativos à ROM/EPROM do microcon-trolador. Logo, se utilizarmos estas in-terrupções, não se poderá gravar umsoftware em cima destes endereços dasreferidas interrupções, senão o sistemase perde! Observe que listamos o pinode “Reset – RST “ como sendo de inter-rupção, pois ele, na verdade, é uma in-terrupção não vetorada com o único pro-pósito de retornar o software ao seuponto inicial.

TEMPORIZADORES / CONTADORES(TIMER 0 e TIMER 1)

O 8051 tem dois registradores de 16bits para timer / counter, timer 0 e timer

Endereço

absoluto

1F

1E

1D

1C

1B

1A

19

18

17

16

15

14

13

12

11

10

0F

0E

0D

0C

0B

0A

09

08

07

06

05

04

03

02

01

00

Nome dos

Registradores

R7

R6

R5

R4

R3

R2

R1

R0

R7

R6

R5

R4

R3

R2

R1

R0

R7

R6

R5

R4

R3

R2

R1

R0

R7

R6

R5

R4

R3

R2

R1

R0

Nome dos

Conjuntos

BANCO

3

BANCO

2

BANCO

1

BANCO

0

Bits no

PSW

RS1 RS0

1 1

RS1 RS0

1 0

RS1 RS0

0 1

RS1 RS0

0 0

Nível de Endereço paraprioridade Fonte Tipo Pino ou Bit atendimento

RESET NÍVEL 9 00001 º INT0 NÍVEL ou BORDA P3.2 00032 º TIMER0 INTERNO/EXTERNO SOFT / P3.4 000B3 º INT1 NÍVEL ou BORDA P3.3 00134º TIMER1 INTERNO/EXTERNO SOFT / P3.5 001B5 º SERIAL RXD DADOS P3.0 0023

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

Page 10: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

1. Todos podem ser configurados paraoperar como timer ou counter (tempori-zador ou contador )

Na configuração timer, o registradoré incrementado todo ciclo de máquina,desde que o ciclo de máquina consistaem 12 períodos do oscilador, proporçãode contagem de 1/12 da freqüência dooscilador.

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. Nestafunção a entrada é amostrada em todociclo de máquina, quando umaamostragem 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 quea transição foi detectada . Se for neces-sário, por exemplo, dois ciclos para de-tectar uma transição, a máxima razãode contagem é de 1 / 24 da freqüênciado oscilador , não existindo restriçõessobre o duty cycle do sinal de entrada.Através do registrador TMOD podemosconfigurar os T/C’s em 4 modos que são:

MODO 0Contador ou temporizador de 8 bits

com divisão de até 32 vezes. Os regis-tradores TH0 ou TH1 recebem o valorde contagem e pode ser até FFh com ovalor escrito pelo software, que tambémpode ser lido a qualquer momento; seocorrer um estouro (overflow) o T/C emquestão gera um pedido de interrupçãoque pode ou não ser aceito pela CPUinterna do microcontrolador. Ainda nes-se modo os registradores TL0 ou TL1com os bits 0, 1, 2, 3 e 4 servem paradeterminar em quanto será dividido osinal de contagem (interno ou externo)podendo ir até 32 pela combinação bi-nária desses bits; os bits 5 a 7 destesregistradores deverão ser ignorados. Afigura 8 mostra o funcionamento.

MODO 1Neste modo temos um T/C de 16

bits e, desta forma, usamos os pares deregistradores TH0/TL0 ou TH1/TL0 paraefetuar a contagem. Quando um estou-ro acontecer ou seja quando o par deregistradores passa de FFFFh para0000h, é setado o bit de overflow ( TF0ou Tf1) forçando uma interrupção, seesta tiver sido previamente programadavia software. Ver figura 9.

MODO 2Nos registradores TL0 ou TL1 tere-

mos o valor de onde começará a conta-gem, e nos registradores TH0 ou TH1teremos 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 seralterado a qualquer momento pelo

Figura 8

Figura 9

Figura 10

software , temos uma grande flexibilida-de para trabalhar com este modo. Ob-serve a figura 10.

MODO 3Neste modo o T/C1 pára sua opera-

ção sem receber pulsos de contagem,e o T/C0 fica com dois sistemas de 8bits, um em TH0 e outro em TL0.

O T/C de 8 bits TL0 será controladopelos os bits TR0 e TF0, enquanto queo outro T/C de 8 bits será controlado pe-los bits TR1 e TF1.

TR1 e TF1Neste modo. T/C 1 pára sua opera-

ção e fica inerte, sem receber pulsos decontagem. Para o T/C 0 temos dois sis-temas de 8 bits, um em THO e outro emTL0. O T/C de 8 bits TL0 será controla-do pelos bits TR0 e TF0, e o T/C de 8bits THO será controlado pelos bits TR1e TF1.

Para o caso de programarmos o T/C0 para o modo 3, podemos programarT/C 1 para qualquer um dos outros mo-

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

Page 11: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

dos restantes, mas este não poderágerar pedido de interrupção, pois o bitde requisição de interrupção do T/C 1estará sendo usado por T/C 0, mas mes-mo assim o overflow neste contadorpoderá ser utilizado para chavear o ge-rador de taxa de transmissão do canalserial. Neste modo, o T/C 0 será habili-tado pelo bit de controle do T/C 1, maisespecificamente TR1, no registro TCONe, ao ocorrer o overflow de TH0, quemserá setado é o bit TF1 e não o TF0.Veja a figura 11.

Se configurarmos o T/C 1 para omodo 3, o registro TL0 poderá ser usa-do como T/C de 8 bits, mas será contro-lado pelos bits GATE, C/T, TR0 e TF0.Neste modo o overflow em TH0 aciona-rá o flag de requisição de interrupçãoreferente ao T/C 1, e o overflow de TL0acionará o flag de requisição de inter-rupção referente ao TC0.

COMUNICAÇÃO DE DADOSPara se transmitir dados entre equi-

pamentos são necessários dispositivosde comunicação de dados.

A transmissão de dados pode serclassificada pela sua forma (paralela ouserial), pela forma do sinal transmitido(analógico ou digital) e pelo sentido dosinal na transmissão (simplex, half-duplex e duplex). Para uma transmissãode dados a longa distância, para umamaior fidelidade é necessário que seconvertam os sinais digitais emanalógicos ao transmitir, e ao receberconverter os sinais analógicos em digi-tais através de aparelhos chamadosmodems. A denominada comunicaçãode dados pode ser feita de duas formas:serial e paralela. Neste trabalho serádada ênfase à comunicação serial, queé mais utilizada.

COMUNICAÇÃO SERIALA comunicação serial é feita com a

transmissão de bytes ou caracteres de

bit em bit, um por vez na sequência. Esteé um modo de comunicação muito re-comendado para transmissões de da-dos a longa distância. A comunicaçãoserial usa níveis de tensão de 0 e a 5 VTTL e, para facilitar a transmissão dedados entre equipamentos diferentes,utiliza-se do código ASCII (AmericanStandard Code for Interchange ofInformation), que representa cadacaracter como uma palavra binária de 8bits. Na comunicação serial em níveisde tensão pode-se ter problemas rela-cionados à distância (como ruídos, porexemplo). Daí o uso de um outro padrãode tensões (no caso do sistema RS-232,utiliza-se de tensões de 30 V), facilitan-do a transmissão de dados por umagrande distância com poucas interferên-cias).

A comunicação serial pode sersíncrona ou assíncrona: na primeira,além dos bits de dados tem-se tambémos denominados bits de sincronismo(bits que ajustam o clock interno do re-ceptor para que este tenha compatibili-dade suficiente para receber os dadosdo transmissor). Além dos bits desincronismo, existem os chamados bitsde parada (bits usados para informar aoreceptor o fim dos bits de dados). Es-ses bits de parada permitem que o re-ceptor confirme se recebeu ou não umainformação corretamente.

No caso da comunicaçãoassíncrona, é transmitido um caracterpor vez, bit a bit; onde existe um bit paraindicar o início da transmissão, chama-do de start bit, e outro para indicar o fimda transmissão, o chamado stop bit. Ostart bit é reconhecido como uma tran-sição do nível alto presente na linha paranível baixo, enquanto que o stop bit éreconhecido pela transição do nível bai-xo para o nível alto. Se o último bit refe-rente ao dado for em nível alto, o siste-ma aguarda um novo start bit, para ini-ciar a recepção de um novo caracter.

Para a comunicação serial existemvários tipos de protocolos de comuni-

cação (normas padronizadas para trans-missão e recepção de dados), tais comoo 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 dedados. Na comunicação serial opera-secom três sistemas de interligação digi-tais: simplex, half–duplex e full-duplex.Figura 12.

No modo simplex, temos apenas umelemento que transmite e um outro querecebe os dados, este modo é muito uti-lizado em impressoras e terminais dedados de bancos.

No modo half-duplex, também temosum elemento que transmite e um outroque recebe, só que não é possível trans-mitir e receber as informações ao mes-mo tempo, de modo simultâneo, comonos walkie-talkies, por exemplo.

No modo full-duplex ou apenasduplex, é possível transmitir e receberdados simultaneamente. O microcontro-lador 8051 tem uma interface serial in-terna que utiliza exatamente deste modode interligação de sistema digital.

Figura 11

Figura 12

INTERFACE SERIAL NO 8051No 8051 a interface serial já é imple-

mentada no próprio chip, e ela é do tipoFull-Duplex ou, conforme usaremos nodecorrer do texto duplex onde, nestecaso, dados podem estar sendo recebi-dos e enviados simultaneamente nohardware sem necessitar a intervençãodireta do programa (a CPU é sinalizadavia interrupção, quando alguma atitudedo programa for precisa: recepção ouenvio de um byte).

Isto significa que o sistema pode re-ceber e transmitir informações simulta-neamente, sendo que para tal temosregistros especialmente destinados paraeste fim. Este registro chama-se SBUF(Serial buffer) e uma escrita no mesmoimplica em transmissão automática dodado escrito: assim como um certo dadoque chegue no pino de recepção impli-cará na automática operação de recep-ção por parte do sistema, independen-temente do controle do usuário (desdeque o canal serial esteja habilitado).

Pode parecer, à primeira vista, quetemos um único registro físico para efe-tuar este trabalho. Isto não é verdade.Temos, na realidade, dois registros como mesmo nome SBUF, sendo que um épara recepção e outro para transmissão.

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

Page 12: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

O reconhecimento é feito pelo sistemaatravés das instruções que o utilizam.Se for instrução de escrita, o registro detransmissão será alterado, e se for ins-trução de leitura, o dado será captadono registro de recepção.

A transmissão é automática ao es-crevermos um dado no registro SBUF,logo, se não desejarmos usar transmis-são serial, basta não endereçarmos esteregistro como destino. É claro que parafazermos uma transmissão é necessá-rio antes configurar parâmetroscaracterizadores da comunicação serial:modo de transmissão, velocidade detransmissão, quantidade de bits de da-dos, quantidade de stop bits e tipo deparidade adotada.

MODO 1 DE OPERAÇÃO DO CANALSERIAL

Neste modo de operação e nos pró-ximos (assíncronos), o pino de recep-ção é o RXD (pino 10, porta P3.0) e ode transmissão é o TXD (pino 11, portaP3.1).

Neste modo são transmitidos/rece-bidos 10 bits em cada pacote, sendo umstart bit (nível 0) seguido de 8 bits dedados e o stop bit (nível 1) (figura 13). Ataxa de transmissão é variável e sua ge-ração será vista em um item a seguir.

Neste modo, na recepção o stop bitvai para o bit RB8 no SCON.

MODO 3 DE OPERAÇÃO DO CANALSERIAL

Este modo é idêntico ao modo 2,exceto pela taxa de transmissão que évariável.

GERAÇÃO DAS TAXASDE SINALIZAÇÃO

Neste item veremos como gerar ta-xas de sinalização variáveis, nos modosque as permitam. Para isto será neces-sário estudarmos o registro de funçãoespecial PCON.

O registrador PCON contém bitspara controle dos modos de potência nochip (para que em caso de falta de ener-gia elétrica, não percamos memória),flags de uso geral é um bit em particu-lar, chamado SMOD, que controla a di-visão da taxa de freqüência do canalserial. Como este bit não é endereçáveldevemos carregar o bit SMOD indireta-mente e se não utilizarmos as funçõesdos outros bits, poderemos deixá-lo em0. Nos modos 1e 3 a taxa de transmis-são é fornecida pelo Timer / Counter,onde cada ordem de transmissão é ge-rada ao ocorrer o overflow deste conta-dor. Para isso, devemos desabilitar ainterrupção deste Timer/Counter .

O Timer/counter 1 pode ser configu-rado para temporizador ou contador emqualquer um dos três modos de opera-ção. O mais comum é usá-lo no modode recarga automática (timer de 8 bits)e neste caso temos a seguinte fórmulasimplificada.

A formula é: (todos os valores emdecimal depois transformar o resultadoem Hex)

COMUNICAÇÃO ENTRE VÁRIOS 8051

Os modos 2 e 3 nos permite interli-gar vários 8051, sendo um deles o mes-tre e os demais escravos. Estainterligação pode ser vista na Figuraabaixo 15.

Nestes modos, os bytes de dadossão compostos de:- um start bit.- 8 bits de dados.- Um nono bit que pode ser 0 ou 1 e quevai para o bit RB8.- Um stop bit.

Na recepção, se SM2 = 1 e RB8 = 1,a interrupção do canal serial será aten-dida. Assim, podemos criar condiçõespara que um 8051 mestre possa enviardados serialmente para vários 8051 ‘es-cravos’, da seguinte forma:

1 – No início do trabalho, todos os‘escravos’ estarão com SM2 = 1 (pron-tos para receber dados, cujo nono bitseja 1).

2 – Quando o 8051 mestre desejarenviar dados para alguns dos ‘escravos’.

3 – Escreverá um em seu bit TB8.4 – Enviará serialmente o endereço

do escravo desejado (8 bits).5 – Como teremos todos os bits dos

‘escravos’ com RB8 em 1, então, todosserão interrompidos para poder verificarse é seu endereço o enviado.

6 – O escravo que for selecionadozerará seu bit SM2 e estará preparadopara receber os dados, os quais deve-rão ter agora o nono bit (RB8) em 0. Osdemais ‘escravos’ permanecerão comSM2 em 1 e, desta forma, não serão

Figura 13

MODO 2 DE OPERAÇÃO DO CANALSERIAL

Neste modo, em cada pacote sãotransmitidos/recebidos 11 bits, sendoum start bit (nível 0) seguido de 8 bitsde dados, um nono bit (de livre escolhado usuário, 0 ou 1) e um stop bit (nível1)(figura 14). A taxa de transmissãopode ser escolhida para 1/32 ou 1/64da freqüência de clock do sistema.

Figura 14

No caso da transmissão, o nono bitpode ser escolhido entre 0 ou 1, ape-nas escrevendo-se o valor desejado nobit TB8 do registro SCON. Assim comono modo 1, o nono bit recebido vai parao bit RB8 no SCON e o stop bit seráignorado.

Opções de Baud-Rate no modo 2Clock Baud-Rate Baud-Rate Erro Bit Carga doutilizado desejado obtido % SMOD Time 111,059 MHz 1.200 1.200 0 0 E8h11,059 MHz 2.400 2.400 0 0 F4h11,059 MHz 9.600 9.600 0 0 FDh11,059 MHz 19.200 19.200 0 1 FDh12,000 MHz 1.200 1.202 0.16 0 E6h12,000 MHz 2.400 2.404 0.16 1 E6h12,000 MHz 9.600 8.923 7 1 F9h12,000 MHz 19.200 20.833 8.5 1 FDh

Baud-Rate=N (256 – TH1)

Clock TH1 = 256 – ( )Clock

N . Baud-Rate

N = 384, se SMOD for = 1.N = 192, se SMOD for = 0.

ou

Figura 15

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

Page 13: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

mais interrompidos, pois os dados têmRB8 = 0 e poderão continuar suas ativi-dades normalmente.

7 – Quando o mestre desejar nova-mente enviar um endereço, bastará en-viar novamente o nono bit em 1, parahabilitara interrupção em todos os ‘es-cravos’.

EXPANSÃO DE I / O

8255A PPI 8255 é uma interface de fina-

lidade geral programável, compatívelcom o 8051, que apresenta as seguin-tes características :

* Alimentação = 5V* três por tas de oito bits cada ,programáveis por software* programação feita utilizando-se ins-truções de entrada e saída (IN e OUT)e uma palavra de controle*operação realizada em três modos dis-tintos: modo 0, modo 1, modo 2.

PinagemOs pinos da 8255 têm a seguinte

configuração mostrados na figura 16,enquanto a figura 17 mostra oendereçamento.

Correspondência entre pino e sinais

PINO

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

SINAL

PA3

PA2

PA1

PA0

RD

CS

GND

A1

A0

PC7

PC6

PC5

PC4

PC0

PC1

PC2

PC3

PB0

PB1

PB2

PB3

PB4

PB5

PB6

PB7

VCC

D7

D6

D5

D4

D3

D2

D1

D0

RESET

WR

PA7

PA6

PA5

PA4

FUNÇÃO

Bit 3 da porta A

Bit 2 da porta A

Bit 1 da porta A

Bit 0 da porta A

Sinal ativo em zero que habilita o envio de dados através da

interface para o microcontrolador através do barramento de dados

Sinal ativo em zero que habilita o funcionamento da interface

Referência 0V

A1 e A0 são conectados no barramento de endereço do sistema ,

usado para selecionar uma das três portas ou registrador da

palavra de controle do 8255

Bit 7 da porta C

Bit 6 da porta C

Bit 5 da porta C

Bit 4 da porta C

Bit 0 da porta C

Bit 1 da porta C

Bit 2 da porta C

Bit 3 da porta C

Bit 0 da porta B

Bit 1 da porta B

Bit 2 da porta B

Bit 3 da porta B

Bit 4 da porta B

Bit 5 da porta B

Bit 6 da porta B

Bit 7 da porta B

Tensão de alimentação

Bit 7 de dados

Bit 6 de dados

Bit 5 de dados

Bit 4 de dados

Bit 3 de dados

Bit 2 de dados

Bit 1 de dados

Bit 0 de dados

Sinal vindo do sistema para limpar os registradores ativos em nível 1

Sinal de controle, ativo em nível zero que habilita a operação

de escrita

Bit 7 da porta A

Bit 6 da porta A

Bit 5 da porta A

Bit 4 da porta A

SOFTWAREO software, também conhecido

como programa, é um conjunto de ins-truções colocadas em um seqüência ló-gica, pela qual o processador poderátomar algumas “decisões” já definidaspelo programador.

A programação de um sistema é aconstrução correta dessa seqüência deinstruções que ele deve realizar paraconduzir à solução de um problema.Essa seqüência é variável, pois o pro-gramador possui uma ampla variedade

Figura 16

de alternativas e opções para atingir osmesmos resultados.

Para se programar um sistema énecessário que se conheça a parte dohardware, ou seja , a arquitetura inter-na do microcontrolador a ser programa-do, seus periféricos, o set de instrução,etc.

INSTRUÇÃOA instrução pode ser definida como

sendo uma “ordem dada para executar

uma certa tarefa”. No microprocessadoressas tarefas podem ser :

- ler ou escrever numa posição dememória;

- fazer uma operação aritmética e ló-gica;

- fazer qualquer outra manipulaçãode dados, etc.

A instrução para um microproces-sador pode ser representada por lingua-gem de máquina, códigos em hexade-cimal ou binário.

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

Page 14: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

Outra maneira de representaçãopode ser feita através dos mnemônicos(códigos que representam umasequência de palavras) de um progra-ma fonte, que serão transformados emlinguagem de máquina (ou linguagemobjeto) por um programa compilador(tradutor).

LINGUAGEM ASSEMBLYA linguagem ASSEMBLY foi a primei-

ra linguagem que surgiu nesta área decomputação, sendo formada pormnemônicos.

Cada mnemônico possui o um códi-go correspondente em hexadecimal, ecada ‘família’ de microcontrolador pos-sui um conjunto de mnemônicos diferen-te. Esta linguagem tem como finalidadefacilitar o manuseio das instruções paradesenvolver programas, desde uma sim-ples rotina até um sofisticado programapara controle industrial.

Todo microcontrolador precisa deum lista de instruções para ser seguidapasso-a-passo, lista essa chamada deprograma, que diz exatamente o que omicrocontrolador deve fazer.

O microcontrolador só faz duas coi-sas: lê e processa números binários.

Cada fabricante de microcontroladordefine os mnemônicos para os seus pro-dutos .

Algumas linguagens assembly utili-zam o mesmo código (instrução de má-quina) para diversas CPU´s (UnidadeCentral de Processamento) porém an-tes de iniciar a tradução deve-se infor-mar ao tradutor para qual CPU deve serfeita a tradução.

A linguagem assembly é classifica-da de baixo nível , porque na elabora-ção do programa há a necessidade deelaborar rotinas para o completo con-trole da CPU.

ASSEMBLER:O tradutor assembler é um progra-

ma de computador que produz um có-digo binário correspondente a cadamnemônico. Os programas de traduçãoavisam quando encontram algum errono programa fonte (programa elabora-do para a CPU).

ESTRUTURA DA LINGUAGEMASSEMBLY

A linguagem ASSEMBLY é divididaem grupos , e nessa ordem:

Label Código de Operando ComentárioOperação ou Endereço

LABELA principal característica da lingua-

gem ASSEMBLY é o uso de label (lê-se‘lêibol).

O label torna a programação emASSEMBLY mais rápida e segura, por-que ao invés de lidar com um endereçoabsoluto, lida-se com um conjunto decaracteres (label). Este artifício é útilpara se seguir o fluxo de dados, e tam-bém quando se acrescenta ou se retiraalguma instrução, pois o novo endere-ço do label é automaticamente corrigi-do pelo programa compiladorAssembler.

A única restrição é que o primeirocaracter do label deve ser sempre umaletra, isto é, ele não pode começar comum número.

CÓDIGO DE OPERAÇÃOO código de operação é simples-

mente a instrução em si. No código deoperação aparecerá apenas o conjuntode caracteres, que representará o tipode instrução, tal como soma, carrega-mento, teste, entre outras.

Fig. 17 - Endereçamento.

EndereçamentoO endereçamento é feito por meio da combina-

ção dos bits de endereço A0 e A1.

A10011

A00101

Porta selecionadaPorta APorta BPorta C

Unidade de controle

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

Page 15: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

OPERANDO OU ENDEREÇOEste grupo é dividido em duas par-

tes. A primeira parte da informação échamada de ‘operando’, sendo a de-signação dada para mencionar o fluxode dados. A segunda é chamada de ‘en-dereço’ e é utilizada pelas instruções de“CALL” e “JMP”.

COMENTÁRIOEste grupo se destina ao comentá-

rio. É considerado muito importante numprograma.

Os comentários facilitam a visuali-zação do fluxo do programa. O comen-tário deve, na maioria das vezes, dizerpara que se destina a instrução, e nãosimplesmente descrevê-la.

DELIMITADORESOs delimitadores são usados para

separação dos grupos : label, código deoperação, operando ou endereço e co-mentários.

Um espaço ou um conjunto de es-paços em branco serve para separarcada grupo.

Dois pontos delimitam o fim de umlabel. Em uma ‘pseudo-instrução’ ( ins-trução que não pertence ao conjunto deinstruções da CPU) não há necessida-de de dois pontos depois de um label.

A vírgula separa o operando de en-dereço e o ponto-e-vírgula indica o iní-cio de comentário.

PSEUDO-INSTRUÇÃOPseudo-Instrução é um termo usa-

do em linguagem ASSEMBLY, tambémchamado de “Instrução Especial”.

Pseudo-Instrução pode ser empre-gada na definição de label, definição denome de programa, definição de‘string’(palavra) , definição do endereçoinicial do programa, reserva de área dememória e definição de byte.

Sempre que se define um dadohexadecimal em um programa que co-meça com letra ( A, B, C, D,E, ou F )deve-se colocar um zero na frente; osnúmeros em hexadecimal deverão tera letra “H” no final; os números em bi-nário deverão ter a letra “B”; os núme-ros em octal deverão ter as letras “O” ou“Q” e os números em decimal deverãoter a letra “D” ou somente o próprio nú-mero.

Abaixo estão relacionadas algumaspseudo-instruções importantes:

TITTLE (nome do programa)Esta pseudo-instrução serve para

nomear um programa e, quando esteprograma for impresso, esta pseudo-ins-trução aparecerá em todas as folhas.

DB “ X”Esta pseudo-instrução é usada para

definir um byte para quando se querdefinir um tabela de dados ou para in-

serir um dado no meio do programa.Exemplos:DB “F”DB “FRASES”

ORG (endereço) Esta pseudo-instrução é usada para

definir uma posição de memória de ondeo programa deve começar , ou seja,carrega o PC (Program Counter) com oendereço definido

Exemplo:ORG 08H

EQUEsta pseudo-instrução é usada para

definir um label , (NOME EQU NN)Exemplos:AUXI EQU 82H

ENDEsta pseudo-instrução é usada para

indicar o fim de um programa.

$Esta pseudo-instrução é usada para

representar o endereço onde se locali-za o ‘program counter’, geralmente usa-do em JUMP relativos.

Exemplo:JMP $

CONJUNTO DE INSTRUÇÕESDO 8051

No conjunto de instruções do 8051,elas podem ocupar de um a três bytesna posição de memória de programa egastar de um a quatro ciclos de máqui-na para serem executadas; esta varia-ção no tempo de execução existe por-que as formas de endereçamento sãodiferentes e têm instruções que usammais de um ciclo de busca. Cada ciclode máquina gasta 12 períodos de clock,com um cristal de 12 MHz e cada ciclode máquina tem o tempo de 1µs.

ENDEREÇAMENTOS:

ENDEREÇAMENTO MODO DIRETONeste modo são as instruções que

utilizam diretamente os primeiros 128endereços das RAM internas , registra-dores de I/O ,status e controle, logo apóso seu ‘opcode’ (código da instrução).

Exemplos:

MOV A, XXH = Move para o acu-mulador o conteúdo do endereço XXH

MOV XXH, A = Move para oendereço XXH, o conteúdo do acumu-lador

MOV XXH,YYH = Move para oendereço XXH, o conteúdo do endere-ço YYH

ADD A, XXH = Grava no acu-mulador o resultado da soma deste como conteúdo de memória do endereçoXXH

ENDEREÇAMENTO MODO INDIRETONeste modo o endereço alvo é obti-

do indiretamente através dos registra-dores R0 e R1.

Exemplos:MOV R1, #44H = Grava no regis-

trador R1 o valor 44 H

MOV @R1, #77 = Grava o valor77 no endereço 44H, que foi obtido in-diretamente

ANL A, @R1 = Grava o resulta-do da operação AND entre o acumula-dor e o que estiver no endereço 44H.Esse resultado é gravado no acumula-dor.

MODO REGISTRADORNa utilização deste modo há a inclu-

são do nome do registrador no opcode,ocasionando a economia de um byte deendereço. Os bits RS1 e RS0 do regis-trador PSW selecionarão o banco deregistradores (0, 1, 2 e 3) que irão afe-tar o registrador.

Exemplos:MOV R4, A = Grava o conteúdo

do acumulador no registrador R4

MOV A, Rn = Grava o conteúdo doregistrador Rn no acumulador

MOV R3, #44H = Grava o valorhexadecimal de 44 no registrador R3

DEC R2 = Decrementa o conteúdodo registrador R2

XRL A, Rn = Grava o resultado daoperação XOR entre o acumulador e oregistrador Rn. Este resultado é grava-do no acumulador

XCH A, R6 = Alterna os dadosentre o registrador R6 e o acumulador

CJNE R5, #33.rel = Faz a compa-ração do conteúdo do registrador R5com o valor 33. Se estes forem diferen-tes, daí o fluxo de execução é desviadopara o endereço indicado por ‘rel’.

MODO ESPECÍFICOA REGISTRADOR

Aqui utiliza-se de instruções de ape-nas um byte, uma vez que o registrador(no caso o do exemplo) já estará incluí-do no opcode.

Exemplos:DA A = Converte o conteúdo do

acumulador em código BCD

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

Page 16: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

RL A = Rotaciona para a esquer-da os bits do acumulador

MUL AB = Multiplica o conteúdodo acumulador pelo conteúdo do regis-trador B, gravando a parte mais signifi-cativa do resultado em B e a menos sig-nificativa no acumulador

CLR C = Escreve no flag carry odígito “0”

INC DPTR = Incrementa o con-teúdo do registrador de 16 bits. DPTR.

MODO CONSTANTE IMEDIATOEste modo permite que possa ope-

rar com dados diretamente na instrução.Exemplos:

MOV B, #54 = Grava o valor 54 noregistrador B

MOV R3, #87H = Grava o valor87 em hexadecimal no registrador R3

ORL A, #67 = Grava no acumula-dor o resultado de uma operação ORentre o acumulador e o valor 67.

MODO ENDEREÇAMENTO À MEMÓ-RIA DE PROGRAMA

Este modo permite a utilização deinstruções que fazem somente a leiturada memória de programa, sendo muitoutilizadas para a leitura de tabelas naEPROM. O endereço denominado ‘alvo’é formado pela soma do conteúdo doregistrador de 16 bits DPTR (datapointer) ou PC (program counter) com oconteúdo do acumulador.

Exemplos:

MOVC A, @A+DPTR = Grava obyte lido no endereço resultante dasoma do acumulador com o registradorde 16 bits DTPR , no acumulador.

MOVC A, @A+PC = Grava o bytelido no endereço resultante da soma doacumulador com o registrador de 16 bitsPC , no acumulador.

MODO ENDEREÇAMENTO À MEMÓ-RIA DE DADOS EXTERNA

Este modo permite o acesso à me-mória RAM externa, pela instruçãoMOVX. Acesso este feito através de pon-teiros de 16 bits (@ DPTR e @Ri), deforma indireta. Na utilização do ponteiro@Ri, os 8 bits menos significativos es-tarão no registrador Ri (R0 ou R1) e os8 bits restantes estarão na porta P2, for-mando assim o endereço de 16 bits.

Exemplos:

MOVX @DPTR, A = Grava o valordo acumulador no endereço DPTR, namemória RAM externa.

MOVX A, @Ri = Grava o conteú-do do endereço X: (Ri + P2), no acumu-lador.

TIPOS DE INSTRUÇÕESOs microcontroladores da família

8051 têm vários tipos diferentes de ins-truções, sendo cada uma representadapor seu mnemônico e pelo código emhexadecimal.

Estas instruções são mostradas aseguir:

As anotações seguintes são usadasnas tabelas a seguir (modo deendereçamento).Rn pode ser registradores

de R0 a R7Ri indica registrador R0 ou R1@Ri endereçado pelo valor

de R0 ou R1#Dado valor constante, numeral

de 8 bits: #20H(hex),#30(dec), #01010101B(bin)

#Dado16 valor constante, numeral de16 bits: #1FF2H(hex)

Direto um endereço de memóriaRAM interna (8 bits),registradores de status e

controles, e portasEnd16 endereço de 16 bits para

ROM (usado por LCALL eLJMP)

End11 endereço de 11 bits paraROM (usado porACALL e AJMP)

rel endereço relativoou utilização de label

bit variável da RAM interna,bits de I/O , bits de statuse controle

TABELASAs tabelas a seguir mostram os

mnemônicos e suas descrição.

Tabela de Operações AritméticasMnemônicoDescriçãoADD A,RnSoma o conteúdo de Rn com ACC, o resul-tado da soma é gravado no ACC.ADD A, diretoSoma o conteúdo da posição de memóriacom ACC, o resultado é gravado no ACC.ADD A, @RiSoma o conteúdo da posição de memóriaindicado por Ri (R1 ou R0) com ACC, gra-vando o resultado no ACC.ADD A, # dadoSoma o dado ao ACC. O resultado é grava-do no ACC.ADDC A, RnSoma o conteúdo de Rn (R0 à R7) ao ACC,e com a flag carry, o resultado é gravadono ACC.

ADDC A, diretoSoma o conteúdo da posição de memóriacom o ACC, e com flag carry, o resultado égravado no ACC.ADDC A, @RiSoma o conteúdo da posição de memóriaindicado por Ri (R1 ou R0) com o ACC, ecom a flag carry, o resultado é gravado noACC.ADDC A, # dadoSoma o dado ao ACC, e a flag carry, o re-sultado é gravado no ACC.SUBB A, RnSubtrai do ACC, o conteúdo de Rn (R0 àR7) e o ‘vem um’ (borrow), o resultado égravado no ACC.SUBB A, diretoSubtrai do ACC. o conteúdo da posição dememória e o ‘vem um’ (borrow), o resultadoé gravado no ACCSUBB A, @RiSubtrai do ACC, o conteúdo da posição dememória indicado por Ri (R1 ou R0) e ovem um (se existir) o resultado é gravadono ACC.SUBB A, # dadoSubtrai do ACC, o dado e o ‘vem um’ (seexistir), o resultado é gravado no ACC.INC ASoma 1 ao ACC.INC RnSoma 1 ao conteúdo de Rn (R0 a R7).INC diretoSoma 1 ao conteúdo da posição de memó-ria.INC @RiSoma 1 ao conteúdo de memória indicadopor Ri (R0 ou R1).DEC ASubtrai 1 do ACC.DEC RnSubtrai 1 do conteúdo de Rn (R0 a R7).DEC diretoSubtrai 1 do conteúdo da posição de me-mória.DEC @RiSubtrai 1 do conteúdo da posição de me-mória indicado por Ri (R0 ou R1).INC DPTRSoma 1 ao registrador DPTR.MUL ABMultiplica o conteúdo do ACC pelo conteú-do do registrador B. O resultado fica em B(MSB) e ACC (LSB)DIV ABDivide o conteúdo do ACC pelo conteúdodo registrador B. O resultado fica em A e oresto em B.DA AConverte em BCD, o conteúdo do ACC.

Tabela de Operações LógicasMnemônicoDescriçãoANL A, RnGrava no acumulador o resultado da ope-ração lógica AND entre o acumulador eregistrador Rn

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

Page 17: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

ANL A, diretoGrava no acumulador o resultado da ope-ração lógica AND entre o acumulador econteúdo do endereço “direto”ANL A, @RiGrava no acumulador o resultado da ope-ração lógica AND entre o acumulador e oconteúdo endereçado pelo registrador RiANL A, #dadoGrava no acumulador o resultado da ope-ração lógica AND entre o acumulador e odadoANL direto, AGrava no endereço “direto” o resultado daoperação lógica AND entre o endereço “di-reto” e o acumuladorANL direto,#dadoGrava no endereço “direto” o resultado daoperação lógica AND entre o endereço “di-reto” e o dadoORL A, RnGrava no acumulador o resultado da ope-ração lógica OR entre o acumulador e re-gistrador RnORL A, diretoGrava no acumulador o resultado da ope-ração lógica OR entre o acumulador e con-teúdo do endereço “direto”ORL A, @RiGrava no acumulador o resultado da ope-ração lógica OR entre oacumulador e o conteúdo endereçado peloregistrador RiORL A, #dadoGrava no acumulador o resultado da ope-ração lógica OR entre o acumulador e dadoORL direto, AGrava no endereço “direto” o resultado daoperação lógica OR entre o endereço “di-reto” e o acumuladorORL direto,#dadoGrava no endereço “direto” o resultado daoperação lógica OR entre o endereço “di-reto” e o dadoXRL A, RnGrava no acumulador o resultado da ope-ração lógica XOR entre o acumulador eregistrador RnXRL A, diretoGrava no acumulador o resultado da ope-ração lógica XOR entre o acumulador econteúdo do endereço “direto”XRL A, @RiGrava no acumulador o resultado da ope-ração lógica XOR entre oacumulador e o conteúdo endereçado peloregistrador RiXRL A, #dadoGrava no acumulador o resultado da ope-ração lógica XOR entre o acumulador e odadoXRL direto, AGrava no endereço “direto” o resultado daoperação lógica XOR entre o endereço “di-reto” e o acumuladorXRL direto,#dadoGrava no endereço “direto” o resultado daoperação lógica XOR entre o endereço “di-reto” e o dado

CLR AZera o acumuladorCPL AInverte todos os bits do acumuladorRL ARotaciona todos os bits do acumulador paraesquerdaRLC ARotaciona todos os bits do acumulador paraesquerda junto com a flag carryRR ARotaciona todos os bits do acumulador paradireitaRRCRotaciona todos os bits do acumulador paradireita junto com a flag carrySWAP ATroca os nibbles do acumulador (equivalea 4 instruções RL A)

Transferência de DadosMnemônicoDescriçãoMOV A, RnCarrega o acumulador com o conteúdo doregistrador RnMOV A, diretoCarrega o acumulador com o conteúdo doendereço “direto” (endereços dos registra-dores internos)MOV A, @RiCarrega o acumulador com o conteúdo en-dereçado pelo registrador RiMOV A, #dadoCarrega o acumulador com o dadoMOV Rn, ACarrega o registrador Rn com o conteúdodo acumuladorMOV Rn, diretoCarrega o registrador Rn com o conteúdodo endereço “direto”MOV Rn, #dadoCarrega o registrador Rn com o dadoMOV direto, ACarrega o endereço “direto” com o conteú-do do acumuladorMOV direto, RnCarrega o endereço “direto” com o conteú-do do registrador RnMOV direto1,direto2Carrega o endereço “direto1” com o con-teúdo endereço2 “direto2”MOV direto, @RiCarrega o endereço “direto” com o conteú-do endereçado pelo registrador RiMOV direto, #dadoCarrega o endereço “direto” com o dadoMOV @Ri, ACarrega o registrador endereçado por Ricom o conteúdo do acumuladorMOV @Ri, diretoCarrega o registrador endereçado por Ricom o conteúdo do endereço “direto”MOV @Ri, dadoCarrega o registrador endereçado por Ricom o dadoMOV DPTR,dado16Carrega o registrador DPTR com o dadode 16 bits

MOVC A,@A+DPTRCarrega o acumulador com o conteúdo en-dereçado pelo acumulador mais o regis-trador DPTRMOVC A, @A+PCCarrega o acumulador com o conteúdo en-dereçado pelo acumulador mais o regis-trador PCMOVX A, @RiCarrega o acumulador com o conteúdo daRAM externa endereçado pelo registradorRiMOVX A, @DPTRCarrega o acumulador com o conteúdo daRAM externa endereçado pelo registradorDPTRMOVX @Ri, ACarrega o registrador da RAM externa en-dereçado pelo registrador de 8 bits Ri , como conteúdo do acumuladorMOVX @DPTR, ACarrega o registrador da RAM externa en-dereçado pelo registrador de 16 bits DPTR,com o conteúdo do acumuladorPUSH diretoIncrementa o registrador SP e salva na pi-lha o conteúdo do endereço “direto”POP diretoGrava na memória o conteúdo da pilha edecrementa o registrador SPXCH A, RnTroca os dados do acumulador com o re-gistrador RnXCH A, diretoTroca os dados do acumulador com o en-dereço “direto”XCH A, @Ritroca os dados do acumulador com o re-gistrador endereçado por RnXCHD A, @RiTroca os nibbles menos significativos doacumulador com o registrador endereçadopor Ri

Variáveis Booleanas BitMnemônicoDescriçãoCLR C - grava 0 no flag carryCLR BitGrava 0 no bit endereçável (bit de pino oubit de registradores)SETB C - grava 1 no flag carrySETB BitGrava 1 no bit endereçável (bit de pino oubit de registradores)CPL C - Complementa o flag carryCPL BitComplementa o bit endereçável (bit de pinoou bit de registradores)ANL C, BitGrava no flag carry o resultado da opera-ção lógica AND entre o flag carry e o bitendereçável (bit de pino ou bit de registra-dores)ANL C, \BitGrava no flag carry o resultado da opera-ção lógica AND entre o flag carry e o com-plemento do bit endereçável (bit de pino oubit de registradores).

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

Page 18: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

ORL C, BitGrava no flag carry o resultado da opera-ção lógica OR entre o flag carry e o bitendereçável (bit de pino ou bit de registra-dores)ORL C, \BitGrava no flag carry o resultado da opera-ção lógica OR entre o flag carry e o com-plemento do bit endereçável (bit de pino oubit de registradores)MOV C, BitGrava no flag carry o conteúdo do bitendereçável (bit de pino ou bit de registra-dores)MOV Bit, CGrava no bit endereçável (bit de pino ou bitde registradores) o conteúdo do flag carry

Fluxo de ExecuçãoMnemônicoDescriçãoACALL End 11Chamada curta de sub-rotina (11 bits, 2kbytes da posição atual)LCALL End 16Chamada longa de sub-rotina (16 bits , qual-quer posição da EPROM )RETRetorno de sub-rotinaRETIRetorno de sub-rotina de interrupçãoAJMP End 11Desvio curto para endereço de 11 bits, 2kbytes da posição atualLJMP End 16Desvio longo para endereço de 16 bits,qualquer posição da EPROMSJMP relDesvio relativo curtoJMP @A+DPTRDesvio indireto para a posição de memó-ria endereçada pelo acumulador mais o re-gistrador DPTRJZ relDesvia para o endereço “rel” se o acumula-dor for igual a zeroJNZ relDesvia para o endereço “rel” se o acumula-dor for diferente de zeroJC relDesvia para o endereço “rel” se o flag carryestiver setadoJNC relDesvia para o endereço “rel” se o flag carryestiver zeradoJB bit, relDesvia para o endereço “rel” se o bitendereçável estiver setadoJNB bit, relDesvia para o endereço “rel” se o bitendereçável estiver zeradoJBC bit, relDesvia para o endereço “rel” se o bitendereçável estiver setado e depois zera obitCJNE A,direto,relCompara o conteúdo do acumulador como conteúdo do endereço “direto”, e desviapara o endereço “rel” se for diferente

CJNE A,#dado,relCompara o conteúdo do acumulador como dado, e desvia para o endereço “rel” sefor diferenteCJNE Rn,#dado,relCompare o conteúdo do registrador Rn como dado, e desvie para o endereço “rel” sefor diferenteCJNE @Ri,#dado,relCompara o conteúdo do endereçado por Ricom o dado, e desvie para o endereço “rel”se for diferenteDJNZ Rn, relDecrementa o registrador Rn e desvia parao endereço “rel” se o resultado for diferentede zeroDJNZ direto, relDecrementa o endereço “direto” e desviapara o endereço “rel” se o resultado for di-ferente de zeroNOPNão faz nada.

As tabelas a seguir mostram osmnemônicos, tamanho em byte, códigoem hexa e número de ciclo de cada ins-trução. É importante saber o tempo decada instrução quando se for trabalharcom rotinas de tempo.

Operações AritméticasMnemônico e tamanho Código Tempooperandos em byte em hex Ciclo

maq.ADD A,R0 1 28 1ADD A,R1 1 29 1ADD A,R2 1 2A 1ADD A,R3 1 2B 1ADD A,R4 1 2C 1ADD A,R5 1 2D 1ADD A,R6 1 2E 1ADD A,R7 1 2F 1ADD A, direto 2 25 1ADD A, @R0 1 26 1ADD A, @R1 1 27 1ADD A, # dado 2 24 1ADDC A, R0 1 38 1ADDC A, R1 1 39 1ADDC A, R2 1 3A 1ADDC A, R3 1 3B 1ADDC A, R4 1 3C 1ADDC A, R5 1 3D 1ADDC A, R6 1 3E 1ADDC A, R7 1 3F 1ADDC A, direto 2 35 1ADDC A, @R0 1 36 1ADDC A, @R1 1 37 1ADDC A, # dado 2 34 1SUBB A, R0 1 98 1SUBB A, R1 1 99 1SUBB A, R2 1 9A 1SUBB A, R3 1 9B 1SUBB A, R4 1 9C 1SUBB A, R5 1 9D 1SUBB A, R6 1 9E 1SUBB A, R7 1 9F 1SUBB A, direto 2 95 1SUBB A, @R0 1 96 1SUBB A, @R1 1 97 1

SUBB A, # dado 2 94 1INC A 1 04 1INC R0 1 08 1INC R1 1 09 1INC R2 1 0A 1INC R3 1 0B 1INC R4 1 0C 1INC R5 1 0D 1INC R6 1 0E 1INC R7 1 0F 1INC direto 2 05 1INC @R0 1 06 1INC @R1 1 07 1DEC A 1 14 1DEC R0 1 18 1DEC R1 1 19 1DEC R2 1 1A 1DEC R3 1 1B 1DEC R4 1 1C 1DEC R5 1 1D 1DEC R6 1 1E 1DEC R7 1 1F 1DEC direto 2 15 1DEC @R0 1 16 1DEC @R1 1 17 1INC DPTR 1 A3 2MUL AB 1 A4 4DIV AB 1 84 4DA A 1 D4 1

Operações LógicasMnemônico e tamanho Código Tempooperandos em byte em hex Ciclo

maq.ANL A, R0 1 58 1ANL A, R1 1 59 1ANL A, R2 1 5A 1ANL A, R3 1 5B 1ANL A, R4 1 5C 1ANL A, R5 1 5D 1ANL A, R6 1 5E 1ANL A, R7 1 5F 1ANL A, direto 2 55 1ANL A, @R0 1 56 1ANL A, @R1 1 57 1ANL A, #dado 2 54 1ANL direto, A 2 52 1ANL direto,#dado 3 53 2ORL A, R0 1 48 1ORL A, R1 1 49 1ORL A, R2 1 4A 1ORL A, R3 1 4B 1ORL A, R4 1 4C 1ORL A, R5 1 4D 1ORL A, R6 1 4E 1ORL A, R7 1 4F 1ORL A, direto 2 45 1ORL A, @R0 1 46 1ORL A, @R1 1 47 1ORL A, #dado 2 44 1ORL direto, A 2 42 1ORL direto,#dado 3 43 2XRL A, R0 1 68 1XRL A, R1 1 69 1XRL A, R2 1 6A 1XRL A, R3 1 6B 1XRL A, R4 1 6C 1XRL A, R5 1 6D 1XRL A, R6 1 6E 1

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

Page 19: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

XRL A, R7 1 6F 1XRL A, direto 2 65 1XRL A, @R0 1 66 1XRL A, @R1 1 67 1XRL A, #dado 2 64 1XRL direto, A 2 62 1XRL direto,#dado 3 63 2CLR A 1 E4 1CPL A 1 F4 1RL A 1 23 1RLC A 1 33 1RR A 1 03 1RRC A 1 13 1SWAP A 1 C4 1

Transferência de DadosMnemônico e tamanho Código Tempooperandos em byte em hex Ciclo

maq.MOV A, R0 1 E8 1MOV A, R1 1 E9 1MOV A, R2 1 EA 1MOV A, R3 1 EB 1MOV A, R4 1 EC 1MOV A, R5 1 ED 1MOV A, R6 1 EE 1MOV A, R7 1 EF 1MOV A, direto 2 E5 1MOV A, @R0 1 E6 1MOV A, @R1 1 E7 1MOV A, #dado 2 74 1MOV R0, A 1 F8 1MOV R1, A 1 F9 1MOV R2, A 1 FA 1MOV R3, A 1 FB 1MOV R4, A 1 FC 1MOV R5, A 1 FD 1MOV R6, A 1 FE 1MOV R7, A 1 FF 1MOV R0, direto 2 A8 2MOV R1, direto 2 A9 2MOV R2, direto 2 AA 2MOV R3, direto 2 AB 2MOV R4, direto 2 AC 2MOV R5, direto 2 AD 2MOV R6, direto 2 AE 2MOV R7, direto 2 AF 2MOV R0, #dado 2 78 1MOV R1, #dado 2 79 1MOV R2, #dado 2 7A 1MOV R3, #dado 2 7B 1MOV R4, #dado 2 7C 1MOV R5, #dado 2 7D 1MOV R6, #dado 2 7E 1MOV R7, #dado 2 7F 1MOV direto, A 2 F5 1MOV direto, R0 2 88 2MOV direto, R1 2 89 2MOV direto, R2 2 8A 2MOV direto, R3 2 8B 2MOV direto, R4 2 8C 2MOV direto, R5 2 8D 2MOV direto, R6 2 8E 2MOV direto, R7 2 8F 2MOV direto1,direto2 3 85 2MOV direto, @R0 2 86 2MOV direto, @R1 2 87 2MOV direto, #dado 3 75 2

MOV @R0, A 1 F6 1MOV @Ri1 A 1 F7 1MOV @R0, direto 2 A6 2MOV @R1, direto 2 A7 2MOV @R0, dado 2 76 1MOV @R1, dado 2 77 1MOV DPTR,dado16 3 90 2MOVC A,@A+DPTR 1 93 2MOVC A, @A+PC 1 83 2MOVX A, @R0 1 E2 2MOVX A, @R1 1 E3 2MOVX A, @DPTR 1 E0 2MOVX @R0, A 1 F2 2MOVX @R1, A 1 F3 2MOVX @DPTR, A 1 F0 2PUSH direto 2 C0 2POP direto 2 D0 2XCH A, R0 1 C8 1XCH A, R1 1 C9 1XCH A, R2 1 CA 1XCH A, R3 1 CB 1XCH A, R4 1 CC 1XCH A, R5 1 CD 1XCH A, R6 1 CE 1XCH A, R7 1 CF 1XCH A, direto 2 C5 1XCH A, @R0 1 C6 1XCH A, @R1 1 C7 1XCHD A, @R0 1 D6 1XCHD A, @R1 1 D7 1

Variáveis Booleanas BitMnemônico e tamanho Código Tempooperandos em byte em hex Ciclo

maq.CLR C 1 C3 1CLR Bit 2 C2 1SETB C 1 D3 1SETB Bit 2 D2 1CPL C 1 B3 1CPL Bit 2 B2 1ANL C, Bit 2 82 2ANL C, \ Bit 2 B0 2ORL C, Bit 2 72 2ORL C, \ Bit 2 A0 2MOV C, Bit 2 A2 1MOV Bit, C 2 92 2

Fluxo de ExecuçãoMnemônico e tamanho Código Tempooperandos em byte em hex Ciclo

maq.ACALL End 11 2 11 2LCALL End 16 3 12 2RET 1 22 2RETI 1 32 2AJMP End 11 2 01 2LJMP End 16 3 02 2SJMP rel 2 80 2JMP @A+DPTR 1 73 2JZ rel 2 60 2JNZ rel 2 70 2JC rel 2 40 2JNC rel 2 50 2JB bit, rel 3 20 2JNB bit, rel 3 30 2JBC bit, rel 3 10 2CJNE A,direto,rel 3 B5 2CJNE A,#dado,rel 3 B4 2

CJNE R0,dado,rel 3 B8 2CJNE R1,dado,rel 3 B9 2CJNE R2,dado,rel 3 BA 2CJNE R3,dado,rel 3 BB 2CJNE R4,dado,rel 3 BC 2CJNE R5,dado,rel 3 BD 2CJNE R6,dado,rel 3 BE 2CJNE R7,dado,rel 3 BF 2CJNE @R0,#dado,rel 3 B6 2CJNE @R1,#dado,rel 3 B7 2DJNZ R0, rel 2 D8 2DJNZ R1, rel 2 D9 2DJNZ R2, rel 2 DA 2DJNZ R3, rel 2 DB 2DJNZ R4, rel 2 DC 2DJNZ R5, rel 2 DD 2DJNZ R6, rel 2 DE 2DJNZ R7, rel 2 DF 2DJNZ direto, rel 3 D5 2NOP 1 00 1

ALGORÍTMOSAlgorítmo é a descrição de um con-

junto de comandos que resultam numasucessão de ações. Geralmente, um al-goritmo se destina a resolver uma ação,fixar um padrão de comportamento a serseguido ou uma norma de execução aser trilhada para se atingir um resultadofinal ,a solução de um problema.

Exemplo:Algoritmo do “programa soma”

“programa soma” em assembly (8051)

A←10 MOV A,#0AHB←05 MOV B,#05HR0←A+B ADD AB

MOV R0,A

FLUXOGRAMAO fluxograma é uma representação

gráfica das tarefas de um programa, pormeio de símbolos que fornecem a se-qüência de um processo. O fluxogramaajuda a organizar o programa, permitin-do o seu delineamento e possibilitandoseguir passo- a- passo o que será exe-cutado nele.

Existem estruturas, definições rigo-rosas das regras de um fluxograma euma variedade de símbolos para a cons-trução do mesmo, o que é interessanteseguir, principalmente quando se tratade um projeto complexo onde se encon-tram várias pessoas no mesmo projeto,programando partes diferentes do flu-xograma. Com um fluxograma bemestruturado fica fácil corrigir eventuaiserros que possam surgir no decorrer doprojeto.

Para o programador de microcon-trolador é preferível que ele estruture oseu fluxograma, podendo assim criar umestilo individual, pois não convém de-terminar princípios fixos ou normas defuncionamento, mesmo porque os pro-

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

Page 20: Tutorial) Saber Eletronica - Mini Curso de Micro Control Ad Or (8051)

gramas para os microcontroladores sãomuito pessoais. Programas diferentespodem chegar ao mesmos resultados,e o fluxograma depende do sistema, dotipo de equipamento para qual será fei-to o programa, do tipo da linguagem, etc.

O fluxograma não é um elementoindispensável ao desenvolvimento deum programa, porém, sem ele se tornamais difícil qualquer alteração ou corre-ção. O fluxograma deve ser feito com avisualização do problema a ser resolvi-do passo-a-passo, e o programa deveser feito por partes, e testado a cadaparte para que fique mais simples de-tectar e solucionar qualquer tipo de erro.As alterações devem ser bem analisa-das porque poderão influenciar em ou-tras partes do programa.

Essencialmente, o projeto de um pro-grama a ser processado por sistemadeve ter os seguintes procedimentos:- análise do problema- elaboração do fluxograma- escrever o programa em linguagemsimbólica- traduzir o programa para linguagem demáquina- testar e, se necessário corrigir,

Na análise do problema devem serdeterminados de maneira bem claraquais os objetivos a ser alcançados,exatamente que tarefa deve ser realiza-da e definir todo o hardware do sistema.O fluxograma deve ser dividido em ta-refas e a definição da sequência que es-tas tarefas deve-se executadas incluin-do-se decisões.

Para escrever o programa deve serprimeiramente determinar que tipo delinguagem será utilizada, se uma lingua-gem de baixo nível ou alto nível.

A tradução do programa para lingua-gem de máquina é feita normalmentepor um programa copilador já instaladono PC e depende da linguagem usadapara escrever o programa. O teste podeser feito através de um programa simu-lador ou diretamente no sistema paraqual o programa esta sendo escrito.

Alguns símbolos utilizado emfluxogramas são apresentados aseguir.

TERMINALPonto de início, térmi-no ou interrupção deum programa.

PROCESSAMENTOUm grupo de instru-

ções que executam uma função deprocessamento do programa.

DECISÃOIndica a possibilidadede desvios para di-versos pontos doprograma

PROCESSO PRÉ-DEFINIDOIndica uma rotina que será executa-da fora do programaprincipal (sub-rotinas)

CONECTOR FORA DEPÁGINAUma entrada ou saída deuma página para outrapágina do diagrama

FLUXOIndica a direção do fluxode dados ou de umprocessamento

CONEXÃOIndica a rota de prossegui-mento do fluxograma

ENTRADA / SAÍDAQualquer função relaci-onada com dispositivode entrada ou saída ge-néricos

SUB-ROTINAUm grupo de opera-ções separadas dofluxo do programa

VISORSaída de informaçõesatravés de vídeo oudisplay

MODIFICAÇÃO DEPROGRAMAQualquer funçãoque altera o próprioprograma

TECLADOEntrada de informa-ções através de te-clado. n

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