114
MICROPROCESSADORES MICROCONTROLADOR: É um circuito eletrônico que tem em um único chip, uma Unidade Central de Processamento ou CPU, elementos tais como memórias ROM e RAM, temporizadores, contadores, canais de comunicação e conversores A/D e D/A. É um componente eletrônico dedicado a certas tarefas específicas. MICROPROCESSADOR: É um circuito igual ao microcontrolador, porem utiliza vários componentes externos para realizar as suas funções. Devido à utilização destes periféricos, o microprocessador realiza mais tarefas que o microcontrolador. A figura 1 mostra o diagrama em blocos simplificado de um sistema microprocessado, onde pode ser analisado seu princípio de funcionamento. Figura 1: diagrama em blocos de um sistema simplificado, microprocessado. A descrição das partes que constituem este diagrama é a seguinte: MICROPROCESSADOR: Osmar 1 Memória ROM de programa Memória RAM de dados Power on reset Cloc k Alimenta ção Circuito de seleção Portas de entrada e saída Micro processa dor Interrup ções Barramento de endereços e controle Barramento de dados

Apostila de Microprocessadores

Embed Size (px)

DESCRIPTION

Microprocessadores ETMSL

Citation preview

MICROPROCESSADORESMICROCONTROLADOR: um circuito eletrnico que tem em um nico chip, uma Unidade Central de Processamento ou CPU, elementos tais como memrias ROM e RAM, temporizadores, contadores, canais de comunicao e conversores A/D e D/A. um componente eletrnico dedicado a certas tarefas especficas.MICROPROCESSADOR: um circuito igual ao microcontrolador, porem utiliza vrios componentes externos para realizar as suas funes. Devido utilizao destes perifricos, o microprocessador realiza mais tarefas que o microcontrolador.

A figura 1 mostra o diagrama em blocos simplificado de um sistema microprocessado, onde pode ser analisado seu princpio de funcionamento.

Figura 1: diagrama em blocos de um sistema simplificado, microprocessado.A descrio das partes que constituem este diagrama a seguinte:

MICROPROCESSADOR:

o componente que possui diversos circuitos internos que faz o controle de todas as operaes do sistema e execuo de instrues do programa gravado na memria de dados. Estas instrues podem ser relativas a operaes lgicas, aritmticas, de acesso s portas de entrada e sada e acesso memria de dados ou programa do usurio.

Tem-se a, o crebro do sistema. Nele esta localizada a CPU, ou seja, Central Processing Unit ou Unidade Central de Processamento.

MEMRIA DE PROGRAMA:

uma memria no voltil que armazena o programa a ser executado pelo microprocessador, tais como programa monitor e sub rotinas.MEMRIA DE DADOS:

uma memria voltil que armazena os dados a serem processados, provenientes do programa do usurio.

CIRCUITO DE CLOCK ou RELGIO:

responsvel pelo fornecimento de um sinal de onda quadrada que habilita as portas lgicas que compem os circuitos do microprocessador e faz com que seus circuitos internos funcionem.

POWER ON RESET:

responsvel pela gerao de um sinal chamado reset que faz com que o microprocessador ao ser energizado comece a funcionar sempre em uma condio pr estabelecida. Isto necessrio para se ter uma organizao interna do microprocessador, pois se assim no o fosse o microprocessador funcionaria aleatoriamente sem executar uma tarefa.

CIRCUITO DE SELEO:

responsvel pelo fornecimento dos sinais de seleo e habilitao da memria de dados, memria de programa, das portas de entrada e sada, sempre em conformidade com as instrues que esto sendo executadas pela CPU.BARRAMENTO DE DADOS:

Representam as linhas que interligam a CPU s portas de entrada e sada, e s memrias. Este conjunto de linhas bidirecional, e a CPU as utiliza para leitura ou escrita em dispositivos de entrada e sada ou memrias.

BARRAMENTO DE ENDEREO:Representam as linhas que interligam a CPU s memrias e ao circuito de seleo. Este conjunto de linhas unidirecional. a CPU que fornece os endereos em resposta as instrues recebidos.

BARRAMENTO DE CONTROLE:

Representam as linhas que interligam a CPU s memrias, perifricos e ao circuito de seleo. A CPU sempre fornece sinais de controle, em resposta s instrues recebidas.PRINCPIO DE FUNCIONAMENTO DE UM MICROPROCESSADOR:

Para um microprocessador funcionar, ele executa 3 tarefas, indefinidamente:

1- BUSCA A INSTRUO: O contedo do PC colocado no barramento de endereo.

O microprocessador fornece um sinal chamado de leitura de memria que permitir a busca do contedo deste endereo.

O microprocessador espera o dado vindo da memria e armazena-o em um registro interno, chamado de registro de instruo.

O contedo do PC incrementado, ou seja, aponta para a prxima instruo.2- DECODIFICA A INSTRUO:

Uma vez que o contedo do programa constitudo de escrita em cdigo binrio, o registro de instruo fornece este sinal a um dos diversos circuitos internos do microprocessador para que uma tarefa seja executada. No interior do microprocessador devem existir circuitos lgicos tantos quantos for seu nmero de instrues.3- EXECUTA A INSTRUO:

O circuito acionado na sada do decodificador de instruo executa a instruo.

O microprocessador no sair mais deste ciclo at o fim da execuo de um programa:

BUSCA A INSTRUO.

DECODIFICA A INSTRUO.

EXECUTA A INSTRUO.PROGRAMA: Sequncia de instrues que permite realizar uma determinada tarefa.

A velocidade de operao do microprocessador depende da freqncia do pulso de clock. Quanto maior esta for, mais veloz ele ser. Porem toda estrutura ou hardware associada ao microprocessador deve ter um desenvolvimento tecnolgico e ser compatvel com o equipamento para conseguir responder maior freqncia do pulso de clock sem causar danos ao programa que est sendo executado.A figura 2 mostra a pinagem e a figura 3 o diagrama interno simplificado do microprocessador 80C51.

PORTAS DE ENTRADA/SAIDA:

Porta o conjunto de pontos que podem funcionar como meio de entrada ou sada de dados para o microprocessador. Cada porta constituda de 8 pontos, cada ponto chamado de pino.

P0-0 a P0-7; P1-0 a P1-7; P2-0 a P2-7 e P3-0 a P3-7; so portas de 8 bits, bidirecionais, que pem ser programadas como entrada ou sada.

P0-0 a P0-7: estes pontos sendo programados com nvel lgico 1, fazem os pinos funcionarem com entradas de alta impedncia. Alem disto esta porta tem a funo alternativa de multiplexar dados com o byte inferior de endereos durante o acesso memria externa de dados ou programa.

P1-0 a P1-7: porta com resistor pull-up interno. A programao com nvel lgico 1 faz a porta funcionar como entrada. Quando levados a 0, pelo dispositivo externo o pino fornecer corrente atravs dos resistores pull-up.

Resistor pull-up: resistor ligado a +Vcc de um lado e quando o outro lado aterrado, promove uma circulao de corrente para o circuito a ele ligado. Pull-up: puxa para cima.

P2-0 a P2-7: igual a P1-0 a P1-7.

Alem disto, a porta 2 tem a funo alternativa de fornecer o byte superior de endereos durante o acesso memria externa de dados ou programa.

P3-0 a P3-7: igual a P2-0 a P2-7 e P1-0 a P1-7

Alem disto, os pinos desta porta podem ter as funes ilustradas na tabela 1:RxDP3.0Entrada de dados seriais na recepo serial.

TxDP3.1Sada de dados seriais na transmisso serial.

INT0P3.2Entrada de interrupo externa 0.

INT1P3.3Entrada de interrupo externa 1.

T0P3.4Entrada de clock do temporizador/contador 0.

T1P3.5Entrada de clock do temporizador/contador 1.

WrP3.6Sada do sinal de escrita para a memria externa.

RdP3.7Sada do sinal de leitura para a memria externa.

Tabela 1: outras funes dos pinos P3-0 a P3-7.

PINAGEM DO MICROPROCESSADOR 8051:

A figura 2 mostra a pinagem do microprocessador 8051.

Figura 2: pinagem do microprocessador 8051.

Figura 3: diagrama interno do microprocessador 80C51.ORGANIZAO DAS MEMRIAS:

MAPEAMENTO DE UMA MEMRIA:

o espao de endereo ocupado pela memria. a sua localizao por software.

MEMRIA DE PROGRAMA:

Esta pode ser constituda por uma parte interna de 4KB e outra externa de 60KB, ou somente uma ROM externa de 64KB. B = Bytes. As figuras 4 e 5 mostram o mapeamento da memria de programa nestes dois casos: No microprocessador 8051 existem os pinos EA e PSEN que permitem selecionar estas opes. EA:

External Acess ou Acesso Externo: um pino do microprocessdor que se estiver conectado ao nvel baixo, todo endereamento de programa, de 0000 a FFFF ser buscado na memria ROM externa.

PSEN:

Program Strobe Enable ou Inibio do Programa de Gravao de dados o sinal que habilita o acesso memria de programa.

A lgica de operao dos pinos EA e PSEN a seguinte:

EA = 0 busca os dados somente na ROM externa, quando o pino PSEN estiver com nvel lgico 0.

EA = 1 busca os dados de 0000 a 0FFF na ROM interna e de 1000 a FFFF na ROM externa quando o pino PSEN estiver em nvel lgico 0.

Figura 4: Representao do mapeamento da memria de programa com uma parte interna ao microprocessador e a outra externa.

Figura 5: Representao do mapeamento da memria de programa com configurao totalmente externa.

MEMRIA DE DADOS:

A memria de dados do 8051 constituda de uma SRAM interna, com capacidade de 128B ou 256B, e uma SRAM externa de at 64KB, quando existente.MEMRIA DE DADOS EXTERNA:As figuras 6 e 7 mostram o mapeamento da memria de dados nestes dois casos:

Figura 6: Representao da configurao externa do mapeamento da memria de dados. Os sinais Rd e Wr so gerados pelo 8051 e colocados nos pinos P3-6 e P3-7, respectivamente, para ler ou escrever na memria.Os acessos SRAM interna ou externa so efetuados atravs de instrues. A diferena entre as instrues distinguem estes dois tipos de acesso.MEMRIA DE DADOS INTERNAO acesso a SRAM interna do 8051 pode ter diferentes caractersticas dependendo da regio desta que est sendo acessada. Na regio da SRAM interna compreendida entre o endereo 000 e 127 ou 000 e FE, esto a rea dos registros de uso geral e pilha, enquanto a rea de 128 a 255 ou 80 e FF esto localizados os registros de funes especiais.

Figura 7: Representao da configurao interna do mapeamento da memria de dados.

ACESSO MEMRIA EXTERNA:Quando o sistema microcontrolado utilizar alguma memria externa as portas P0 e P2 interligam o microprocessador s memrias RAM e ROM acordo com a figura 8.

Figura 8: interligao do microprocessador s memrias ROM e RAM.A porta P0 ser usada como barramento de dados e endereos multiplexados, fornecendo a parte baixa dos endereos da memria que se deseja acessar e servindo como ponto de entrada e sada dos dados provenientes da memria RAM e como ponto de entrada dos dados provenientes da memria ROM. Isto est representado na figura 8 como D para dados, Data; e A para endereo, Addres.ALE:

A parte baixa do endereo fica armazenada em um latch externo chamado de Addres Latch Enable, ALE ou latch inibidor de endereo. O microprocessador gera um sinal que permite a escrita desta parte do endereo neste latch.A porta P2 ser usada como barramento da parte alta do endereo e este permanecer neste barramento durante a aquisio de dados. Na figura 8 isto est representado como P2 e A8 a A15.

REGISTROS DE USO GERAL ou REGISTRADORES DE USO GERAL e PILHA:

A rea interna da RAM utilizada pelo microprocessador divida em duas outras partes sendo uma a de registros de uso geral e a outra a pilha. Os registros de uso geral so pequenos segmentos desta memria, de oito bits cuja funo armazenar os dados que sero utilizados pelo programa. A pilha tem a mesma finalidade, porem seu tamanho maior que a de um registro, pois nesta, defini-se seu fundo e colocam-se dados em uma regio maior, em seqncia, como se estivessem empilhados. A figura 9 representa os diversos tipos de registros existentes no 8051 e seus respectivos endereos.

Regio byte

enderevel

Regio Bit e

byte enderevel

Banco 3

R0 a R7

Banco 2

R0 a R7

Banco 1

R0 a R7

Banco 0

R0 a R7

RS1RS0Banco

000

011

102

113

Figura 9: a- Registros de uso geral e pilha. b- Tabela de seleo do banco de registros.Cada um dos 4 bancos de registros representados na figura 8, denominados de R0 a R7 pode ser selecionado preenchendo os bits RS0 a RS1 do registro PSW, conforme o ilustrado na figura 8b.

A outra faixa de endereos de 20 a 7F ou 32 a 127, se caracteriza por acesso via especificao do endereo, ou seja, sem os registros R0 a R7, sendo que o endereo na RAM diretamente colocado na instruo. A regio de endereos, de 20 a 2F ou 32 a 47, tem ainda a caracterstica especial de possibilitar a formao do endereo desejado utilizando um bit qualquer dentro deste espao. REGISTROS DE FUNES ESPECIAIS

Os endereos da RAM interna do 8051 na faixa de 128 a 255, acessam os registros de funes especiais, que so utilizados para exercer certas funes dentro do 8051 tais como: manipular dados das portas de entrada e sada, programar contadores/temporizadores, enviar e receber dados da interface serial, fazer controle de interrupo, etc. A tabela 2 mostra os registros de funo especial com seus respectivos endereos.EndereoRegistro de funo especial

F0Registro B

E0Acumulador - Acc

D0Program Status Word - PSW

B8Interrupt Priority - IP

B0Porta 3 de E/S - P3

A8Interrupt Enable IE

A0Porta 2 de E/S - P2

90Porta 1 de E/S - P1

99Serial Buffer - SBUF

98Serial Control - SCON

8DTimer High 1 - TH1

8CTimer High 0 - TH0

8BTimer Low 1 - TL1

8Timer High 0 - TL0

89Timer Mode - TMOD

88Timer Control - TCON

87Power Control - PCON

83Data Pointer High - DPH

82Data Pointer Low - DPL

81Stack Pointer - SP

80Porta 0 de E/S - P0

Tabela 2: Registros especiais e seus endereos.

REGISTRO APONTADOR DE PILHA, SP:

um registro utilizado para guardar o endereo de memria da pilha onde ser armazenado o prximo dado a ser colocado na pilha, ou seja, este registro aponta para a uma posio de memria logo aps a ultima posio que possui um dado.REGISTRADOR DE INSTRUES, IR:

Quando o microprocessador, ou a CPU, vai executar as instrues contidas na memria, este transfere as instrues desta, para o registro de instruo, IR. O registro de instruo automaticamente usado pelo microprocessador durante cada ciclo de instruo, portanto ele no precisa ser considerado durante os passos da programao.

CONTADOR DE PROGRAMA, PC:

O contador de programa, PC, contem o endereo da memria da prxima instruo a ser executado pela CPU. O microprocessador incrementa automaticamente o PC durante a execuo de cada instruo, sendo que toda vez que necessrio mudar o endereo de execuo basta buscar o que est contido no PC. Este um registro de 16 bits.

ACUMULADOR, A ou ACC:

um registro de uso geral, muito utilizado tanto pelo microprocessador em instrues aritmticas, lgicas, acesso s portas de E/S, acesso a memria externa e controle de perifricos, quanto pelo prprio usurio do microprocessador. A sua utilizao constante e sua importncia to grande que ele recebeu o nome de acumulador. Ele; assim como os outros registros guardam dados temporariamente.REGISTRO DE ESTADO ou REGISTRO DE STATUS, PSW:

Este registro de 8 bits indica o status ou estado do processador, ou seja, indica a ocorrncia de certas condies especiais associadas ao processamento. O formato do registro o apresentado na figura 10.

CYACF0RS1RS0OV - P

Figura 10: Representao do registro PSW.

CY: setado indica a ocorrncia de um carry, vai um.

AC: setado indica a ocorrncia de um carry auxiliar em operao BCD.

F0: bit disponvel para uso geral.

RS1: juntamente com RS0 permite codificar o banco de registros no qual os registros R0 a R7 sero alocados.

RS0: juntamente com RS1 permite codificar o banco de registros no qual os registros R0 a R7 sero alocados.

OV: setado indica a ocorrncia de um overflow em operaes com nmeros sinalizados.P: indica a paridade do acumulador.- : no utilizado.

REGISTRO B:

O registro B utilizado durante as operaes de multiplicao e diviso. Para outras instrues este registro poder ser usado para fazer armazenagem temporria de dados.

REGISTRO APONTADOR DE DADOS, DPTR:

O registro apontador de dados formado por um byte alto, DPH, e por um byte baixo, DPL.

A sua funo de manter um endereo de 16 bits, usado para acessar memrias externas.

Portanto, este registro pode ser utilizado como um registro de 16 bits ou 2 registros independentes de 8 bits.REGISTROS DAS PORTAS 0 a 3, P0-P3:

Os registros P0, P1, P2 e P3 so latchs das portas 0, 1, 2 e 3, respectivamente, com a finalidade de armazenar os dados que sero acessados pela porta.

REGISTRO DE BUFFER DE DADOS SERIAL, SBUF:

O registro de dado serial composto de 2 registros separados, sendo um registro buffer transmissor e outro buffer receptor. nestes registros que ficam os dados a serem transmitidos ou recebidos.REGISTROS TEMPORIZADORES, TH:

So registros utilizados para fazer contadores/temporizadores no microprocessador.

O par de registros TH0,TL0 e TH1,TL1 , formam o registro contador para o temporizador/contador do microprocessador, 0 e 1 respectivamente.REGISTROS DE CONTROLE, IP, IE, TMOD, TCON, SCON e PCON:

Os registros de controle, IE, TMOD, TCON, SCON e PCON armazenam bits que permitem fazer controle e verificar o status do sistema de interrupo, dos temporizadores/contadores e da porta serial.

INTERRUPES

As interrupes param a seqncia normal da execuo de um programa para atendimento imediato a eventos internos ou externos de maior prioridade.

Para que uma interrupo seja atendida, a mesma dever estar devidamente habilitada pelo software e na possibilidade de ocorrncia de mais de uma interrupo simultaneamente, existe uma hierarquia de prioridade de atendimento.

Quando uma interrupo atendida, o valor do registro PC salvo na pilha, de forma a possibilitar o posterior retorno do programa ao ponto em que havia parado.

Ao termino da execuo do evento que originou a interrupo encontra-se uma instruo de retorno que por sua vez busca o dado apontado pela pilha e o coloca no PC.

As interrupes podem ser internas ou externas ao microprocessador.

No 8031, h 5 interrupes:

Interrupo INT0. Externa.

Interrupo INT1. Externa.

Temporizador/contador de eventos T0. Interna.

Temporizador/contador de eventos T1. Interna.

Interface serial. Interna.

PORT ou PORTASo pontos de entrada do exterior para o interior do microprocessador ou de sada deste para o seu exterior.

Estas portas podem ser acessadas durante uma interrupo.

ESQUEMA SIMPLIFICADO DE UM BIT DE UMA PORTA DE ENTRADA/SADA:

Este esquema pode ser visto na figura 11:

Figura 11: esquema simplificado de um bit de uma porta.

Para se ter no pino de sada de uma porta, nvel lgico 1 ou 0, as instrues executam uma escrita no latch, que controla o FET do driver de sada atravs do sinal de sada Q complementado. Quando o FET de sada conduz, o pino estar em nvel lgico 0.

Observa-se que a leitura de um bit de uma porta de E/S apresenta 2 sinais: Um para comandar a leitura do estado do pino que ser o sinal de entrada, para dentro do microprocessador.

Outro comanda a leitura do latch cujo contedo ser o sinal que se deseja enviar para fora do microprocessador. H ento, instrues que lem, modificam e escrevem a sada do latch, tais como:

ANL: ANL P1,A SETB Pn.i: SETB P2,3

ORL: ORL P1,A CLR Pn.i: CLR P3,0

XRL: XRL P1,A MOV Pn.i,C MOV P2.0,C

JBC: JBC P1,0 DJNZ DJNZ P3,rtulo

CPL: CPL P1,0 DEC: DEC P2

INC: INC P1

Cada uma das portas est mapeada na regio dos registros de funes especiais da memria SRAM interna, com endereos especficos, portanto quando se deseja acessar uma porta, pode-se referir ao endereo desta, porem mais conveniente se referir ao nome da porta associada a uma instruo:

A instruo MOV A, P1 por exemplo, l o contedo da porta P1 e guarda o valor desta no acumulador.

Da mesma forma cada um dos bits da porta tem endereo especfico, uma vez que esto em regio de memria de bit enderevel. Portanto quando se deseja acessar um bit de uma porta, pode-se, referir ao endereo deste ou usar a notao porta.bit, como por exemplo:

MOV C, P1.O. Esta instruo faz com que o flag C receba o estado do pino 0 da porta 1.

Todas as 4 portas de 8 bits do 8051, P0, P1, P2 e P3, podem ter seus pinos individualmente usados como entrada ou sada, conectados, por exemplo, a dispositivos simples como chaves e leds, como tambm podem ser usadas como barramentos de 8 bits e interfacear dispositivos perifricos como displays, conversores A/D e D/A. Verifique nas figuras 2 e 3 por exemplo que as portas P0 e P2 ficam destinadas gerao de endereos A0 a A7 em P0 e A8 a A15 em P2, quando acessando memria externa, e a porta P3 apresenta seus pinos dotados de funes alternativas.

Uma particularidade que a porta P0 apresenta a sua sada configurada como dreno aberto, ao contrrio das demais portas que apresentam o resistor de pull-up interno. A porta P0 pode drenar at 8 cargas TTL, ao contrrio das demais que podem drenar no mximo 4.

No port 3, ou porta 3 de entrada e sada, existem 4 terminais de interrupo:

P3.0 recepo serial. RxD.

P3.1 transmisso serial TxD.

P3.2 entrada da interrupo externa. INT0.

P3.3 entrada da interrupo externa. INT1.

Se forem usadas quaisquer das funes especiais do port 3, o mesmo dever ser acessado apenas atravs dos seus bits individuais.

No 8051, pode-se habilitar individualmente cada interrupo, cada uma com dois nveis de prioridade definidos por software. Existe um mecanismo interno de prioridade que define a seguinte ordem de atendimento, na remota possibilidade de ocorrncia simultnea:

Interrupo externa INT0 maior prioridade.

Temporizador/contador de eventos T0

Interrupo externa INT1

Temporizador/contador de eventos T1

Interface serial menor prioridade.

ENDEREOS DAS INTERRUPES:

Estes endereos podem ser vistos na tabela 3:

Interrupo.Endereo.Bit de interrupo.Bit de habilitao.

Interrupo externa 00003 4230EX01

Timer 0000B 4240ET01

Interrupo externa 10013 4250EX11

Timer 1001B 4260ET11

Canal serial.0023 4270ES1

Tabela 3: pontos de interrupo do microprocessador 8031.

Ao aplicar nvel lgico 1 nos bit de interrupo, habilita-se a interrupo que ter acesso ao endereo indicado.

O processo de atendimento de uma interrupo feito por endereos vetoriais, ou seja, quando h uma solicitao de interrupo vai-se sempre para um endereo vetorial que est na memria ROM onde h uma instruo do tipo LJMP onde se coloca o endereo do incio da sub rotina da interrupo. Na tabela 1 onde se tem endereo o primeiro de entrada, o segundo para onde o primeiro o conduz e onde deve ser colocado o endereo da sub rotina a ser executada.

Portanto ao se utilizar uma destas interrupes, no endereo correspondente deve-se colocar uma instruo LJMP para a posio inicial de servio de interrupo.

CIRCUITO DE INTERRUPO

O circuito equivalente de interrupo pode ser visto na figura 11. Neste circuito tem-se:

IE0 e IE1 sinalizam internamente os pedidos de interrupo externa.

1: h pedido. 0: no h pedido ou houve e j foi atendido.

ITO e IT1 determinam se o pedido de interrupo ser por nvel ou transio.

1: o pedido ser por transio, 1 para 0. 0: o pedido ser por nvel, 0.

No registro IP os bits que estiverem com nvel lgico 1 tero o pedido de interrupo atendido de acordo com as seguintes regras:

Uma interrupo de nvel mais alto de prioridade ter preferncia sobre outra de nvel mais baixo. Uma interrupo de nvel alto no poder ser interrompida por outra fonte de interrupo.

Se 2 requisies de diferentes nveis de prioridade forem recebidas simultaneamente, a de maior nvel ser atendida primeiro.

SHAPE \* MERGEFORMAT

Figura 11: circuito eltrico equivalente para fazer interrupes.

Se as requisies tiverem o mesmo nvel de prioridade, uma seleo interna determina qual requisio ser atendido primeiro.

As chaves das requisies que aparecem no esquema da figura 11 so simblicas. Na verdade, estas so eletrnicas e acionadas de acordo com os bits contidos nos seus respectivos registros.

No circuito da figura 11, estando as chaves do registro IP na posio indicada, os pedidos sero atendidos na seqncia apontada pela seta. Se uma das chaves do registro IP for acionada para cima, a entrada a que ela pertence passa a ter prioridade sobre as outras entradas de acordo com as regras estabelecidas. Isto feito por 3 bits mais significativos do registro IP, internamente, pelo microprocessador.

REGISTRO HABILITADOR DE INTERRUPO - IE - BIT ENDEREAVEL:

IE: Interrupt Enable. Endereo: A8.

Usado para habilitar ou desabilitar as interrupes, preenche-se os bits EX0, ET0, EX1, ET1 e ES e sero aceitos se o bit EA estiver com nvel lgico 1.

EAxxESET1EX1ET0EX0

IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0

Representao do registro IE.

A tabela 4 mostra a posio e a funo de cada bit do registro habilitador de interrupo, IE

SmboloPosioFuno.

EAIE.7Se EA = 0 desabilita toda e qualquer interrupo de ser gerada.

Se EA=1 permite habilitar as fontes de interrupo que forem individualmente selecionadas atravs dos bits ES, ET1, EX1, ET0 e EX0.

xIE.6No esta sendo utilizado.

xIE.5No est sendo utilizado.

ESIE.4Habilita ou desabilita a interrupo da porta serial.

ES = 0 desabilita. ES = 1 habilita.

ET1IE.3Habilita ou desabilita a interrupo do temporizador/contador 1.

ET1 = 0 desabilita. ET1 = 1 habilita.

EX1IE.2Habilita ou desabilita a interrupo externa 1.

EX1 = 0 desabilita. EX1 = 1 habilita.

ET0IE.1Habilita ou desabilita a interrupo do temporizador/contador 0.

ET0 = 0 desabilita. ET0 = 1 habilita.

EX0IE.0Habilita ou desabilita a interrupo externa 0.

EX0 = 0 desabilita. EX0 = 1 habilita.

Tabela 4: posio e funo de cada bit do registro IE.

Como exemplo, se fosse necessrio habilitar as duas interrupes externas, o registro IE deveria ter os bits EA, EX1 e EX0 preenchidos com nvel lgico 1, os bits ES, ET1 e ET0 preenchidos com nvel lgico 0 e oestados dos bits IE.6 e IE.5, irrelevantes, podendo ser 0. Assim ter-se-ia:

MOV IE, #10000101 ou seja: MOV IE,#85 cujos cdigos so: 75 A8 85.

onde:

75 o cdigo de MOV

A8 o endereo do registro IE

85 o valor em hexadecimal de 10000101

REGISTRO HABILITADOR DE PRIORIDADE DE INTERRUPO - IP - BIT ENDEREAVEL:

IP: Interrupt Priority. Endereo: 98.

Usado para selecioncar as prioridades de atendimento das interrupes. O formato deste registro apresentado a seguir:

xxxPSPT1PX1PT0PX0

IP.7 IP.6 IP.5 IP.4 IP.3 IP.2 IP.1 IP.0

Timer1 Timer0

Canal serial INT1 INT0

Representao do registro IP.

A tabela 5 mostra a posio e a funo de cada bit do registro de interrupo IP:

Smbolo.Posio.Funo.

xIP.7No esta sendo utilizado.

xIP.6No esta sendo utilizado.

xIP.5No esta sendo utilizado.

PSIP.4PS = 1 permite que a interrupo do canal serial tenha a mais alta prioridade de atendimento.

PS = 0 mantem a ordem de prioridade de atendimento da interrupo do canal serial inalterada.

PT1IP.3PT1 = 1 permite que a interrupo temporizador/contador 1 tenha a mais alta prioridade de atendimento.

PT1 = 0 mantem a ordem de prioridade de atendimento da interrupo temporizador/contador 1 inalterada.

PX1IP.2PX1 = 1 permite que a interrupo externa 1 tenha a mais alta prioridade de atendimento.

PX1 = 0 mantem a ordem de prioridade de atendimento da interrupo externa 1 inalterada.

PT0IP.1PT0 = 1 permite que a interrupo temporizador/contador 0 tenha a mais alta prioridade de atendimento.

PT0 = 0 mantem a ordem de prioridade de atendimento da interrupo do canal serial inalterada.

PX0IP.0PX0 = 1 permite que a interrupo externa 0 tenha a mais alta prioridade de atendimento.

PX0 = 0 mantem a ordem de prioridade de atendimento da interrupo externa 0 inalterada.

Tabela 5: posio e funo de cada bit do registro IP.

Como exemplo, se fosse priorizar a interrupo externa 1 o registro IP poderia ter os bits IP7, IP6 e IP5 preenchidos com nveis lgicos irrelevantes, podendo ser 0, os bits PS, PT1, PT0 e PX0 devem ser preenchidos com nvel lgico 0 e o bit PX1 ser preenchido com nvel lgico 1. Assim ter-se-ia:

MOV IP, #00000100 ou seja: MOV IE,#04 cujos cdigos so: 75 B8 04.

onde:

75 o cdigo de MOV

B8 o endereo do registro IP

04 o valor em hexadecimal de 00000100

REGISTRO TIMER CONTROL - TCON - BIT ENDEREAVEL:

TCON: Timer Control. Endereo: 88.

Usado para ativar as interrupes externas por borda ou nvel.

As interrupes externas INT0 e INT1 podem ser ativadas tanto por nvel quanto por borda de descida, e esta seleo pode ser feita atravs de 4 dos 8 bits do registro TCON.

O formato deste registro com os bits utilizados para estas funes apresentado a seguir:

xxxxIE1IT1IE0IT0

TCON.7 TCON.5 TCON.3 TCON.1

TCON.6 TCON.4 TCON.2 TCON.0

Representao do registro TCON.

A tabela 6 mostra a posio e a funo dos bits 3, 2, 1 e 0 do registro de controle TCON:

Smbolo.Posio.Funo.

xTCON.7No esta sendo utilizado para esta funo

xTCON.6No esta sendo utilizado para esta funo

xTCON.5No esta sendo utilizado para esta funo

xTCON.4No esta sendo utilizado para esta funo

IE1TCON.3Bit de interrupo externa 1. ativado por circuito externo, quando ocorre uma

____

transio de nvel alto para baixo for detectada no pino INT1. zerado por circuito, quando, ao termino da interrupo.

IT1TCON..2Bit de controle do tipo de interrupo 1. ativado por programao para especificar transio de descida do pulso ou nvel baixo para o sinal de interrupo externa.

IE0TCON.1Bit de interrupo externa 0. ativado por circuito externo, quando ocorre uma

_____

transio de nvel alto para baixo for detectada no pino INT0. zerado por circuito, quando, ao termino da interrupo.

IT0TCON.0Bit de controle do tipo de interrupo 0. ativado por programao para especificar transio de descida do pulso ou nvel baixo para o sinal de interrupo externa.

Tabela 6: posio e funo dos bits 3, 2, 1 e 0 do registro de controle TCON.

MNEMNICO DESCRIO NARRATIVA CDIGOS

Exemplo: MOV IE, #81 habilita a interrupo interna. 75 A8 81

MOV TCON, #01 ativa a interrupo INT0 ou INT1 por borda. 75 88 01

REGISTRO TEMPORIZADOR/CONTADOR:

O par de registros TH0, TL0 e TH1, TL1 formam o registro contador para temporizador/contador 0 e 1 respectivamente. Estes registros podem ser configurados para operar como temporizador ou como contador.

Na funo de temporizador, o registro ser incrementado a cada ciclo de mquina. Desde que um ciclo de mquina corresponde a 12 perodos do oscilador, a taxa de contagem ser de 1/12 de freqncia do oscilador.

Na funo contador, o registro ser incrementado em resposta a transio de 1 para 0 do seu correspondente pino de entrada externa, T0 ou T1 da porta 3. Nesta funo os pinos externos sero amostrados durante o estado 5 da fase 2 de todos os ciclos de mquina. Assim, quando uma amostragem indicar um nvel alto em um ciclo e um nvel baixo no prximo ciclo, o contador ser incrementado.

A mxima taxa de contagem ser de 1/24 da freqncia do oscilador, visto que so necessrios 2 ciclos de mquinas para o reconhecimento de uma transio de 1 para 0.

No h nenhuma restrio quanto ao ciclo de trabalho do sinal externo, mas para garantir que o nvel lgico amostrado seja correto, o mesmo dever ter uma durao de pelo menos um ciclo de mquina completo.

A operao como temporizador tem 4 modos possveis.

A seleo de temporizador ou contador, realizada atravs do registro de funo especial TMOD. Este registro dividido em 2 partes iguais que controlam o temporizador 1 e o temporizador 0.

A figura 12 ilustra a arquitetura dos temporizadores/contadores, T/C, do microprocessador 8051, evidenciando seus registros internos:

Figura 12: diagrama em blocos do circuito dos T/Cs, do microprocessador 8051.

REGISTRO DE CARGA DO VALOR INICIAL DE CONTAGEM - TH0, TL0 e TH1, TL1

Estes dois registros de 8 bits, TH0, TL0 ou TH1, TL1, so usados para fazer a carga inicial do valor de contagem dos T/Cs, sendo sempre de forma crescente at o valor mximo, que pode ser de 8 ou 16 bits, conforme THn e TLn sejam usados separados como contadores de 8 bits ou aos pares como contadores de 16 bits. Aps este valor mximo de contagem ter sido atingido o sinalizador TF0 ou TF1 setado indicando esta ocorrncia e caso a ocorrncia associada ao T/C em questo esteja habilitada, uma interrupo gerada.

REGISTRO DE CONTROLE DOS TEMPORIZADORES/CONTADORES

TCON - BIT ENDEREAVEL:

TCON: Timer Control. Endereo: 88.

Este registro de 8 bits usado para controlar a operao do T/Cs e para isto somente os 4 bits mais significativos so usados para esta funo uma vez que os 4 bits menos significativos j foram usados para fazer o controle do modo de interrupo por borda.

O formato deste registro com os bits utilizados para estas funes apresentado a seguir:

TF1TR1TF0TR0xxxx

TCON.7 TCON.5 TCON.3 TCON.1

TCON.6 TCON.4 TCON.2 TCON.0

Representao do registro TCON.

A tabela 7 mostra a posio e a funo de cada bit do registro TCON.

Smbolo.Posio.Funo.

TF1TCON.7Bit de overflow do temporizador 1. Vai a 1 por hardware sempre que o T/C1 atingiu o valor mximo de contagem e ocorreu um timer overflow. Vai a zero por software sempre que se deseja reiniciar o T/C.

TR1TCON.6Bit de controle de operao do temporizador 1. preenchido por programao para ligar ou desligar, a operao do temporizador/contador 1. Nvel lgico 1 inicia a contagem. Nvel lgico 0 para a contagem.

TF0TCON.5Bit de overflow do temporizador 0. Vai a 1 por hardware sempre que o T/C0 atingiu o valor mximo de contagem e ocorreu um timer overflow. Vai a zero por software sempre que se deseja reiniciar o T/C.

TR0TCON.4Bit de controle de operao do temporizador 0. preenchido por programao para ligar ou desligar, a operao do temporizador/contador 0. Nvel lgico 1 inicia a contagem. Nvel lgico 0 para a contagem.

xTCON.3No esta sendo utilizado para esta funo

xTCON..2No esta sendo utilizado para esta funo

xTCON.1No esta sendo utilizado para esta funo

xTCON.0No esta sendo utilizado para esta funo

Tabela 7: posio e funo de cada bit do registro TCON.

REGISTRO DE CONTROLE DE MODO DE OPERAO DOS T/Cs - TCON - BIT ENDEREAVEL:

TMOD: Timer Mod. Endereo: 89.

Este registro de 8 bits, usado para selecionar os modos de operao do temporizador/contador.

O formato deste registro com os seus respectivos bits esta representado a seguir:

G1T/C1M11M01G0T/C0M10M00

TM.7 TM.6 TM.5 TM.4 TM.3 TM.2 TM.1 TM.0

Representao do registro TMOD.

A tabela 8 mostra a posio e a funo de cada bit do registro TMOD.

SmboloPosioFuno

G1

G0TM.7

TM3Usado para selecionar o tipo de controle de disparo do T/C.

Se Gn = 0 o T/C controlado apenas atravs do bit TRn.

Se Gn = 1 o T/C controlado atravs do bit TRn e do pino INTn.

T/C1

T/C0TM.6

TM2Usado para selecionar a operao do T/C como temporizador ou contador.

Se T/C = 1 contador. Se T/C = 0 temporizador.

M00/M10

M01/M11TM.0/TM.1

TM.4/TM.5Estes 2 bits tem com funo selecionar um dentre 4 modos de operao dos T/Cs, de acordo com o mostrado na tabela 9.

Tabela 8: posio e funo de cada bit do registro TMOD.

A tabela 9 mostra os 4 modos de operao dos T/Cs:

M1 M0MODO DE OPERAO - CARACTERSTICAS

0 00 - T/C de 8 bits com prescaler de at 32x.

0 11 - T/C de 16 bits.

1 02 - T/C de 8 bits com recarga automtica.

1 13 Contador de 8 bits + temporizador de 8 bits.

Tabela 9: modo de operao do Temporizador/contador.

T/C no modo 0 - contagem com 8 bits com prescaler de 32x:

Neste modo o T/C0 ou T/C1 funciona com 8 bits, sendo que esta contagem ocorre no registro TL0 ou TL1, tendo portanto, um mximo valor de contagem igual a 255. O registro TH0 ou TH1, neste caso fornece uma pr diviso, prescaler, do sinal de clock do contador de at 32x, utilizando para isto 5 bits deste registro.

T/C no modo 1 - contagem com 16 bits:

Neste modo o T/C0 ou T/C1 funciona com 16 bits, ou seja, os 2 registros TH0 ou TL0, ou TH1 e TL1 so vistos como um nico registro de 16 bits, sendo a contagem implementada neste par de registros e o valor mximo de contagem igual a 65.535 ou FFFF.

T/C no modo 2 - contagem com 8 bits com recarga automtica:

Neste modo o T/C0 ou T/C1 funciona com 8 bits, sendo TL0 ou TL1 o registro onde ocorre a contagem e TH0 e TH1 o registro onde o valor inicial de contagem, ou neste caso o valor de recarga est especificado. Sempre que o valor mximo de contagem ocorre, 255 ou FF, o valor de recarga automaticamente carregado quando TF0 ou TF1 resetado.

T/C no modo 3 - contagem com 8 bits em TH0 e temporizador com 8 bits em TL0:

Neste modo o T/C0, e somente este, pode funcionar como temporizador ou contador de 8 bits, usando o registro TH0, e ativando caso seja necessrio a interrupo T/C1. O outro registro do T/C0, TL0 poder funcionar como um temporizador adicional de 8 bits usando a interrupo do T/C0.

CANAL SERIAL:

A interface serial do microprocessador 8051 pode ser usada de 4 modos diferentes: com operaes tipo sncrona, assncrona, com taxas de transmisso fixa ou varivel..

Os registros utilizados para programar os canais seriais so os seguintes:

SBUF ou Buffer de Canal Serial e SCON ou Controle de Canal Serial.

Uma transmisso serial sempre se inicia quando um byte escrito no registro SBUF, sendo este byte serializado e enviado para o pino TxD da porta P3 de onde pode ser transmitido.

Para habilitar a recepo o bit REN, Recepo Habilitada, do registro de controle SCON, dever ser setado e os bits quando recebidos pelo pino RxD da porta P3 sero paralelizados e enviados para o registro SUBF para ser lido. REGISTRO DE CONTROLE DO CANAL SERIAL - SCON - BIT ENDEREAVEL:

SCON: Serial Control. Endereo: 89.

Este registro de 8 bits, usado para selecionar os modos de operao do canal serial

O formato deste registro com os seus respectivos bits esta representado a seguir:

SM0SM1SM2RENTB8RB8T1R1

SM.7 SM.6 SM.5 SM.4 SM.3 SM.2 SM.1 SM.0

Representao do registro SCON.

A tabela 10 mostra a posio e a funo de cada bit do registro SCON.

Smbolo.Posio.Funo.

SM0 e SM1SM.6 e SM.7Seleciona 1 dentre 4 modos de operao do canal serial, de acordo com a tabela 11.

SM2SM.5Habilita a comunicao entre vrios processadores nos modos 2 e 3. Nos modos 2 ou 3, se SM2=1 R1 no pode ser ativado se no 9 bit RB8=0. No modo 1, se SM2=1, ento R1 no pode ser ativado se um bit de parada valido no for recebido. No modo 0, SM2 deve ser 0.

RENSM.4Colocado em 1 ou 0 por software habilita ou desabilita a recepo, respectivamente.

RB8SM.2Nos modos 2 e 3, o nono bit a ser recebido. No modo 1, se SM2=0, RB8 o bit de parada. No modo 0, RB8 no usado.

TB8SM3 o nono bit a ser transmitido nos modos 2 e 3. zerado ou no por software.

T1SM1Flag de interrupo da transmisso serial. Vai a 1 por hardware ao fim do 8 bit no modo 0, ou pela chegada dos bits de parada nos outros modos. Deve ser zerado por software.

R1SM.0Flag de interrupo da recepo serial. Vai a 1 por hardware ao fim do 8 bit no modo 0, ou na metade do bit de parada nos outros modos, exceto comSM2. deve ser zerado por software.

Tabela 10: posio e funo de cada bit do registro SCON.

Modos de operao do canal serial:A tabela 11 seleciona 1 dentre 4 modos de operao do canal serial:SM1SM0Modo de operao do canal serial

000: Registrador de deslocamento usa taxa fixa = freqncia de clock /12.

101: UART de 8 bits e taxa varivel.

012: UART de 9 bits - usa taxa fixa = freqncia de clock / 32 ou

freqncia de clock = 64.

113: UART de 9 bits usa taxa varivel

Tabela 11: 1 dentre 4 modos de operao do canal serial.

Modo 0 do canal serial registrador de deslocamento:

Neste modo o canal serial colocado no modo registrador de deslocamento no qual entram e saem serialmente atravs do pino RxD, e no pino TxD o clock enviado. Neste caso, os termos RxD e TxD no tem mais o significado original, uma vez que o pino RxD transmite e recebe dados seriais, e o pino TxD nada tem a ver com transmisso de dados. A transmisso iniciada sempre que se escreve no registro SBUF. E a recepo quando o bit REN do registro SCON setado, e o flag de recepo RI resetado.A freqncia de transmisso do canal serial obtida de acordo com o ilustrado no diagrama em blocos da figura 13.

Figura 13: obteno da freqncia de transmisso no modo 0

Modo 1 do canal serial Uart de 8 bits e taxa varivelNeste modo o canal serial no modo receptor/transmissor universal assncrono, UART, onde o dado com 8 bits seriais so precedidos por um bit de inicio de transmisso, chamado start com nvel lgico baixo e no fim da trasmisso um bit que sinaliza o fim desta, chamado de stop com nvel lgico alto. O bit de stop escrito na posio RB8 do registro SCON na recepo que tem inicio quando o bit de start recebido no pino RxD do mesmo registro, sendo sensvel borda de descida. A taxa de transmisso programada atravs do registro timer 1 overflow conforme ilustra a figura 14. Figura 14: representao do canal serial no modo 1.Modo 2 do canal serial Uart de 9 bits e taxa fixaNeste modo o canal o canal serial colocado no modo UART de 9 bits seriais, que como no modo 1 so precedidos por um bit de start em nvel lgico baixo, s seguido por um bit de stop em nvel lgico alto. Quando da recepo, o bit RB8 do SCON reservado para receber o nono bit da palavra de dado, ao invs de receber o stop como no modo 1. Na transmisso o bit TB8 recebe o nono bit que pode ser um bit de paridade, por exemplo. O diagrama em blocos da representado na figura 15 representa o canal serial no modo 2.

Figura 15: representao do canal serial no modo 2Modo 3 do canal serial Uart de 9 bits e taxa varivel:

Neste modo o canal serial colocado no modo UART de 9 bits seriais exatamente como no modo 2, exceto que a taxa de transmisso programada pelo timer 1, como no modo 1.FORMATO DAS INSTRUESLINGUAGEM DE ALTO NVEL e LINGUAGEM DE MQUINA:

Nos meios de comunicao quem tem uma maneira de se comunicar melhor e com maior qualidade o homem porque este possui o poder da fala. Esta linguagem a mais desenvolvida. a que maior fora de expresso. Por isto chama de linguagem de alto nvel. A partir da, todo tipo de comunicao que se afasta deste processo tende a ser mais rudimentar, tornando-se uma linguagem de baixo nvel. Quanto mais se afasta da linguagem do homem mais baixo se torna o nvel de comunicao.

Como internamente o microprocessador, opera com circuitos lgicos, a linguagem mais acessvel para que ele opere a linguagem de mquina binria, que utiliza nveis lgicos 0 e 1. Esta chamada de linguagem de mquina, pois esta se afasta da linguagem de alto nvel e se aproxima da linguagem da mquina.

Assim sendo qualquer meio de comunicao que se utilizar para se comunicar com o microprocessador, mesmo que seja de alto nvel, para que ele funcione corretamente esta deve ser transformada em linguagem de mquina. A facilidade de se utilizar linguagem de alto nvel facilita o trabalho do homem, porem mais circuitos intermedirios entre este e a mquina deve existir para que esta chegue ao seu nvel de entendimento.

Na linguagem de mquina a representao das instrues atravs de cdigos numricos extremamente cansativa e, alem disso a lgica do programa fica difcil de ser compreendida. Assim representa-se na linguagem assembly as instrues atravs de 3 ou 4 letras. Estas abreviaturas ou mnemnicos, facilita o entendimento e a criao dos programas.

Suponha o seguinte exemplo:

Escreve-se um programa em linguagem assembly e neste tem-se a seguinte instruo:MOV R0, A que para ser digitado utiliza-se seguinte cdigo hexadecimal:F8, que ao ser transformado em cdigo binrio pelo microprocessador tem a seguinte seqncia:

F = 1111 8 = 1000

o cdigo binrio 11111000 que acionar os circuitos lgicos internos do microrpocessador para que ele opere, sendo interpretado da seguinte forma:

11: a ordem de transferncia de contedo de um dado de um lugar para outro.

111: designa o registro A e mostra para onde o contedo vai, ou seja o destino.

000: designa o registro R0 e mostra de onde o contedo vem, ou seja a fonte.

Aps a execuo desta instruo o contedo do registro A foi transferido para o registro R0.

O formato da instruo MOV que a de movimento de dados entre registros, tem ento o seguinte formato:

11DDDSSS

Sendo:

11 o cdigo de transferncia de dados de um lugar para outro. Toda instruo de transferncia dever inciar com este nmero.

DDD: designa o destino para onde o dado ser transferido. Este cdigo dever mudar de acordo com o destino do dado.

SSS: designa a fonte, source, de onde o dado vem. Este cdigo dever mudar de acordo com o local de onde o dado vai sair.

Para cada tipo de instruo existe um formato sempre construdo neste princpio.

Como uma especificao binria igual do exemplo se tornaria muito trabalhosa e muito sujeita a erros por parte do digitador, esta feita em hexadecimal e a que ser digitada no teclado do microrpocessador e este se encarrega de transformar o nmero dado em hexadecimal, em binrio.Para no se ter o trabalho de fazer transformao de binrio para hexadecimal, tem-se tabelas que ao serem consultadas fornecem o cdigo hexadecimal de acordo com a instruo desejada.

As instrues so montadas de acordo com o seguinte:

1- MNEMONICO EM ASSEMBLY:

a abreviatura de uma instruo: exemplo: MOV R0,A

2- NOME DA INSTRUO:

a designao da instruo: exemplo: mover registros.

3- DESCRIO SIMBLICA:

mostra a operao que ser realizada utilizando smbolos: exemplo: (r0) (A)

4- DESCRIO NARRATIVA:

descreve a operao que ser realizada: exemplo: o contedo do registro A movido para o registro r1.

5- CDIGO BINRIO:

apresenta a instruo em binrio de acordo com o modo que o microprocessador ir operar.

Exemplo: 11111000.

6- INFORMAES COMPLEMENTARES: Adicionam mais contedos instruo que possam ajudar o entendimento da instruo ou auxiliar a elaborao de programas.

Estados. Um estado de mquina corresponde a 2 perodos do oscilador.

Um ciclo de mquina corresponde a 6 estados ou 12 perodos do oscilador.

Esta informao indica quantos estados tem uma instruo.

Endereamanto. a maneira de fornecer o endereo do operando. Flags. o contedo do registro PSW onde cada bit representa certas condies que acontecem aps as operaes realizadas no microprocessador.

As instrues do 8051 podem ser de 1, 2 ou 3 bytes.

O 1 byte sempre o cdigo de operao que mostra o que deve ser feito. H instrues que somente com este byte ela toda executada. Porem h instrues que precisam mais informaes complementares, contidas no 2 e/ou 3 byte.

CONJUNTO DE INSTRUES DO MICROPROCESSADOR 8051MODOS DE ENDEREAMENTO DE DADOS:

Rn registros de uso geral, R0 a R7.

direto RAM interna, portas de E/S ou registros especiais.

@Ri RAM interna ou externa endereada indiretamente por R0 ou R1.

#dado constante de 8 bits includa na instruo de 1 byte.

#dado16 constante de 16 bits includa na instruo de 2 bytes.

Bit flags ou bits de sinalizao, bits de portas de E/S ou de registros especiais.

A ou Acc acumulador.

MODOS DE ENDEREAMENTO DE PROGRAMA:

end16 endereo de destino para LCALL e LJMP com espao de 16KB.

end11 endereo de destino para ACALL e AJMP para pgina de 2KB.

rel deslocamento de 8 bits de -128 a +127 relativo prxima instruo para SJMP e todos os saltos condicionais.

CONJUNTO DE INSTRUES DO MICRORPOCESSADOR 8051:

O conjunto de instrues do 8051 pode ser dividido em 5 grupos:

Transferncia de dados.

Operaes lgicas.

Operaes aritmticas.

Manipulao de variveis booleanas.

Controle de programa.

OPERAES DE TRANSFERNCIA DE DADOS:

Fazem parte do grupo de transferncia de dados as instrues MOV, MOVC, MOVX, PUSH, POP, XCH e XCHD.Instruo MOV:

A instruo MOV copia o contedo de um endereo da memria de dados interna, ou uma constante, para outro endereo da memria de dados interna, utilizando a seguinte sintaxe:

MOV ,

MOV A, Rn

R0E8

R1E9

R2EA

R3EB

R4EC

R5ED

R6EE

R7EF

Carrega no acumulador o contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7, do banco de registros especificado no registro PSW.

Se no especificar, este banco ser o zero.Bytes: 1

Ciclos: 1

Cdigo:

11101rrr

Operao:

(A) (Rn)

Exemplo: MOV A, R0 transfere para o acumulador o contedo do registro R0, do banco de registros 0.

MOV PSW 10 seleciona o banco de registros 2.

MOV R1, 47 coloca 47 no registro 1 do banco de registros 2.MOV A, direto

Carrega no acumulador o contedo do endereo da memria de dados interna, especificado no 2 byte da instruo.

Bytes: 2

Ciclos: 1

Cdigo:

11100101

endereo direto

E5endereo

Operao:

(A) (endereo direto)Exemplo: MOV A, 12 o contedo da memria interna, cujo endereo 12, ser carregado no acumulador.

MOV A, @RiCarrega no acumulador o contedo do endereo da memria de dados interna cujo endereo se encontra no registro R0 ou R1.

Bytes: 1

Ciclos: 1

Cdigo:

1110011i

R0E6

R1E7

Operao:

(A) ((Ri))

Exemplo: MOV A, @R0 o contedo da memria interna, cujo endereo est contido em R0 transferido para o acumulador.

MOV A, #dado

Carrega no acumulador o valor da constante de 8 bits, especificado no 2 byte da instruo.

Bytes: 2

Ciclos: 1

Cdigo:

01110100

dado imediato

74dado

Operao:

(A) #dado

Exemplo: MOV A, #19 a constante 19, ser carregada no acumulador.

MOV Rn, A

R0F8

R1F9

R2FA

R3FB

R4FC

R5FD

R6FE

R7FF

Carrega no registro R0, R1, R2, R3, R4, R5, R6 ou R7, do banco de registros em uso o contedo do acumulador.

Bytes: 1

Ciclos: 1

Cdigo:

11111rrr

Operao:

(Rn) (A)

Exemplo: MOV R0, A transfere para o registro R0, do banco de registros em uso o contedo do acumulador.

MOV Rn, diretoR0A8

R1A9

R2AA

R3AB

R4AC

R5AD

R6AE

R7AF

O dado contido no endereo especificado no 2 byte da instruo movido para o registro R1, R2, R3, R4 ,R5, R6 ou R7 do banco de dados selecionado.

Bytes: 2

Ciclos: 2

Cdigo:

10101rrr

endereo direto

Operao:

(Rn) (direto)

Exemplo: MOV R0, 32 transfere o contedo do endereo 32 para o registro R0, do banco de registros em uso.

MOV Rn, #dado

R078

R179

R27A

R37B

R47C

R57D

R67E

R77F

O dado especificado no 2 byte da instruo movido para o registro R1, R2, R3, R4 ,R5, R6 ou R7 do banco de dados selecionado.

Bytes: 2

Ciclos: 1

Cdigo:

01111rrr

dado

Operao:

(Rn) (#dado)

Exemplo: MOV R0, #32 transfere a constante 32 para o registro R0, do banco de registros em uso.

MOV direto, A

Carrega no endereo indicado no segundo byte da instruo o contedo do acumulador.

Bytes: 2

Ciclos: 1

Cdigo:

11110101

endereo direto

F5endereo

Operao:

(direto) (A)

Exemplo: MOV 12, A o contedo do acumulado transferido para o endereo 12 da RAM interna.

MOV direto, Rn

R088

R189

R28A

R38B

R48C

R58D

R68E

R78F

O dado contido no registro R1, R2, R3, R4 ,R5, R6 ou R7 do banco de dados selecionado movido para o endereo da memria interna especificado no 2 byte da instruo.

Bytes: 2

Ciclos: 2

Cdigo:

10001rrr

endereo direto

Operao:

(direto) (Rn)

Exemplo: MOV 32, R1 transfere o contedo do registro R1 para o endereo 32 da memria RAM interna.

MOV direto, direto

Transfere o contedo do endereo contido no 2 byte da instruo para o endereo contido no 3 byte.

Bytes: 3

Ciclos: 2

Cdigo:

10000101

endereo direto da fonte

endereo direto do destino

85endereoendereo

Operao:

(endereo destino direto) (endereo fonte direto)

Exemplo: MOV 12, 27 o contedo do endereo 27 da memria RAM, interna ser transferido para o endereo 12 da RAM interna.

MOV direto, @Ri

Transfere o contedo do endereo formado pelo contedo do registro R0 ou R1 para o endereo contido no 2 byte da instruo.

Bytes: 2

Ciclos: 1

Cdigo:

1000011i

endereo direto

R087

R186

Operao:

(direto) ((Ri))

Exemplo: MOV 12, @87 o contedo do endereo indicado pelo registro R1 ser transferido para o endereo 12 da RAM interna.

MOV direto, #dado

O dado especificado no 3 byte da instruo transferido para o endereo especificado no 2 byte da instruo.

Bytes: 3

Ciclos: 2

Cdigo:

01110101

endereo direto

dado imediato

76endereodado

Operao:

(direto) #dado

Exemplo: MOV 47, #39 o numero 39 ser armazenado no endereo 47 da RAM interna.

MOV @Ri, A

O contedo do acumulador transferido para a RAM interna no endereo contido no registro R0 ou R1.

Bytes: 1

Ciclos: 1

Cdigo:

1111011i

R0F6

R1F7

Operao:

((Ri)) (A)

Exemplo: MOV R1, A o contedo do acumulador transferido para a RAM interna, para o endereo contido no registro R1.

MOV @Ri, direto

O contedo do endereo contido no 2 byte da instruo transferido para o endereo contido no registro R0 ou R1 da RAM interna.

Bytes: 2

Ciclos: 2

Cdigo:

1010011i

endereo direto

R0A6

R1A7

Operao:

((Ri)) (direto)

Exemplo: MOV @R1, 37 o contedo do endereo 37 da RAM interna, transferido para o endereo contido no registro R1.MOV @Ri, #dado

O dado contido no 2 byte da instruo transferido para o endereo contido no registro R0 ou R1.

Bytes: 2

Ciclos: 1

Cdigo:

0111011i

dado imediato

R076

R177

Operao:

((Ri)) #dadoExemplo: MOV@ 12, A o contedo do acumulado transferido para o endereo 12 da RAM interna.

MOV DPTR, #dado16Carrega no registro DPTR o valor da constante de 16 bits, especificado.

Bytes: 3Ciclos: 2

Cdigo:

10010000

dado imediato, bits de 8 a 15

dado imediato, bits de 0 a 7

90dadodado

Operao:

(DPTR) (#dado de 0 a 15)

Exemplo: MOV DPTR, #1234 carrega no DPTR a constante 1234.

Instruo MOVC:A instruo MOVC copia o contedo da memria de programa, interna ou externa, para o acumulador, utilizando a seguinte sintaxe:

MOVC A,

O operando sempre ir empregar o modo de endereamento atravs de ponteiros.

MOVC A, @A+DPTR

Adiciona o valor contido no acumulador ao valor contido no registro DPTR. O resultado formar um endereo da memria de programa, cujo contedo ser carregado no acumulador.Bytes: 1

Ciclos: 2Cdigo:

10010011

93

Operao:

(A) ((A) + (DPTR) )

Exemplo: MOV A, #03 MOV DPTR, #1234 MOVC A, @A+DPTR aps estas instrues, no acumulador tem-se o contedo do endereo de memria 1237.

MOVC A, @A+PC

Adiciona o valor contido no acumulador ao valor contido no registro PC. O resultado formar um endereo da memria de programa, cujo contedo ser carregado no acumulador.

Bytes: 1

Ciclos: 2

Cdigo:

10000011

83

Operao:

(A) ((A) + (PC) )

Exemplo: MOV A, #03

MOVC A, @A+PC aps estas instrues, no acumulador tem-se o contedo do endereo de memria formado pelo contedo do PC + 03. Instruo MOVX:

A instruo MOVX copia o contedo de uma posio da memria de dados, externa para o acumulador ou vice versa, utilizando as seguintes sintaxes:

MOVX A,

MOVX , A

Os operandos e , sempre iro utilizar o modo de endereamento indireto atravs de ponteiros. Trata-se da nica forma de leitura ou escrita na memria de dados externa e de perifricos externos mapeados em memria.MOVX A, @Ri

Transfere o contedo do endereo formado pelo contedo do registro R0 ou R1 da memria externa para o acumulador.

Bytes: 1

Ciclos: 2

Cdigo:

1110001i

R0E2

R1E3

Operao:

(A) ((Ri))Exemplo: MOVX A, @R1 transfere para o acumulador o contedo do endereo formado pelo registro R1.MOVX A, @DPTR

Carrega o acumulador com o contedo da posio de memria de dados externa cujo endereo o contedo do DPTR.

Bytes: 1

Ciclos: 2

Cdigo:

11100000

E0

Operao:

(A) ((DPTR))

Exemplo: MOVX A, @DPTR no acumulador tem-se o contedo do endereo contido no registro DPTR.

MOVX @Ri, ACarrega no endereo indicado por R0 ou R1, da memria RAM externa, o contedo do acumulador.

Bytes: 1Ciclos: 2

Cdigo:

1111001i

R0F2

R1F3

Operao:

((Ri)) (A)

Exemplo: MOVX @R1, A carrega no endereo indicado por R1, o contedo do acumulador.

MOVX @DPTR, A

Coloca no endereo de memria indicado pelo registro DPTR o contedo do acumulador.

Bytes: 1

Ciclos: 2

Cdigo:

11110000

F0

Operao:

((DPTR)) (A)

Exemplo: MOVX @DPTR, A coloca no endereo indicado pelo registro DPTR o contedo do acumulador.

Instrues PUSH e POP: As instrues PUSH e POP promovem o armazenamento temporrio de dados, para colocar e retirar dados, respectivamente na pilha e utilizam a seguinte sintaxe:

PUSH

POP PUSH diretoEmpurra para a pilha. O registro SP incrementado de 1. Em seguida o contedo do endereo da memria de dados interna carregado no topo da pilha.

C0endereo

Bytes: 2

Ciclos: 2

Cdigo:

11000000

endereo direto

Operao:

(SP) (SP) + 1

((SP)) (direto)

Exemplo: MOV SP 2F define o fundo da pilha.

PUSH ACC o contedo do acumulador movido para o topo a pilha.POP direto

Puxa da pilha. O topo da pilha carregado no endereo da memria de dados interna. Em seguida o registro SP decrementado.D0endereo

Bytes: 2

Ciclos: 2

Cdigo:

11010000

endereo direto

Operao:

(direto) ((SP))

(SP) (SP) - 1Exemplo: POP ACC o contedo do topo da pilha movido para o acumulador.

Instruo XCH:A instruo XCH efetua a troca de contedos entre o acumulador e um segundo operando, utilizando a seguinte sintaxe:

XCH A,

possvel utilizar todos os modos de endereamento: imediato, direto, indireto e registro.

XCH A, Rn

Troca o contedo do acumulador com o contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7.R0C8

R1C9

R2CA

R3CB

R4CC

R5CD

R6CE

R7CF

Bytes: 1

Ciclos: 1

Cdigo:

11001rrr

Operao:

(A) (Rn)

Exemplo: XCH A, R2 o contedo do acumulador vai para o registro R2 e o contedo do registro R2 vai para o acumulador.

XCH A, direto

Troca o contedo do acumulador com o contedo do endereo especificado no 2 byte da instruo.

C5endereo

Bytes: 2Ciclos: 1Cdigo:

11000101

endereo direto

Operao:

(A) (direto)

Exemplo: XCH A, FD o contedo do acumulador vai para o endereo FD e o contedo do endereo FD vai para o acumulador.

XCH A, @Ri

Troca o contedo do acumulador com o contedo do endereo especificado nos registros R0 ou R1.

R0C6

R1C7

Bytes: 1

Ciclos: 1

Cdigo:

1100011i

Operao:

(A) ((Ri))Exemplo: XCH A, R0 o contedo do acumulador vai para o endereo contido no registro R0 e o contedo do endereo contido no registro R0 vai para o acumulador.

Instruo XCHD:

A instruo XCHD efetua a troca dos nibbles menos significativos entre o acumulador e um segundo operando, utilizando a seguinte sintaxe:

XCHD A,

possvel utilizar apenas o modo de endereamento indireto com os ponteiros R0 e R1.

XCHD A, @RiPermuta os 4 dgitos de baixa ordem do acumulador, que pode representar um dgito hexadecimal ou BCD, com os 4 bits de alta ordem da posio de memria RAM interna endereada de forma indireta pelo registro R0 ou R1. Os 4 bits de alta ordem no so afetados.R0C6

R1C7

Bytes: 1

Ciclos: 1

Cdigo:

1101011i

Operao:

(A3-0) ((Ri3-0))

Exemplo: XCHD A, @R0 Os 4 bits de baixa ordem do acumulador vo ocupar as posies dos 4 bits de alta ordem da memria RAM. Os 4 bits de alta ordem da memria RAM vo ocupar as posies dos 4 bits de baixa ordem do acumulador. A RAM ser a interna. O endereo da memria RAM considerado o contedo do registro R0.

OPERAES LGICAS E ARITMTICAS:

Fazem parte do grupo de operaes lgicas as instrues CLR, CPL, ANL, ORL, XRL, RL, RLC, RR, RRC, e SWAP.

Instruo CLR:

A instruo CLR zera o contedo do acumulador.CLR ALimpa o acumulador, ou seja, todos os bits do acumulador so zerados

Bytes: 1

Ciclos: 1

Cdigo:

11100100

E4

Operao:

(A) (00)

Exemplo: CLR A todos os bits do acumulador so zerados.

Instruo CPL:

A instruo CPL complementa o contedo do acumulador, bit a bit.

CPL AComplementa o acumulador, ou seja, cada bit do acumulador invertido.

Bytes: 1

Ciclos: 1

Cdigo:

11110100

F4

Operao:

(A) (A)

Exemplo: CPL A todo contedo do acumulador invertido.

Instrues ANL, ORL e XRL:

As instrues ANL, ORL e XRL, realizam as instrues E, OU e OU-EXCLUSIVO, respectivamente, utilizando a seguinte sintaxe:

ANL, , ORL, ,

XRL, ,

O resultado da operao armazenado no , que pode ser o acumulador ou uma posio de memria de dados interna endereada diretamente. O pode utilizar todos os modos de endereamento, imediato, direto, indireto e registro.

ANL A, RnR058

R159

R25A

R35B

R45C

R55D

R65E

R75F

Realiza a operao E, bit a bit, entre o contedo do acumulador e o contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7. O resultado colocado no acumulador.

Se no especificar, este banco ser o zero.

Bytes: 1

Ciclos: 1

Cdigo:

01011rrr

Operao:

(A) (A) ^ (Rn)

Exemplo: ANL A, R1 faz a funo lgica E, bit a bit, entre o contedo do acumulador e o contedo do registro R1 e coloca o resultado no acumulador.

ANL A, diretoFaz a operao E, bit a bit, entre o contedo do acumulador e o contedo do endereo especificado no segundo byte da instruo, e coloca o resultado no acumulador.

55endereo direto

Bytes: 2

Ciclos: 1

Cdigo:

01010101

endereo direto

Operao:

(A) (A) ^ (endereo direto)

Exemplo: ANL A F0 faz a funo lgica E, bit a bit, entre o contedo do acumulador e o contedo do endereo F0.

ANL A, @RiFaz a operao E, bit a bit, entre o contedo do acumulador e o contedo do endereo especificado no registro R0 ou R1, e coloca o resultado no acumulador.

R056

R157

Bytes: 1

Ciclos: 1

Cdigo:

0101011i

Operao:

(A) (A) ^ ((Ri))

Exemplo: ANL @, R0 faz a funo lgica E, bit a bit, entre o contedo do acumulador e o contedo do endereo contido no endereo R0.

ANL A, # dado imediato

Faz a operao E, bit a bit, entre o contedo do acumulador e o dado especificado no segundo byte da instruo, e coloca o resultado no acumulador.

54dado imediato

Bytes: 2

Ciclos: 1

Cdigo:

01010100

dado imediato

Operao:

(A) (A) ^ (dado imediato)

Exemplo: ANL A, #F0 faz a funo lgica E, bit a bit, entre o contedo do acumulador e F0.

ANL direto, A

Faz a operao lgica E, entre o contedo do endereo contido no segundo byte da instruo e o contedo do acumulador e coloca o resultado no endereo especificado no segundo byte desta mesma instruo.

Bytes: 2

Ciclos: 1

Cdigo:

01010010

endereo direto

53endereo direto

Operao:

(endereo direto) (endereo direto) ^ (A)

Exemplo: ANL F0, A faz a funo lgica E, bit a bit, entre o contedo do endereo F0 e o contedo do acumulador e coloca o resultado no endereo F0.

ANL direto, #dado

Faz a funo lgica E, entre o contedo do endereo indicado no segundo byte da instruo e o dado contido no terceiro byte da instruo e coloca o resultado no endereo especificado no segundo byte desta mesma instruo.

Bytes: 3

Ciclos: 2

Cdigo:

01010011

endereo direto

dado imediato

53endereodado

Operao:

(endereo direto) (endereo direto) ^ (dado imediato)

Exemplo: ANL 12, #34 faz a funo E entre o contedo contido no endereo 12 e a constante 34 e coloca o resultado no endereo 12.

ORL A, RnR048

R149

R24A

R34B

R44C

R54D

R64E

R74F

Realiza a funo OU, bit a bit, entre o contedo do acumulador e o contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7. O resultado colocado no acumulador.

Se no especificar, este banco ser o zero.

Bytes: 1

Ciclos: 1

Cdigo:

01001rrr

Operao:

(A) (A) v (Rn)

Exemplo: ORL A, R3 faz a operao lgica OU, bit a bit, entre o contedo do acumulador e o contedo do registro R3 e coloca o resultado no acumulador.

ORL A, diretoFaz a funo OU, bit a bit, entre o contedo do acumulador e o contedo do endereo especificado no segundo byte da instruo, e coloca o resultado no acumulador.

45endereo direto

Bytes: 2

Ciclos: 1

Cdigo:

01000101

endereo direto

Operao:

(A) (A) v (endereo direto)

Exemplo: ORL A, F0 faz a funo lgica OU, bit a bit, entre o contedo do acumulador e o contedo do endereo F0.

ORL A, @RiFaz a operao OU, bit a bit, entre o contedo do acumulador e o contedo do endereo especificado no registro R0 ou R1, e coloca o resultado no acumulador.

R046

R147

Bytes: 1

Ciclos: 1

Cdigo:

0100011i

Operao:

(A) (A) v ((Ri))

Exemplo: ORL @, R0 faz a funo lgica OU, bit a bit, entre o contedo do acumulador e o contedo do endereo contido no endereo R0.

ORL A, # dado imediato

Faz a funo OU, bit a bit, entre o contedo do acumulador e o dado especificado no segundo byte da instruo, e coloca o resultado no acumulador.

44dado imediato

Bytes: 2

Ciclos: 1

Cdigo:

01000100

dado imediato

Operao:

(A) (A) v (dado imediato)

Exemplo: ORL A, #F0 faz a funo lgica OU, bit a bit, entre o contedo do acumulador e F0.

ORL direto, A

Faz a funo lgica OU, entre o contedo do endereo indicado no segundo byte da instruo e coloca o resultado no endereo especificado no segundo byte desta mesma instruo.

Bytes: 2

Ciclos: 1

Cdigo:

01000010

endereo direto

42Endereo direto

Operao:

(endereo direto) (endereo direto) v (A)

Exemplo: ORL F0, A faz a funo lgica OU, bit a bit, entre o contedo do endereo F0 e o contedo do acumulador e coloca o resultado no endereo F0.

ORL direto, #dado

Faz a funo lgica OU, entre o contedo do endereo indicado no segundo byte da instruo e o dado contido no terceiro byte da instruo e coloca o resultado no endereo especificado no segundo byte desta mesma instruo.

Bytes: 3

Ciclos: 2

Cdigo:

01000011

endereo direto

dado imediato

43endereodado

Operao:

(endereo direto) (endereo direto) v (dado imediato)

Exemplo: ORL 12, #34 faz a funo OU entre o contedo contido no endereo 12 e a constante 34 e coloca o resultado no endereo 12.

XRL A, RnR068

R169

R26A

R36B

R46C

R56D

R66E

R76F

Realiza a funo OU exclusivo, bit a bit, entre o contedo do acumulador e o contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7. O resultado colocado no acumulador.

Se no especificar, este banco ser o zero.

Bytes: 1

Ciclos: 1

Cdigo:

01101rrr

Operao:

(A) (A) (Rn)

Exemplo: XRL A, R3 faz a operao lgica OU exclusivo, bit a bit, entre o contedo do acumulador e o contedo do registro R3 e coloca o resultado no acumulador.

XRL A, diretoFaz a funo OU exclusivo, bit a bit, entre o contedo do acumulador e o contedo do endereo especificado no segundo byte da instruo, e coloca o resultado no acumulador.

65endereo direto

Bytes: 2

Ciclos: 1

Cdigo:

01100101

endereo direto

Operao:

(A) (A) (endereo direto)

Exemplo: XRL A F0 faz a funo lgica OU exclusivo, bit a bit, entre o contedo do acumulador e o contedo do endereo F0.

XRL A, @RiFaz a operao OU exclusivo, bit a bit, entre o contedo do acumulador e o contedo do endereo especificado no registro R0 ou R1, e coloca o resultado no acumulador.

R066

R167

Bytes: 1

Ciclos: 1

Cdigo:

0110011i

Operao:

(A) (A) ((Ri))

Exemplo: XRL @, R0 faz a funo lgica OU exclusivo, bit a bit, entre o contedo do acumulador e o contedo do endereo contido no endereo R0 e coloca o resultado no acumulador.

XRL A, # dado imediato

Faz a operao OU exclusivo, bit a bit, entre o contedo do acumulador e o dado especificado no segundo byte da instruo, e coloca o resultado no acumulador.

64dado imediato

Bytes: 2

Ciclos: 1

Cdigo:

01100100

dado imediato

Operao:

(A) (A) (dado imediato)

Exemplo: XRL A, #F0 faz a funo lgica OU exclusivo, bit a bit, entre o contedo do acumulador e F0 e coloca o resultado no acumulador.

XRL direto, A

Faz a operao OU exclusivo, bit a bit, entre o contedo do acumulador e o contedo do endereo especificado no segundo byte da instruo, e coloca o resultado no endereo especificado no segundo byte da instruo.

62endereo direto

Bytes: 2

Ciclos: 1

Cdigo:

01100010

endereo direto

Operao:

(endereo direto) (endereo direto) (A)

Exemplo: XRL F0, A faz a funo lgica OU exclusivo, bit a bit, entre o contedo do endereo F0 e o contedo do acumulador e coloca o resultado no endereo F0.

XRL direto, #dado

Faz a funo lgica OU exclusivo, entre o contedo do endereo indicado no segundo byte da instruo e o dado contido no terceiro byte da instruo e coloca o resultado no endereo especificado no segundo byte desta mesma instruo.

Bytes: 3

Ciclos: 2

Cdigo:

01100011

endereo direto

dado imediato

63endereodado

(endereo direto) (endereo direto) #dado imediato

Exemplo: XRL 12, #34 faz a funo OU exclusivo entre o contedo contido no endereo 12 e a constante 34 e coloca o resultado no endereo 12.

Instrues RL A, RLC A, RR A, e RRC A:

As instrues, RL A, RLC A, RR A, , e RRC A deslocam o contedo do acumulador um bit esquerda, ou direita, passando ou no pelo flag de carry, respectivamente, utilizando a seguinte sintaxe:

RL ARLC A

RR A

RRC A

RL A

Os 8 bits do acumulador so rolados um bit esquerda. O valor do bit 0 vai para o bit 1, o valor do bit 1 vai para o bit 2 e assim sucessivamente. O valor do bit 7 vai para o bit 0.

Bytes: 1

Ciclos: 1

Cdigo:

00100011

23

Operao:

(A +1) (An), n = 0-6

(A0) (A7)

Exemplo: RL A todo contedo do acumulador girado para a esquerda, bit a bit. Cada instruo causa somente um giro. Se desejar mais de um giro, esta deve ser repetida tantas vezes quantas forem os giros desejados.

Representao:

76543210

RLC A

Os 8 bits do acumulador so rolados um bit esquerda, juntamente com o contedo do flag de carry. O valor do bit 0 vai para o bit 1, o valor do bit 1 vai para o bit 2 e assim sucessivamente. O valor do bit 7 vai para o flag de carry e o valor do flag de carry vai para o bit 0.

Bytes: 1

Ciclos: 1

Cdigo:

00110011

33

Operao:

(A +1) (An), n = 0-6

(A0) (C)

(C) (A7)

Exemplo: RL A todo contedo do acumulador girado para a esquerda, bit a bit. O valor do bit 7 vai para o flag de carry e o valor do flag de carry vai para o bit 0. Cada instruo causa somente um giro. Se desejar mais de um giro, esta deve ser repetida tantas vezes quantas forem os giros desejados.

Representao:

76543210

RR A

Os 8 bits do acumulador so rolados um bit direita. O valor do bit 7 vai para o bit 6, o valor do bit 6 vai para o bit 5 e assim sucessivamente. O valor do bit 0 vai para o bit 7.

Bytes: 1

Ciclos: 1

Cdigo:

00000011

03

Operao:

(An) (Na + 1), n = 0-6

(A7) (A0)

Exemplo: RR A todo contedo do acumulador girado para a direita, bit a bit. Cada instruo causa somente um giro. Se desejar mais de um giro, esta deve ser repetida tantas vezes quantas forem os giros desejados.

Representao:

76543210

RRC A

Os 8 bits do acumulador so rolados um bit direita, juntamente com o contedo do flag de carry. O valor do bit 7 vai para o bit 6, o valor do bit 6 vai para o bit 5 e assim sucessivamente. O valor do bit 0 vai para o flag de carry e o valor do flag de carry vai para o bit 7.

Bytes: 1

Ciclos: 1

Cdigo:

00010011

13

Operao:

(An) (An + 1), n = 0-6

(A7) (C)

(C) (A0)

Exemplo: RRC A todo contedo do acumulador girado para a direita, bit a bit. O valor do bit 0 vai para o flag de carry e o valor do flag de carry vai para o bit 7.

Cada instruo causa somente um giro. Se desejar mais de um giro, esta deve ser repetida tantas vezes quantas forem os giros desejados.

Representao:

76543210

Instruo SWAP:

A instruo, SWAP troca o nibble mais significativo pelo nible menos significativo doacumulador, utilizando a seguinte sintaxe:

SWAP A

SWAP A

Os 4 bits de ordem baixa do acumulador vo para o lugar dos 4 bits de ordem alta e os 4 de ordem alta vo para o lugar dos de ordem baixa.

Bytes: 1

Ciclos: 1

Cdigo:

11000100

C4

Operao:

(A0 a 3) (A4 a 7)

Exemplo: SWAP A permuta os bits de baixo nvel do acumulador com os bits de alto nvel.

Instrues aritmticas:Fazem parte do grupo de operaes aritmticas as instrues ADD, ADDC, SUBB, INC, DEC, MUL, DIV e DA.Instrues ADD e ADDC:

As instrues ADD e ADDC realizam a adio entre o contedo do acumulador e o contedo de um endereo da memria de dados interna, ou uma constante, mais o contedo do flag de carry, respectivamente, utilizando a seguinte sintaxe:

ADD A,

ADDC A,

O resultado da operao armazenado no acumulador sendo possvel utilizar para o todos os modos de endereamento, imediato, direto, indireto e registro. O flag de carry afetado conforme o resultado da operao.ADD A, Rn

R028

R129

R22A

R32B

R42C

R52D

R62E

R72F

Adiciona o contedo do acumulador ao contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7. O resultado colocado no acumulador.O flag de carry vai a 1, se houver vai 1.

O flag de carry vai a 0, se no houver vai 1.

Se no especificar, este banco ser o zero.

Bytes: 1

Ciclos: 1

Cdigo:

00101rrr

Operao:

(A) (A) + (Rn)

Exemplo: ADD A, R1 soma o contedo do acumulador ao contedo do registro R1, e armazena o resultado no acumulador.

ADD A, direto:

Soma o contedo do acumulador ao contedo do endereo indicado no segundo byte da instruo e coloca o resultado no acumulador.

25endereo

Bytes: 2

Ciclos: 1

Cdigo:

00100101

endereo direto

Operao:

(A) (A) + (endereo direto)

Exemplo: ADD A, F0 soma o contedo do acumulador ao contedo do endereo F0 e coloca o resultado no acumulador.ADD A, @RiAdiciona o contedo do acumulador ao contedo do endereo contido no registro R0 ou R1 e coloca o resultado no acumulador.R026

R127

Bytes: 1

Ciclos: 1

Cdigo:

0010011i

Operao:

(A) (A) + ((Ri))

Exemplo: ADD A, @R0 soma o contedo do acumulador ao contedo do endereo contido no registro R0, e armazena o resultado no acumulador.

ADD A, #dado

Soma o contedo do acumulador ao dado contido no 2 byte da instruo e coloca o resultado no acumulador.

Bytes: 2

Ciclos: 1

Cdigo:

00100100

dado direto

24dado

Operao:

(A) (A) + #dado

Exemplos: ADD A, #27 soma 27 ao contedo do acumulador e coloca o resultado no acumulador.

ADDC

Esta instruo soma simultaneamente um dado indicado, o carry e o contedo do acumulador.

Os flags de carry e carry auxiliar so afetados. Estes vo a 1, se houver vai 1 no fim ou no meio destas operaes, respectivamente.

ADDC A, Rn

R038

R139

R23A

R33B

R43C

R53D

R63E

R73F

Adiciona o contedo do acumulador ao contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7 e ao contedo do flag de carry. O resultado colocado no acumulador.

Se no especificar, este banco ser o zero.

Bytes: 1

Ciclos: 1

Cdigo:

00111rrr

Operao:

(A) (A) + (Rn) + (C)Exemplo: ADDC A, R1 soma o contedo do acumulador ao contedo do registro R1, mais o contedo do flag carry e armazena o resultado no acumulador.

ADDC A, diretoSoma o contedo do acumulador ao contedo do endereo indicado no segundo byte da instruo ao contedo do flag de carry e coloca o resultado no acumulador.

35endereo

Bytes: 2

Ciclos: 1

Cdigo:

00110101

endereo direto

Operao:

(A) (A) + (C) + (endereo direto)

Exemplo: ADDC A, F0 soma o contedo do acumulador ao contedo do endereo F0 ao contedo do flag de carry e coloca o resultado no acumulador.

ADDC A, @RiAdiciona o contedo do acumulador ao contedo do endereo contido no registro R0 ou R1 ao contedo do flag de carry e coloca o resultado no acumulador.

R036

R137

Bytes: 1

Ciclos: 1

Cdigo:

0011011i

Operao:

(A) (A) + ((Ri)) + (C)Exemplo: ADDC A, @R0 soma o contedo do acumulador ao contedo do endereo contido no registro R0, ao contedo do flag de carry e armazena o resultado no acumulador.

ADDC A, #dadoSoma o contedo do acumulador ao contedo do dado indicado no segundo byte da instruo, ao contedo do flag de carry e coloca o resultado no acumulador.

34dado

Bytes: 2

Ciclos: 1

Cdigo:

00110100

dado direto

Operao:

(A) (A) + (C) + (dado direto)

Exemplo: ADDC A, #F0 soma o contedo do acumulador ao dado F0, ao contedo do flag de carry e coloca o resultado no acumulador.

DA A Ajuste Decimal do Acumulador.

Faz o ajuste decimal de uma varivel de 8 bits no acumulador resultante da soma de dois nmeros em BCD, gerando o resultado na forma de 2 nmeros de 4 bits.

Numa soma de nmeros BCD, se o valor dos 4 bits menos significativos do acumulador maior do que 9 ou se o flag AC sofreu set, soma-se 6 ao acumulador.

Sempre aps a soma em BCD, coloca-se DA A. Se no precisar deste ajuste, o microprocessador no o considera. Esta operao s se realiza no acumulador.

DA A s funciona depois de uma soma de dois nmeros em BCD, de dois dgitos cada.

D4

Bytes: 1

11010100

Ciclos: 1

Cdigo:

Operao:

Se [[(A0-3) > 9] + [(AC) = 1]]

Ento (A0-3) (A0-3) + 6

E

Se [[(A4-7) > 9] + [(C) = 1]]

Ento (A4-7) (A4-7) + 6

Exemplo: DA A na soma realizada, se o valor dos 4 bits menos significativos do acumulador maior do que 9 ou se o flag AC sofreu set, soma-se 6 ao acumulador.

Instruo SUBB:

A instruo SUB realiza a subtrao entre o contedo do acumulador o contedo de uma posio da memria de dados interna, ou uma constante, e o flag de carry, utilizando a seguinte sintaxe:

SUBB A,

O resultado da subtrao armazenado no acumulador sendo possvel utilizar para o todos os modos de endereamento, imediato, direto, indireto e registro. O flag de carry afetado conforme o resultado da operao. Esta operao permite que subtraes com mais de 8 bits posam ser implementadas graas ao aproveitamento do flag de carry da operao anterior. Subtrao:

Subtrai o valor da varivel indicada juntamente com o carry do valor do acumulador, levando o resultado ao acumulador. O flag AC vai a um se o vem um necessrio para o bit 3 e zerado se no houver o vem um. O flag OV vai a um se houver vem um no bit 6, mas no no 7, ou no 7 mas no no 6. Utiliza a seguinte sintxe:

SUBB A,

SUBB A, RnR098

R199

R29A

R39B

R49C

R59D

R69E

R79F

Subtrai do contedo do acumulador o valor contido no flag carry e no registro R0, R1, R2, R3, R4, R5, R6 ou R7. O resultado colocado no acumulador.

Se no especificar, este banco ser o zero.

Bytes: 1

Ciclos: 1

Cdigo:

10011rrr

Operao:

(A) (A) - (C) - (Rn)

Exemplo: SUBB A, R1 subtrai do contedo do acumulador o valor do contedo do registro R1 e do flag cy, e armazena o resultado no acumulador.

SUBB A, diretoSubtrai do valor contido no acumulador o contedo do flag carry e o valor contido no endereo indicado no segundo byte da instruo e coloca o resultado no acumulador.

95endereo

Bytes: 2

Ciclos: 1

Cdigo:

10010101

endereo direto

Operao:

(A) (A) - (C) - (endereo direto)

Exemplo: SUBB A, F0 subtrai do contedo do acumulador o contedo do flag carry e o contedo do endereo F0 e coloca o resultado no acumulador.

SUBB A, @RiSubtrai do valor contido no acumulador o contedo do flag carry e o valor contido no endereo indicado pelo registro R0 ou R1 e coloca o resultado no acumulador.

R096

R197

Bytes: 1

Ciclos: 1

Cdigo:

1001011i

Operao:

(A) (A) - (C) - ((Ri))

Exemplo: SUBB A, @R0 subtrai do contedo do acumulador o contedo do falg carry e o contedo do endereo indicado pelo registro R0, e armazena o resultado no acumulador.

SUBB A, #dado

Subtrai do contedo do acumulador o valor do flag cy e o valor do dado contido no 2 byte da instruo e coloca o resultado no acumulador.

Bytes: 2

Ciclos: 1

Cdigo:

10010100

dado direto

94dado

Operao:

(A) (A) - (C) - #dado

Exemplos: SUBB A, #27 subtrai do valor do acumulador o valor do flag de carry e o valor 27 e coloca o resultado no acumulador.

Instrues INC e DEC:

As instrues INC e DEC incrementam e decrementam o operando de uma unidade, utilizando a seguinte sintaxe:

INC,

DEC A,

possvel utilizar todos os modos de endereamento, imediato, direto, indireto e registro.

INC AIncrementa o contedo do acumulador, de 1.

Bytes: 1

Ciclos: 1

Cdigo:

00000100

04

Operao:

(A) (A) + 1

Exemplo: INC A o contedo do acumulador ser incrementado de 1.

INC RnR008

R109

R20A

R30B

R40C

R50D

R60E

R70F

O registro R0, R1, R2, R3, R4, R5, R6 ou R7 incrementado de 1.

Se no especificar, este banco ser o zero.

Bytes: 1

Ciclos: 1

Cdigo:

00001rrr

Operao:

(Rn) (Rn) + 1

Exemplo: INC R1 o registro R1 incrementado de 1.

INC diretoO contedo do endereo especificado no segundo byte da instruo, incrementado de 1.

05endereo

Bytes: 2

Ciclos: 1

Cdigo:

00000101

endereo direto

Operao:

(endereo) (endereo) + 1

Exemplo: INC F0 o contedo do endereo F0 incrementa