Você está na página 1de 34

MICROCONTROLADOR 8051

Introduo
Um sistema microprocessado bsico mostrado na figura abaixo:

Organizao bsica de um sistema microprocessado. Unidade de Entrada responsvel pela obteno de informaes e dados externos; Unidade Lgica e Aritmtica (ULA) e Unidade de Controle essas unidades juntas so responsveis pela capacidade de processamento e controle das informaes; Unidade de Memria auxiliam no processamento e armazenamento de informaes; Unidade de Sada responsvel pela transferncia de dados e informaes para o mundo exterior.

Prof. Sidney Jos Montebeller - FACENS

Diagrama em Blocos de um Sistema Genrico com Microprocessador

Sistema genrico com microprocessador.

Conceito de Barramento
O microprocessador tem trs barramentos que conduzem todas as informaes e sinais necessrios operao do sistema. Estes barramentos conectam o microprocessador (CPU) a cada um dos elementos de memria e de E/S.

Prof. Sidney Jos Montebeller - FACENS

Interconexo entre os elementos de um sistema microprocessado atravs de barramentos.

Funo principal do barramento de controle e conceito de estado de alta impedncia (tri-state).

Os sinais de controle so gerados pelo microprocessador ( RD , WR , etc) e pelo circuito de seleo de endereos (chip select CS ).

Prof. Sidney Jos Montebeller - FACENS

Circuito Gerador de Sinais de Controle ( CS ) ou Lgica de Seleo de Endereos

A15 0 0 1 1

A14 0 1 0 1

Memria Liberada (CS/ = 0) Memria 1 Memria 2 Memria 3 Memria 4

Memria selecionada atravs da lgica de seleo de endereos.

Lgica de seleo de endereos (mapeamento de memria).

Prof. Sidney Jos Montebeller - FACENS

O Microcontrolador 8051 Diagrama de Blocos O diagrama de blocos do microcontrolador 8051 mostrado na figura abaixo:

Diagrama em blocos do microcontrolador 8051.

Principais Caractersticas do Microcontrolador 8051 Entre as caractersticas do microcontrolador 8051 esto:


CPU de 8 bits otimizada para aplicaes em controle; 32 linhas de E/S bidirecionais e individualmente endereveis; 128 bytes de RAM interna destinada a dados; 2 temporizadores/contadores de 16 bits;
5

Prof. Sidney Jos Montebeller - FACENS

UART full duplex (canal serial); 5 estruturas de interrupo com 2 nveis de prioridade; Clock interno; 4 Kbytes de memria de programa interna; 64 Kbytes de memria de programa endereveis; 64 Kbytes de memria de dados endereveis;
RAM Interna 64 128 256 128 256 128 ROM Interna 1K 2K 4K 4K 8K 4K Linhas I/O 27 27 27 32 32 32 Interrupes Externas 1 1 1 2 2 2 Verso EPROM 8748H 8749H 8751 8751H 87C51 Verso sem ROM 8035AHL 8039AHL 8040AHL 8031 8032AH 80C31BH

Microcontroladores 8048AH 8049AH 8050AH 8051 8052AH 80C51BH

Perifricos Timer Timer Timer 2 Timers Canal Serial 3 Timers Canal Serial 2 Timers Canal Serial

Comparao entre microcontroladores. Descrio dos Pinos

Nmero dos pinos


1a8 9 10 a 17 18

Nome

Descrio

Estes pinos so endereados como porta bidirecional de 8 bits, podendo ter seus pinos individualmente endereaveis. Podem P1.0 P1.7 alimentar ou drenar uma carga TTL, ou vrias cargas MOS diretamente sem pull-up externos. Usado para resetar o sistema pela aplicao de um nvel lgico RST/VPD 1, durante 2 ou mais ciclos de mquina. Porta de I/O bidirecional de 8 bits, com resistores de pull-up P3.0 P3.7 interno. Sada do amplificador inversor do oscilador e entrada para o XTAL2 gerador de clock interno. Se for usado clock externo, serve 6

Prof. Sidney Jos Montebeller - FACENS

19 20 21 a 28 29

30

31

32 a 39 40

como entrada para o mesmo. Entrada do amplificador inversor do oscilador, deve ser XTAL1 conectado a terra se usarmos clock externo. Vss Conexo de terra. P2.0 P2.7 Porta bidirecional de 8 bits, usado como sada ou como parte (A8 A15) mais significativa do endereo na expanso de memria. Sada para habilitao do programa externo. Quando o sistema vai buscar instrues ou operando na memria externa, este PSEN/ pino vai a nvel zero. PSEN/ no ativado (permanece em ALTO) durante a busca na memria interna de programa. Sada habilitadora do latch de endereos. Serve para separar a ALE parte menos signifivativa do endereo que est multiplexada com os dados, no caso de usarmos memria externa. Entrada de seleo de memria de programa. Quando em BAIXO, a CPU trabalha apenas com a memria de programa EA/ externa. Quando em ALTO, a CPU executa instrues da memria de programa interna. Porta de 8 bits bidirecional com dreno aberto. Durante P0.7 P0.0 operaes com memria externa, fornece multiplexadas parte (AD7 AD0) menos significativa de endereos e dados, ativando pull-ups internos. Vcc Ligao de 5 V para operao normal.

Descrio dos pinos do 8051.


P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RXD/data TXD/clock INT0\ INT1\ T0 T1 WR\ RD\ Receptor da porta serial assncrona ou entrada e sada de dados sncronos (expanso de I/O pela porta serial) Sada de transmisso da porta assncrona ou sada de clock para os registradores de deslocamento externos (expanso de I/O pela porta serial) Interrupo externa nmero 0, ou bit de controle para o timer/counter 0 Interrupo externa nmero 1, ou bit de controle para o timer/counter 1 Entrada externa para o timer/counter 0 Entrada externa para o timer/counter 1 Strobe (sinalizador) de escrita na memria de dados externa Strobe (sinalizador) de leitura na memria de dados externa

Funes Especiais dos Pinos da Porta 3 Organizao de Memria no 8051 Memria de Programa: A memria de programa separada da memria de dados. O microcontrolador pode acessar 64 Kbytes de memria de programa. Se o pino EA estiver em ALTO, os primeiros 4 Kbytes so acessados internamente e o restante externamente. Se o pino EA estiver em BAIXO, os 64 Kbytes so acessados externamente. O dispositivo emite o sinal PSEN (Program Store Enable) para ler a memria de programa externa.

Prof. Sidney Jos Montebeller - FACENS

Memria de programa. Os 64 Kbytes de memria de dados externa so acessados pelo dispositivo atravs dos sinais RD e WR .

Memria de Dados: A memria de dados corresponde s RAMs internas e externas.

Memria RAM interna e externa. A memria interna vai do endereo 00H at o endereo FFH e dividida conforme a figura abaixo:

Prof. Sidney Jos Montebeller - FACENS

Mapa da RAM Interna. Os 4 bancos de registros (endereos de 00H a 1FH da RAM interna) so constitudos de 8 registros cada (R0 a R7). A rea de bytes endereveis bit a bit vai de 20H a 2FH da RAM interna:

Prof. Sidney Jos Montebeller - FACENS

Endereos individuais dos bits 7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F 07 7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 16 0E 06 7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 15 0D 05 7C 74 6C 64 5C 54 4C 44 3C 34 2C 24 1C 14 0C 04 7B 73 6B 63 5B 53 4B 43 3B 33 2B 23 1B 13 0B 03 7A 72 6A 62 5A 52 4A 42 3A 32 2A 22 1A 12 0A 02 79 71 69 61 59 51 49 41 39 31 29 21 19 11 09 01 78 70 68 60 58 50 48 40 38 30 28 20 18 10 08 00

Endereos dos bytes 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 27H 26H 25H 24H 23H 22H 21H 20H

rea de bytes endereveis bit a bit. Os 80 bytes endereveis byte a byte vo do endereo 30H ao endereo 7FH da RAM interna. Registros de Funes Especiais (SFR): Esto localizados do endereo 80H ao endereo FFH da RAM interna: Registro P0 P1 P2 P3 SP TH1 TL1 TH0 TL0 TCON TMOD PCON SCON SBUF IE IP PSW ACC B DPH Endereo 80H 90H A0H B0H 81H 8DH 8BH 8CH 8AH 88H 89H 87H 98H 99H A8H B8H D0H E0H F0H 83H Funo Port0 I/O Port1 I/O Port2 I/O Port3 I/O Indica ltimo endereo de armazenagem na pilha Byte mais significativo do temporizador/contador T1 Byte menos significativo do temporizador/contador T1 Byte mais significativo do temporizador/contador T0 Byte menos significativo do temporizador/contador T0 Contm o Controle e Modo de Operao dos temporizadores/contadores Usado para Controle de Potncia Contm dados para programao do canal serial Contm o dado recebido ou a ser transmitido Indica quais interrupes sero habilitadas ou desabilitadas Contm a indicao da prioridade de cada interrupo Sinaliza eventos na ULA e indica o Banco de Registros Registros de uso geral Registros de uso geral Juntos formam o DPTR, usado para endereamento indireto
10

Prof. Sidney Jos Montebeller - FACENS

DPL

de leitura de constantes na ROM, acessar a RAM externa e para desvio para EPROM de at 64K Registros de Funes Especiais (SFR). 82H Reset

O reset uma operao que causa reinicializao do sistema. Isso pode ser feito quando o pino 9 (RST) permanecer em nvel alto por um determinado perodo. Quando o reset ativado, a CPU executa as seguintes funes: - o PC (Program Counter), o acumulador (A), o registro B, os flags, o DPTR e todos os registros dos temporizadores/contadores so ZERADOS; - no SP (Stack Pointer) colocado o valor 07; - as portas P0 a P3 tero o valor FFH. Isso deve ser levado em considerao no projeto do hardware, para evitar acionamentos indesejveis de algum perifrico externo; - o SBUF (Buffer Serial) estar com contedo indeterminado e o registro de controle da porta serial (SCON) ser zerado; - o registro PCON ter apenas seu bit mais significativo zerado; - os registros de controle de interrupo (IE e IP) contero o valor binrio XXX00000, onde X = irrelevante. No reset forado, a RAM interna no afetada.

Ciclo de Mquina
Um ciclo de mquina consiste de uma sequncia de 6 estados (S1 a S6). Cada estado toma 2 perodos de clock e, portanto, um ciclo de mquina toma 12 perodos de clock ou 1 s sob uma frequncia de 12 MHz. A figura abaixo mostra a sequncia de busca/execuo para alguns tipos de instrues. Normalmente dois ciclos de busca so executados em cada ciclo de mquina mesmo que a instruo sendo executada no o requer, caso em que o byte buscado ignorado e o PC no incrementado.

Prof. Sidney Jos Montebeller - FACENS

11

Sequncia de busca/execuo de instrues no 8051.

Instrues de um ciclo comeam em S1, em S4 gerado uma segunda busca e, no fim de S6, a instruo est completa. O ciclo busca/execuo o mesmo se a Memria de Programas externa ou interna. A figura 10 mostra os sinais e as temporizaes envolvidas quando a Memria de Programas externa. Nesse caso, o sinal PSEN ativo duas vezes por ciclo de mquina. Se um acesso Memria de Dados externa ocorre, dois PSEN so pulados porque o bus de endereos e o bus de dados esto sendo utilizados para acesso Memria de Dados. Note que um ciclo de Memria de Dados externa toma duas vezes mais tempo que um ciclo de Memria de Programas. A figura a seguir mostra a dinmica dos endereos sendo enviados s Portas 0 e 2 e dos sinais ALE e PSEN . O sinal ALE ativado indiferentemente se a CPU est executando a partir da Memria de Programas externa ou interna, podendo ser utilizado como uma sada de clock.

Prof. Sidney Jos Montebeller - FACENS

12

Ciclo de Execuo em Memria de Programas Externo.

Interrupes
O microcontrolador 8051 possui as seguintes fontes de interrupo: 2 interrupes externas, 2 interrupes de temporizadores e uma interrupo pela porta serial. Interrupt Enable (IE) Cada uma das fontes de interrupo pode ser habilitada ou desabilitada setando ou limpando um bit do registrador IE localizado na regio SFR. Este registrador tambm contm um bit global que pode desabilitar todas as interrupes de uma s vez. A figura abaixo mostra o registrador IE

Prof. Sidney Jos Montebeller - FACENS

13

O Registrador Interrupt Enable.

Prioridade de Interrupes Cada fonte de interrupo pode ser programada para um de dois nveis de interrupo setando ou limpando um bit do registrador IP (Interrupt Priority) localizado no espao SFR e mostrado na figura abaixo.

Prof. Sidney Jos Montebeller - FACENS

14

O Registrador Interrupt Priority Se requisies de interrupo de mesma prioridade so recebidas simultaneamente, uma seqncia de pooling ativada para determinar qual interrupo ser atendida. Todos os flags de interrupo so carregados no sistema de controle de interrupo durante o Estado 5 de todo ciclo de mquina. A anlise desses flags feita no ciclo seguinte. Se um flag para uma interrupo habilitada encontrado setado, o sistema de interrupo gera um LCALL para a correta localizao na Memria de Programas a menos que uma situao de bloqueio de verifique (ex. interrupo de igual ou maior prioridade sendo atendida). Com LCALL sendo executado, o contedo de PC salvo na pilha e este registrador recebe o valor do endereo inicial da rotina de interrupo. Somente PC automaticamente salvo na pilha. Isso permite ao programador decidir quanto tempo deve ser gasto salvando outros registradores. Como resultado, tem-se uma melhoria no tempo de resposta a uma interrupo. Temporizadores e Contadores O microcontrolador 8051 conta com 2 temporizadores/contadores de 16 bits para uso geral. A configurao dos temporizadores/contadores 0 e 1 feita no registrador TMOD localizado na regio SFR no endereo 89H. Se o bit C/T desse registrador setado, o temporizador/registrador atua como contador e, se zerado, atua como temporizador. Quando na funo temporizador, o registrador de tempo, localizado na regio SFR incrementado a cada ciclo de mquina. Logo, podemos pens-lo como um
Prof. Sidney Jos Montebeller - FACENS 15

contador de ciclos de mquina. Quando na funo contador, o registrador incrementado a cada transio 1 para 0 do correspondente sinal externo T0 ou T1 (pino 4 ou pino 5 respectivamente da porta 3). Cada temporizador/contador consiste em 2 registradores de 8 bits que podem ser configurados em um dos 4 possveis modos:
- Modo 0: o registro configurado como um registrador de 13 bits. Os bits TF0 (8DH) e TF1 (8FH) so utilizados como flags de overflow associadas s interrupes INT0 e INT1 respectivamente aos temporizadores/contadores 0 e 1. - Modo 1: semelhante ao modo 0 com a diferena de que o registrador atua em 16 bits. - Modo 2: o registrador configurado em 8 bits com recarga automtica, isto , quando numa situao de overflow de TLO (8 bits menos significativos), tal registrador recarregado com o contedo de TLH (8 bits mais significativos) cujo contedo permanece constante. - Modo 3: temporizador/contador 1 desligado enquanto o temporizador/contador 0 utilizado como dois registradores de 8 bits. A interrupo associada a TL0 INT0 enquanto a interrupo associada a TH0 INT1.

Interface Serial O 8051 possui uma porta serial full-duplex, o significa que ela pode enviar e transmitir dados simultaneamente. Essa interface pode operar em 4 modos: - Modo 0: (modo sncrono) 8 bits do dado serial entram e saem por RxD0. TxD0 tem como sada o sinal de clock deslocado em fase. A velocidade de transmisso de 1/12 clock.
-

Modo 1: (modo assncrono) 10 bits so transmitidos (TxD0) ou recebidos (RxD0): 8 bits de dados, 1 stop bit e 1 start bit. A velocidade de transmisso varivel. Modo 2: (modo assncrono) 11 bits so transmitidos (TxD0) ou recebidos (RxD0): 1 start bit, 8 bits de dados, 1 bit programvel pelo usurio (por exemplo: bit de paridade) e um stop bit. A velocidade de transmisso pode ser programvel para 1/32 ou 1/64 clock. Modo 3: (modo assncrono) exatamente como no Modo 2, porm, a velocidade de transmisso varivel.

Em cada um dos modos, a transmisso iniciada quando da execuo de uma instruo cujo registrador destino o registrador SBUF (endereo 99H, regio SFR). A recepo iniciada no modo 0 pela condio RI = 0 (endereo 98H) e REN0 = 1 (endereo 9CH), ambos localizados no registrador S0CON (endereo 98H, regio SFR). Em outros modos, a recepo iniciada quando REN0 = 1.

Prof. Sidney Jos Montebeller - FACENS

16

Program Status Word (PSW)


Importante registrador que contm bits de status da CPU. Localiza-se no endereo D0H da RAM interna. A figura abaixo mostra esse registro: PSW.7 CY PSW.6 AC PSW.5 F0 PSW.4 RS1 PSW.3 RS0 PSW.2 OV PSW.1 PSW.0 P

Registrador PSW (Program Status Word) CY : Flag Carry; AC : Flag Carry Auxiliar; F0 : Flag 0 definido pelo usurio; RS1 : Bit 1 para seleo de Banco de Registradores; RS0 : Bit 0 para seleo de Banco de Registradores; OV : Flag de Overflow; -: Flag definido pelo usurio; P: Flag de Paridade. setado/zerado pelo hardware a cada ciclo de instruo para indicar um nmero mpar/par de bits 1 no acumulador. RS1 0 0 1 1 RS0 0 1 0 1 Banco de Registradores 0 1 2 3 Endereo 00H-07H 08H-0FH 10H-17H 18H-1FH

Seleo de Banco de Registradores atravs de RS1 e RS0.

Modos de Endereamento
Para acessar um dado, as instrues do microcontrolador 8051 contam com seis tipos de endereamentos: Modo Imediato: nesse modo, o endereo do operando especificado por um campo de 8 bits na instruo. Somente RAM de dados interna e a regio SFR podem ser diretamente endereadas. Ex: MOV A, 25H; A (25H) - Move contedo da posio de memria 25H (RAM) para o acumulador (A). Modo Registrador: a instruo a ser executada contm o nome de um dos registradores de R0 a R7 que ser acessado. Um dos quatro bancos de registros selecionado (RS1 e RS0, no registro PSW) em tempo de execuo do programa. Assim podemos identificar qual registro (R0 a R7) e de qual banco de registros estamos acessando. Ex: MOV A, R1; A R1 - Move o contedo de R1 para o acumulador (A). Modo Indireto: a instruo especifica um registrador que contm o endereo do operando. Ambas externa e interna RAMs podem ser indiretamente acessadas. Se tal endereo possui 8 bits, seu valor armazenado em R0 ou R1, do respectivo
Prof. Sidney Jos Montebeller - FACENS 17

banco selecionado, ou no Stack Pointer. Por outro lado, se tal endereo possui 16 bits, seu valor armazenado no registrador DPTR. Ex: MOV @R1, 15H; (R1) (15H) - Move contedo da posio de memria 15H (RAM) para a posio de memria endereada por R1. Modo Especfico a Registro: o registro a ser acessado faz parte do cdigo de operao da instruo. Ex: DA A; - Ajuste decimal do acumulador. Modo Constante Imediata: quando uma constante faz parte da instruo. Ex: MOV A, #20H; A 20H - Move o valor 20H para o acumulador. Modo Indexado: somente a Memria de Programas, cuja nica operao leitura, pode ser acessada por esse modo. usado para fazer leituras em tabelas na Memria de Programas. Um registrador de 16 bits (DPTR ou PC) aponta para o incio da tabela enquanto o Acumulador ajustado para a n-sima posio da mesma. O endereo de uma entrada para a tabela formado pela soma entre o Acumulador e o registrador de 16 bits. Ex: JMP @A + DPTR; PC A + DPTR - Desvia para o endereo obtido da soma do acumulador com o DPTR. Modo Desvio Indexado: usado em instrues de desvio condicionais, onde estas instrues somam ao PC j ajustado o dado de 8 bits presente no final da instruo. Ex: JNZ 05H; PC PC + 05H - Desvia se acumulador no for zero.

Prof. Sidney Jos Montebeller - FACENS

18

Conjunto de Instrues do 8051


-

O conjunto de instrues dividido em 5 grupos: Transferncia de Dados; Operaes Aritmticas; Desvio; Operaes Lgicas; Flag/Bit.

Generalidades
-

@ indica Indireto (endereado pelo valor de); #N indica valor Constante de 8 bits; #NN indica valor Constante de 16 bits; H indica que o valor est na base Hexadecimal; B indica que o valor est na base Binria; Rn indica registro R0 a R7; Ri indica registro R0 ou R1; N indica um endereo de memria de 8 bits (primeiras 256 posies internas ou externas).

Prof. Sidney Jos Montebeller - FACENS

19

Instrues de Transferncia de Dados


MNEMNICO DESCRIO MOV A, Rn MOV A, N MOV A, @Ri MOV A, #N MOV Rn, A MOV Rn, N MOV Rn, #N MOV N, A MOV N, Rn MOV N1, N2 MOV N, @Ri MOV N, #N MOV @Ri, A MOV @Ri, N MOV @RI, #N MOV #NN DPTR, Move o registro Rn para o Acumulador Move o contedo da memria N para o Acumulador Move o contedo da RAM endereada por Ri para o Acumulador Move a constante N para o Acumulador Move o Acumulador para o registro Rn Move o contedo da memria N para o registro Rn Move a constante N para o registro Rn Move o Acumulador para a memria N Move o registro Rn para a memria N Move o contedo da memria N2 para a memria N1 Move RAM endereada por Ri para a memria N Move a constante N para o contedo da memria N Move o Acumulador para a RAM endereada por Ri Move o contedo da memria N para a RAM endereada por Ri Move a constante N para a RAM endereada por Ri Move constante NN para o DPTR Soma A + DPTR obtendo um endereo de 16 bits na memria de programa. Carrega o acumulador com o contedo desta memria Idem ao anterior, mas soma A + PC Move RAM externa endereada por Ri (endereo 8 bits) para o Acumulador Move RAM externa endereada por DPTR (endereo 16 bits) para o Acumulador Move Acumulador para a RAM externa endereada por Ri (endereo 8 bits) OPERAO A Rn A (N) A (Ri) AN Rn A Rn (N) Rn N (N) A (N) (Rn) (N1) (N2) (N) (Ri) (N) N (Ri) A (Ri) (N) (Ri) N DPTR NN A (A DPTR) + COND. FLAGS CY AC DE OV N DE N DE BYTES ESTADOS 1 2 1 2 1 2 2 2 2 3 2 3 1 2 2 3 12 12 12 12 12 24 12 12 24 24 24 24 12 24 12 24

MOVC A, @A + DPTR MOVC A, @A + PC MOVX A, @Ri MOVX @DPTR A,

24

A (A + PC) A (Ri)

1 1

24 24

A (DPTR)

24

MOVX @Ri, A

(Ri) A

24

Prof. Sidney Jos Montebeller - FACENS

20

Instrues de Transferncia de Dados


MNEMNICO DESCRIO Move Acumulador para a MOVX RAM externa endereada por @DPTR, A DPTR (endereo 16 bits) Incrementa o SP e ento PUSH N coloca a memria no Stack Retira dado do Stack e coloca na memria, depois POP N decrementa SP Troca entre si o contedo do XCH A, Rn Acumulador e do Registro Rn Troca entre si o contedo da XCH A, N memria N com Acumulador Troca entre si a RAM XCH A, @Ri endereada por Ri com Acumulador Troca entre si o nibble menos XCHD A, @Ri significativo do Acumulador e da RAM endereada por Ri OPERAO (DPTR) A SP SP + 1 (SP) N N (SP) SP SP - 1 A Rn A (N) A (Ri) A3-A0 (Ri) 3-0 COND. FLAGS CY AC DE OV N DE N DE BYTES ESTADOS 1 2 2 1 2 1 1 24 24 24 12 12 12 12

Prof. Sidney Jos Montebeller - FACENS

21

Instrues de Operaes Aritmticas


MNEMNICO DESCRIO ADD A, Rn Soma Rn ao Acumulador Soma o contedo da posio ADD A, N de memria N ao Acumulador Soma o contedo da RAM ADD A, @Ri endereada por Ri ao Acumulador Soma a constante N ao ADD A, #N Acumulador Soma Rn e o flag Carrry ao ADDC A, Rn Acumulador Soma o contedo da posio ADDC A, N de memria N e o flag Carry ao Acumulador Soma o contedo da RAM ADDC A, @Ri endereada por Ri e o flag Carry ao Acumulador Soma a constante N e flag ADDC A, #N Carry ao Acumulador Subtrai Rn e o flag Carry do SUBB A, Rn Acumulador Subtrai o contedo da posio de memria N e o SUBB A, N flag Carry do Acumulador Subtrai o contedo da RAM SUBB A, @Ri endereada por Ri e o flag Carry do Acumulador Subtrai a constante N e o flag SUBB A, #N Carry do Acumulador INC A Soma 1 ao Acumulador INC Rn Soma 1 ao Rn Soma 1 ao contedo da INC N posio de memria N Soma 1 ao contedo da RAM INC @Ri endereada por Ri DEC A Subtrai 1 do Acumulador DEC Rn Subtrai 1 de Rn Subtrai 1 do contedo da DEC N posio de memria N Subtrai 1 do contedo da DEC @Ri RAM endereada por Ri INC DPTR MUL AB DIV AB DA A Soma 1 ao registro DPTR OPERAO A A + Rn A A + (N) A A + (Ri) AA+N COND. FLAGS CY AC * * * * * * * * * * * * * * * * * DE OV * * * * * * * * * * * * * N DE N DE BYTES ESTADOS 1 12 2 1 2 1 2 1 2 1 2 1 2 1 1 2 1 1 1 2 1 1 * * * 0 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 24 48 48 12

A A + Rn + * CY A A + (N) + * CY A A + (Ri) * + CY A A + N + * CY A A - Rn * CY A A - (N) * CY A A - (Ri) * CY A A - N * CY * AA+1 Rn Rn + 1 (N) (N) + 1 (Ri) (Ri) + 1 AA-1 Rn Rn - 1 (N) (N) - 1 (Ri) (Ri) - 1

DPTR DPTR + 1 Multiplica A e B, resultado: BA BA A x B 0 Divide A e B, resultado: A AeBA/B 0 inteiro e B resto Ajuste decimal do * A (A)10 Acumulador

Prof. Sidney Jos Montebeller - FACENS

22

Instrues de Desvio
MNEMNICO DESCRIO ACALL N LCALL NN RET RETI AJMP N LJMP NN SJMP N JMP @A DPTR JZ N JNZ N CJNE A, N, N CJNE A, #N, N CJNE Rn, #N, N CJNE #N, N @Ri, + Chama sub-rotina numa faixa de 2 Kbytes da atual posio Chama sub-rotina em qualquer posio da memria de programa Retorna da sub-rotina Retorna da interrupo Desvia para outro endereo numa faixa de 2 Kbytes da atual posio Desvia para qualquer posio da memria Desvio curto relativo Desvia para o endereo obtido da soma do Acumulador com o DPTR Desvia se o Acumulador for zero Desvia se o Acumulador no for zero Compara e desvia se o Acumulador for diferente do contedo da memria N Compara e desvia se o Acumulador for diferente da constante N Compara e desvia se o Rn for diferente da constante N Compara e desvia se a RAM endereada por Ri for diferente da constante N Decrementa Rn e desvia se for diferente de zero Decrementa o contedo da memria N e desvia se for diferente de zero Nenhuma operao OPERAO COND. FLAGS CY AC DE OV N DE N DE BYTES ESTADOS 2 3 1 1 PC PC + N PC NN PC PC + N PC A + DPTR 2 3 2 1 2 2 * * * * 3 3 3 3 2 3 1 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 12

DJNZ Rn, N DJNZ N, N NOP

Prof. Sidney Jos Montebeller - FACENS

23

Instrues de Operaes Lgicas


MNEMNICO DESCRIO ANL A, Rn ANL A, N ANL A, @Ri ANL A, #N ANL N, A ANL N, #N ORL A, Rn ORL A, N ORL A, @Ri ORL A, #N ORL N, A ORL N, #N XRL A, Rn XRL A, N XRL A, @Ri XRL A, #N XRL N, A XRL N, #N CRL A CPL A RL A Operao E entre Rn e Acumulador Operao E entre o contedo da memria N e o Acumulador Operao E entre RAM endereada por Ri e Acumulador Operao E entre a constante N e Acumulador Operao E entre Acumulador e memria N Operao E entre constante N e memria N Operao OU entre Rn e Acumulador Operao OU entre memria N e Acumulador Operao OU entre RAM endereada por Ri e Acumulador Operao OU entre constante N e Acumulador Operao OU entre Acumulador e contedo da memria N Operao OU entre constante N e contedo da memria N Operao OU EXCLUSIVO entre Rn e Acumulador Operao OU EXCLUSIVO entre o contedo da memria N e Acumulador Operao OU EXCLUSIVO entre RAM endereada por Ri e Acumulador Operao OU EXCLUSIVO entre constante N e Acumulador Operao OU EXCLUSIVO entre Acumulador e contedo da memria N Operao OU EXCLUSIVO entre a constante N e o contedo da memria N Faz A = 0 Inverte o estado dos bits do Acumulador Rotao do Acumulador para esquerda OPERAO A A ^ Rn A A ^ (N) A A ^ (Ri) AA^N (N) (N) ^ A (N) (N) ^ N A A v Rn A A v (N) A A v (Ri) AAvN (N) (N) v A (N) (N) v N A A Rn A A (N) A A (Ri) AAN (N) (N) A (N) (N) N A 00H A A An + 1 An A0 A7 COND. FLAGS CY AC DE OV N DE N DE BYTES ESTADOS 1 2 1 2 2 3 1 2 1 2 2 3 1 2 1 2 2 3 1 1 1 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12

Prof. Sidney Jos Montebeller - FACENS

24

Instrues de Operaes Lgicas


MNEMNICO DESCRIO OPERAO COND. FLAGS CY AC DE OV N DE N DE BYTES ESTADOS 1 1 1 1 12 12 12 12

RLC A RR A RRC A SWAP A

Rotao do Acumulador para An + 1 An esquerda atravs do flag CY A7 * Carry A0 CY Rotao do Acumulador para An An + 1 direita A7 A0 An An + 1 Rotao do Acumulador para * CY A0 direita atravs do flag Carry A7 CY Troca os nibbles do A7-A4 A3Acumulador A0

Prof. Sidney Jos Montebeller - FACENS

25

Instrues de Flag/Bit
MNEMNICO DESCRIO CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C, bit ANL C,bit ORL C, bit ORL C,bit MOV C, bit MOV bit, C JC N JNC N JB bit, N JNB bit, N JBC bit, N Zera o flag Carry Zera o bit endereado Seta o flag Carry Seta o bit endereado Inverte o estado do flag Carry Inverte o estado do bit endereado Operao E entre o bit endereado e o flag Carry Operao E entre o complemento do bit endereado e o flag Carry Operao OU entre o bit endereado e o flag Carry Operao OU entre o complemento do bit endereado e o flag Carry Move o bit endereado para o flag Carry Move o flag Carry para o bit endereado Desvia se o flag Carry estiver setado Desvia se o flag Carry estiver zerado Desvia se o bit endereado estiver setado Desvia se o bit endereado estiver zerado Desvia se o bit endereado estiver setado e depois zera o bit OPERAO CY 0 bit 0 CY 1 bit 1 CY CY bit bit CY CY ^ * bit CY ^bit CY * COND. FLAGS CY AC 0 1 * DE OV N DE N DE BYTES ESTADOS 1 2 1 2 1 2 2 2 2 2 2 2 2 2 3 3 3 12 12 12 12 12 12 24 24 24 24 12 24 24 24 24 24 24

CY CY v * bit CY vbit CY bit bit CY se CY = 1 PC PC + N se CY = 0 PC PC + N se bit = 1 PC PC + N se bit = 0 PC PC + N se bit = 1 PC PC + N Bit = 0 CY * *

Prof. Sidney Jos Montebeller - FACENS

26

Interrupes
Os tipos de interrupo do 8051 so: Interrupo Interrupo Externa 0 (INT0) Temporizador/Contador 0 Interrupo Externa 1 (INT1) Temporizador/Contador 1 Canal Serial Interrupes do 8051. Endereo 0003H 000BH 0013H 001BH 0023H

Podemos definir dois nveis de prioridade para cada interrupo: 0 e 1. Se uma interrupo de prioridade 0 (menor prioridade) estiver sendo tratada e outra de prioridade 1 (maior prioridade) ocorrer, o 8051 ir atender a de prioridade 1. Depois de atender a interrupo de prioridade 1, o 8051 continua a atender a interrupo de prioridade 0. Se a interrupo que requisitar ser atendida for de nvel igual ou menor da que est sendo tratada, ela ficar aguardando o fim do tratamento desta. Registrador IE (Interrupt Enable) Indica qual das interrupes est habilitada ou desabilitada. IE.7 IE.6 EA Registro IE. EA : ES : IE.5 IE.4 ES IE.3 ET1 IE.2 EX1 IE.1 ET0 IE.0 EX0

0 = Desabilita todas as interrupes. 1 = Habilita as interrupes escolhidas. 0 = Desabilita interrupo do canal serial. 1 = Habilita interrupo do canal serial.

ET1 : 0 = Desabilita interrupo do temporizador/contador 1. 1 = Habilita interrupo do temporizador/contador 1. EX1 : 0 = Desabilita interrupo externa 1. 1 = Habilita interrupo externa 1. ET0 : 0 = Desabilita interrupo do temporizador/contador 0. 1 = Habilita interrupo do temporizador/contador 0. EX0 : 0 = Desabilita interrupo externa 0. 1 = Habilita interrupo externa 0. Registrador IP (Interrupt Priority) Determina o nvel de prioridade de cada interrupo. IP.7 IP.6 IP.5 IP.4 PS IP.3 PT1 IP.2 PX1 IP.1 PT0 IP.0 PX0
27

Prof. Sidney Jos Montebeller - FACENS

Registro IP. PS : 0 = Prioridade baixa para interrupo do canal serial 1 = Prioridade alta para interrupo do canal serial.

PT1 : 0 = Prioridade baixa para interrupo do temporizador/contador 1. 1 = Prioridade alta para interrupo do temporizador/contador 1. PX1 : 0 = Prioridade baixa para interrupo externa 1. 1 = Prioridade alta para interrupo externa 1. PT0 : 0 = Prioridade baixa para interrupo do temporizador/contador 0. 1 = Prioridade alta para interrupo do temporizador/contador 0. PX0 : 0 = Prioridade baixa para interrupo externa 0. 1 = Prioridade alta para interrupo externa 0.

Registrador TCON (Timer/Counter Control) Os quatro bits menos significativos deste registrador controlam o modo como as interrupes externas sero detectadas. Elas podem ser detectadas atravs de uma transio negativa (nvel 1 para nvel 0) ou atravs de nvel 0. TCON.7 TCON.6 TCON.5 Registro TCON. IE1 : setado com a ocorrncia de uma borda de descida no pino da Interrupo Externa 1. zerado quando a interrupo for atendida. IT1 : 0 = Deteco atravs de nvel 0 no pino da Interrupo Externa 1. 1 = Deteco atravs da ocorrncia de uma borda de descida no pino da Interrupo Externa 1. IE0 : setado com a ocorrncia de uma borda de descida no pino da Interrupo Externa 0. zerado quando a interrupo for atendida. IT0 : 0 = Deteco atravs de nvel 0 no pino da Interrupo Externa 0. 1 = Deteco atravs da ocorrncia de uma borda de descida no pino da Interrupo Externa 0. TCON.4 TCON.3 IE1 TCON.2 TCON.1 IT1 IE0 TCON.0 IT0

Prof. Sidney Jos Montebeller - FACENS

28

Temporizadores / Contadores
O 8051 possui dois temporizadores/contadores:
-

Temporizador/Contador 0 que utiliza o pino P3.2 como entrada de controle e o pino T0 como entrada de pulsos; Temporizador/Contador 1 que utiliza o pino P3.3 como entrada de controle e o pino T1 como entrada de pulsos.

Registrador TCON (Timer/Counter Control) Os quatro bits mais significativos deste registrador mostram o estado e iniciam ou param a contagem dos temporizadores/contadores. TCON.7 TCON.6 TCON.5 TF1 TR1 TF0 Registro TCON. TCON.4 TCON.3 TR0 TCON.2 TCON.1 TCON.0

TF1 : setado com a ocorrncia de um transbordo (overflow) do temporizador/contador 1. zerado ao final da rotina de interrupo do temporizador/contador 1. TR1 : 0 = Desabilita a contagem do temporizador/contador 1. 1 = Habilita a contagem do temporizador/contador 1. TF0 : setado com a ocorrncia de um transbordo (overflow) do temporizador/contador 0. zerado ao final da rotina de interrupo do temporizador/contador 0. TR0 : 0 = Desabilita a contagem do temporizador/contador 0. 1 = Habilita a contagem do temporizador/contador 0.

Registrador TMOD (Timer/Counter Control) Este registrador controla o modo de operao dos temporizadores/contadores. TMOD.7 TMOD.6 TMOD.5 TMOD.4 TMOD.3 TMOD.2 TMOD.1 TMOD.0 GATE-1 T/C-1 M1-1 M0-1 GATE-0 T/C-0 M1-0 M0-0 Registro TMOD.

GATE-1 :

0 = Temporizador/Contador 1 ser habilitado para contagem quando TR1 = 1 (registro TCON). 1 = Temporizador/Contador 1 ser habilitado para contagem quando TR1 = 1 (registro TCON) e o pino /INT1 = 1.

Prof. Sidney Jos Montebeller - FACENS

29

T/C-1 :

0 = Temporizador/Contador 1 funcionar como temporizador usando um sinal interno (clock dividido por 12). 1 = Temporizador/Contador 1 funcionar como um contador de sinais externos.

M1-1, M0-1 : Definem o modo de operao do temporizador/contador 1. M1-1 M0-1 0 0 0 1 1 0 1 1 Modos de Operao do Temporizador/Contador 1. GATE-0 : Modo de Operao Modo 0 Modo 1 Modo 2 Modo 3

0 = Temporizador/Contador 0 ser habilitado para contagem quando TR0 = 1 (registro TCON). 1 = Temporizador/Contador 0 ser habilitado para contagem quando TR0 = 1 (registro TCON) e o pino /INT0 = 1. 0 = Temporizador/Contador 0 funcionar como temporizador usando um sinal interno (clock dividido por 12). 1 = Temporizador/Contador 0 funcionar como um contador de sinais externos.

T/C-0 :

M1-0, M0-0 : Definem o modo de operao do temporizador/contador 0. M1-1 M0-1 0 0 0 1 1 0 1 1 Modos de Operao do Temporizador/Contador 0. Modo de Operao Modo 0 Modo 1 Modo 2 Modo 3

Prof. Sidney Jos Montebeller - FACENS

30

Modos de Operao dos Temporizadores / Contadores


-

Modo 0 - Temporizador ou Contador de 8 bits com divisor de frequncia de at 32 vezes.


TL0 e TL1 servem como divisores de 5 bits. TH0 e TH1 recebem o valor inicial da contagem. A contagem crescente (at FFH). Quando o nmero de pulsos lidos igual ao valor do DIVISOR, o CONTADOR incrementado. O valor do DIVISOR no alterado durante a contagem. X X Divisor (TL0 ou TL1) X 4 3 2 1 0

Contador (TH0 ou TH1) 7 6 5 4 3 2 1 0 Temporizadores/Contadores no modo 0.

Modo 1 - Temporizador ou Contador de 16 bits.


TH0 e TL0 formam o temporizador/contador 0. TH1 e TL1 formam o temporizador/contador 1. A contagem crescente at FFFFH. 7 6 Contador (TL0 ou TL1) 5 4 3 2 1 0

Contador (TH0 ou TH1) 15 14 13 12 11 10 9 8 Temporizadores/Contadores no modo 1.

Modo 2 Temporizador ou Contador de 8 bits com recarga automtica.


TL0 e TL1 so os contadores 0 e 1, respectivamente. TH0 e TH1 possuem valores que so transferidos para TL0 e TL1 depois de um overflow do contador. 7 6 Contador (TL0 ou TL1) 5 4 3 2 1 0

Valor de Recarga (TH0 ou TH1) 7 6 5 4 3 2 1 0 Temporizadores/Contadores no modo 2.

Modo 3 Temporizador ou Contador de 8 bits.


TL0 um temporizador/contador de 8 bits controlado pelos bits TR0 e TF0 do registro TCON. TH0 um temporizador/contador de 8 bits controlado pelos bits TR1 e TF1 do registro TCON. O overflow de TL0 acionar o flag de requisio de interrupo (TF0) do temporizador/contador 0. O overflow de TH0 acionar o flag de requisio de interrupo (TF1) do temporizador/contador 1. Nesse modo TH1 e TL1 no tem funo.
31

Prof. Sidney Jos Montebeller - FACENS

Contador (TH0) 15 14 13 12 11 10 9 8 Temporizadores/Contadores no modo 3.

Contador (TL0) 5 4 3 2

Comunicao Serial
O 8051 transmite dados seriais pelo pino TxD/clock e recebe dados seriais pelo pino RxD/data. Registrador SCON (Serial Port Control) Registrador de controle da comunicao serial. SCON.7 SCON.6 SCON.5 SCON.4 SCON.3 SCON.2 SCON.1 SCON.0 SM0 SM1 SM2 REN TB8 RB8 TI RI Registro SCON. SM0, SM1 : Definem o modo de operao do canal serial SM0 0 0 1 1 SM1 0 1 0 1 Modo de Operao Modo 0 Modo 1 Modo 2 Modo 3 Velocidade Clock / 12 Varivel Clock / 32 ou Clock / 64 Varivel

Modos de Operao do Canal Serial.

SM2 : 0 = Operao individual do 8051. 1 = Operao com vrios 8051.


-

No modo 0 deve permanecer em 0. No modo 1 no requisitar interrupo se estiver em 1 e se o bit de STOP recebido for ilegal. Nos modos 2 e 3 habilita comunicao entre vrios 8051.

REN : 0 = Desabilita recepo (o pino RxD pode ser usado como E/S). 1 = Habilita recepo de dados seriais. TB8 : - Indica, nos modos 2 e 3, o estado do 9 bit a ser transmitido. RB8 : - No usado no modo 0.

Prof. Sidney Jos Montebeller - FACENS

32

No modo 1 indica o estado do bit de STOP recebido (desde que o bit SM2 esteja zerado). Nos modos 2 e 3 indica o estado do 9 bit do dado recebido.

TI : setado aps a transmisso do 8 bit de dado no modo 0 e no incio da transmisso do bit de STOP nos demais modos. Deve ser zerado pela rotina de tratamento de interrupo de transmisso para permitir novas interrupes de transmisso. RI : setado aps a recepo do 8 bit de dado no modo 0 e no meio do bit de STOP nos demais modos. Deve ser zerado pela rotina de tratamento da interrupo de recepo para permitir novas interrupes de recepo. Registrador SBUF (Serial Buffer) Registrador onde so recebidos e enviados os dados seriais. - A escrita neste registro implica na transmisso automtica do dado para o meio externo. - A recepo serial de bits do meio externo tambm automtica. SBUF.7 SBUF.6 SBUF.5 SBUF.4 SBUF.3 SBUF.2 SBUF.1 SBUF.0

Registro SBUF.

Modos de Operao do Canal Serial


-

Modo 0: Transmisso e recepo so sncronas. Os bits de dados so transmitidos e recebidos pelo pino RxD/data. O clock de transmisso e da recepo gerado pelo pino TxD/clock. So transmitidos ou recebidos dados de 8 bits. A velocidade de comunicao clock / 12. Modo 1: Transmisso e recepo so assncronas. Os bits de dados so transmitidos pelo pino TxD. Os bits de dados so recebidos pelo pino RxD. Velocidade de comunicao varivel e fornecida pelo temporizador/contador 1. Os dados tem 10 bits, sendo: - 1 bit de Start (nvel 0). - 8 bits de dados. - 1 bit de Stop (nvel 1). Modo 2:
33

Prof. Sidney Jos Montebeller - FACENS

Transmisso e recepo so assncronas. Os bits de dados so transmitidos pelo pino TxD. Os bits de dados so recebidos pelo pino RxD. Velocidade de comunicao pode ser clock / 32 ou clock / 64. Os dados tem 11 bits, sendo: - 1 bit de Start (nvel 0). - 8 bits de dados. - 1 bit extra de dado (9 bit de dado). - 1 bit de Stop (nvel 1).

Modo 3: Idntico ao modo 2, mas com velocidade varivel.

Prof. Sidney Jos Montebeller - FACENS

34