Você está na página 1de 4

Tcnicas de Projetos Eletrnicos com os Microcontroladores AVR

Tcnicas de Projetos Eletrnicos com os Microcontroladores AVR

A. INSTRUES ASSEMBLY DO ATMEGA8

INSTRUES DE DESVIO
RJMP IJMP RCALL ICALL RET k k Desvio relativo Desvio indireto para (Z) Chama de sub-rotina Chamada indireta para (Z) Retorno de sub-rotina Retorno de interrupo Rd, Rr Rd, Rr Rd, Rr Rd, K Rr, b Rr, b P, b P, b s, k s, k k k k k k k k k k k k k k k k k k k Compara, pula se igual Compara Compara com Carry Compara registrador com valor imediato Pula se o bit do registrador estiver limpo (0) Pula se o bit do registrador estiver ativo (1) Pula se o bit do registrador de I/O estiver limpo (0) Pula se o bit do registrador de I/O estiver ativo (1) Desvia se o bit de sinalizao de status estiver ativo (1) Desvia se o bit de sinalizao de status estiver limpo (0) Desvia se igual Desvia se diferente Desvia se o bit de Carry estiver ativo (1) Desvia se o bit de Carry estiver limpo (0) Desvia se igual ou maior Desvia se menor Desvia se negativo Desvia se positivo Desvia se maior ou igual, com sinal Desvia se menor que zero, com sinal Desvia se o bit sinalizador de meio Carry estiver ativo (1) Desvia se o bit sinalizador de meio Carry estiver limpo (0) Desvia se o bit sinalizador T estiver ativo (1) Desvia se o bit sinalizador T estiver limpo (0) Desvia se o bit sinalizador de estouro estiver ativo (1) Desvia se o bit sinalizador de estouro estiver limpo (0) Desvia se a interrupo estiver habilitada Desvia se a interrupo estiver desabilitada PC PC + k + 1 PC Z PC PC + k + 1 PC Z PC STACK PC STACK if(Rd=Rr) PC PC + 2 ou 3 Rd - Rr Rd Rr - C Rd - K if(Rr(b)=0) PC PC + 2 ou 3 if(Rr(b)=1) PC PC + 2 ou 3 if(P(b)=0) PC PC + 2 ou 3 if(P(b)=1) PC PC + 2 ou 3 if(SREG(s)=1) PC PC + k + 1 if(SREG(s)=0) PC PC + k + 1 if(Z=1) PC PC + k + 1 if(Z=0) PC PC + k + 1 if(C=1) PC PC + k + 1 if(C=0) PC PC + k + 1 if(C=0) PC PC + k + 1 if(C=1) PC PC + k + 1 if(N=1) PC PC + k + 1 if(N=0) PC PC + k + 1 if(N V = 0) PC PC + k + 1 if(N V = 1) PC PC + k + 1 if(H=1) PC PC + k + 1 if(H=0) PC PC + k + 1 if(T=1) PC PC + k + 1 if(T=0) PC PC + k + 1 if(V=1) PC PC + k + 1 if(V=0) PC PC + k + 1 if(I=1) PC PC + k + 1 if(I=0) PC PC + k + 1 Nenhum Nenhum Nenhum Nenhum Nenhum I Nenhum Z,N,V,C,H Z,N,V,C,H Z,N,V,C,H Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum 2 2 3 3 4 4 1/ 2/ 3 1 1 1 1/ 2/ 3 1/ 2/ 3 1/ 2/ 3 1/ 2/ 3 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2 1/ 2

Clocks

Mnemnico

Operan -dos

Descrio

Operao

Flags

RETI CPSE CP CPC CPI

INSTRUES ARITMTICAS E LGICAS


ADD ADC ADIW SUB SUBI SBC SBCI SBIW AND ANDI OR ORI EOR COM NEG SBR CBR INC DEC TST CLR SER MUL MULS MULSU FMUL FMULS FMULSU Rd, Rr Rd, Rr Rdl, K Rd, Rr Rd, K Rd, Rr Rd, K Rdl, K Rd, Rr Rd, K Rd, Rr Rd, K Rd, Rr Rd Rd Rd, K Rd, K Rd Rd Rd Rd Rd Rd, Rr Rd, Rr Rd, Rr Rd, Rr Rd, Rr Rd, Rr Soma dois registradores Soma dois registradores com Carry Soma o valor imediato palavra (16 bits) Subtrai dois registradores Subtrai uma constante do registrador Subtrai dois registradores com Carry Subtrai constante de registrador com Carry Subtrai valor imediato da palavra (16 bits) Lgica E entre registradores Lgica E entre registrador e constante Lgica OU entre registradores Lgica OU entre registrador e constante OU exclusivo entre registradores Complemento de um Complemento de dois Ativa bit(s) no registrador (coloca em nvel lgico 1) Limpa bit(s) no registrador (coloca em nvel lgico 0) Incrementa registrador Decrementa registrador Teste de zero ou negativo Limpa registrador Ativa registrador (todos os bits em 1) Multiplica sem sinal Multiplica com sinal Multiplica registrador com sinal e sem sinal Multiplicao fracionria sem sinal Multiplicao fracionria com sinal Multiplicao fracionria de registrador com sinal e sem sinal Rd Rd + Rr Rd Rd + Rr + C Rdh:Rdl Rdh:Rdl + K Rd Rd - Rr Rd Rd - K Rd Rd - Rr - C Rd Rd - K - C Rdh:Rdl Rdh:Rdl - K Rd Rd Rr Rd Rd K Rd Rd v Rr Rd Rd v K Rd Rd Rr Rd 0xFF - Rd Rd 0x00 - Rd Rd Rd v K Rd Rd (0xFF K) Rd Rd + 1 Rd Rd - 1 Rd Rd Rr Rd Rd Rd Rd 0xFF R1:R0 Rd Rr R1:R0 Rd Rr R1:R0 Rd Rr R1:R0 (Rd Rr) << 1 R1:R0 (Rd Rr) << 1 R1:R0 (Rd Rr) << 1 Z, C, N, V, H Z, C, N, V, H Z, C, N, V, S Z, C, N, V, H Z, C, N, V, H Z, C, N, V, H Z, C, N, V, H Z, C, N, V, S Z, N, V Z, N, V Z, N, V Z, N, V Z, N, V Z, C, N, V Z, C, N, V, H Z, N, V Z, N, V Z, N, V Z, N, V Z, N, V Z, N, V Nenhum Z, C Z, C Z, C Z, C Z, C Z, C 1 1 2

SBRC SBRS SBIC

1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 BRIE BRID BRTS BRTC BRVS BRVC SBIS BRBS BRBC BREQ BRNE BRCS BRCC BRSH BRLO BRMI BRPL BRGE BRLT BRHS BRHC

Tcnicas de Projetos Eletrnicos com os Microcontroladores AVR

Tcnicas de Projetos Eletrnicos com os Microcontroladores AVR

INSTRUES PARA A TRANSFERNCIA DE DADOS


MOV MOVW LDI LD LD LD LD LD LD LDD LD LD LD LDD LDS ST ST ST ST ST ST STD ST ST ST STD STS LPM LPM LPM SPM IN OUT PUSH POP Rd, P P, Rr Rr Rd Rd, Z Rd, Z+ Rd, Rr Rd, Rr Rd, K Rd, X Rd, X+ Rd, -X Rd, Y Rd, Y+ Rd, -Y Rd, Y+q Rd, Z Rd, Z+ Rd, -Z Rd, Z+q Rd, k X, Rr X+, Rr -X, Rr Y, Rr Y+, Rr -Y, Rr Y+q, Rr Z, Rr Z+, Rr -Z, Rr Z+q, Rr k, Rr Movimento entre registradores Copia registrador de palavra Carrega valor imediato Carrega indiretamente Carrega indiretamente com psincremento Carrega indiretamente com prdecremento Carrega indiretamente Carrega indiretamente com psincremento Carrega indiretamente com prdecremento Carrega indiretamente com deslocamento Carrega indiretamente Carrega indiretamente com psincremento Carrega indiretamente com prdecremento Carrega indiretamente com deslocamento Carrega diretamente da SRAM Armazena indiretamente Armazena indiretamente com psincremento Armazena indiretamente com princremento Armazena indiretamente Armazena indiretamente com psincremento Armazena indiretamente com princremento Carrega indiretamente com deslocamento Armazena indiretamente Armazena indiretamente com psincremento Armazena indiretamente com princremento Carrega indiretamente com deslocamento Carrega diretamente da SRAM Carrega a memria de programa Carrega a memria de programa Carrega a memria de programa com ps-incremento Armazena a memria de programa Leitura do Port (pinos do microcontrolador) Escrita no Port (pinos do microcontrolador) Coloca registrador na pilha (Stack) Retira registrador da pilha (Stack) Rd Rr Rd + 1:Rd Rr + 1:Rr Rd K Rd (X) Rd (X), X X + 1 X X - 1, Rd (X) Rd (Y) Rd (Y), Y Y + 1 Y Y - 1, Rd (Y) Rd (Y + q) Rd (Z) Rd (Z), Z Z + 1 Z Z - 1, Rd (Z) Rd (Z + q) Rd (k) (X) Rr (X) Rr, X X + 1 X X - 1, (X) Rr (Y) Rr (Y) Rr, Y Y + 1 Y Y - 1, (Y) Rr (Y + q) Rd (Z) Rr (Z) Rr, Z Z + 1 Z Z - 1, (Z) Rr (Z + q) Rd (k) Rd R0 (Z) Rd (Z) Rd (Z), Z Z + 1 (Z) R1:R0 Rd P P Rr STACK Rr Rd STACK Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum Nenhum 1 1 1 2 2 2

INSTRUES DE BIT E TESTE DE BIT


SBI CBI LSL LSR ROL ROR 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 1 1 2 2 ASR SWAP BSET BCLR BST BLD SEC CLC SEN CLN SEZ CLZ SEI CLI SES CLS SEV CLV SET CLT SEH CLH P, b P, b Rd Rd Rd Rd Rd Rd s s Rr, b Rd, b Ativa o bit no registrador de I/O (coloca em 1) Limpa o bit do registrador de I/O (coloca em 0) Desvio lgico esquerda Desvio lgico direita Rotao esquerda atravs do Carry Rotao direita atravs do Carry Desvio aritmtico direita Troca nibbles (4 bits) Ativa bit (flag) (coloca em 1) Limpa bit (flag) (coloca em 0) Armazenagem do bit do registrador para o T Carga do bit T para o registrador Ativa o Carry (coloca em 1) Lima o Carry (coloca em 0) Ativa o bit de negativo (coloca em 1) Lima o bit de negativo (coloca em 0) Ativa o bit de zero (coloca em 1) Limpa o bit de zero (coloca em 0) Habilita a interrupo global Desabilita interrupo global Ativa o bit de teste de sinal (coloca em 1) Desativa o bit de teste de sinal (coloca em 0) Ativa o bit de estouro do complemento de dois (coloca em 1) Limpa o bit de estouro do complemento de dois (coloca em 0) Ativa o bit T (coloca em 1) Limpa o bit T (coloca em 0) Ativa o bit de meio Carry (coloca em 1) Limpa o bit de meio Carry (coloca em 0) I/O(P,b) 1 I/O(P,b) 0 Rd(n+1) Rd(n), Rd(0) 0 Rd(n) Rd(n+1), Rd(7) 0
Rd(0)C, Rd(n+1)Rd(n), CRd(7) Rd(7) C, Rd(n)Rd(n+1), CRd(0)

Nenhum Nenhum Z, C, N, V Z, C, N, V Z, C, N, V Z, C, N, V Z, C, N, V Nenhum SREG(s) SREG(s) T Nenhum C C N N Z Z I I S S V V T T H H

2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Rd(n) Rd(n+1), n=0..6


Rd(3..0)Rd(7..4), Rd(7..4)Rd(3..0)

SREG(s) 1 SREG(s) 0 T Rr(b) Rd(b) T C1 C0 N1 N0 Z1 Z0 I1 I0 S1 S0 V1 V0 T1 T0 H1 H0

INSTRUES DE CONTROLE DA UNIDADE MICROCONTROLADA


NOP SLEEP WDR Nenhuma operao Entra no modo sleep Reset do Watchdog Consultar manual do fabricante Consultar manual do fabricante Nenhum Nenhum Nenhum 1 1 1

Tcnicas de Projetos Eletrnicos com os Microcontroladores AVR

Tcnicas de Projetos Eletrnicos com os Microcontroladores AVR

Legenda: Rd Rr s, b K P q Rdl X, Y, Z = registrador de destino (e origem). = registrador de origem. = constante (0..7); pode ser uma expresso constante. = constante, faixa de valores depende da instruo; pode ser uma expresso constante. = constante (0..31/63), pode ser uma expresso constante ou um registrador de I/O. = constante (0..63), pode ser uma expresso constante. = R24, R26, R28, R30, usado nas instrues ADIW e SBIW. = registradores de 16 bits para endereamento indireto (X=R27:26, Y=R29:28 e Z=R31:30). Todos as instrues que operam com registradores de uso geral tem acesso direto em um nico ciclo a todos eles. As excees so as cinco instrues lgicas e aritmticas entre uma constante e um registrador, SBCI, SUBI, CPI e ORI, e a instruo para carga de constante imediata, LDI. Essas instrues se aplicam somente a metade dos registradores de uso geral superiores (R16..R31). As instrues SBUC, SUB, CP, AND, OR e as demais operaes entre um ou dois registradores se aplicam a todo o banco de registradores.

SREG Registrador de Status

Bit SREG L/Escreve Valor Inicial

7 I L/E 0

6 T L/E 0

5 H L/E 0

4 S L/E 0

3 V L/E 0

2 N L/E 0

1 Z L/E 0

0 C L/E 0

BIT 7 I: Global Interrupt Enable Este bit a chave geral para habilitar as interrupes. Cada interrupo individual possui seus registradores de controle. O bit I limpo quando uma interrupo ocorre (impedindo que outras ocorram simultaneamente) e volta a ser ativo quando se termina o tratamento da interrupo (instruo RETI). BIT 6 T: Bit Copy Storage Serve para copiar o valor de um bit de um registrador ou escrever o valor de um bit em um registrador (instrues BLD e BST). BIT 5 H: Half Carry Flag Indica quando um meio Carry (em um nibble) ocorreu em alguma operao aritmtica. til em aritmtica BCD. BIT 4 S: Sign Bit, S = N V O bit S o resultado de um ou exclusivo entre o flag negativo N e o flag de estouro do complemento de dois V. BIT 3 V: Twos Complement Overflow Flag O flag de estouro do complemento de dois ajuda na aritmtica com complemento de dois. BIT2 N: Negative Flag O flag negativo indica quando uma operao aritmtica ou lgica resulta em um valor negativo. BIT1 Z: Zero Flag O flag zero indica quando uma operao aritmtica ou lgica resulta em zero. BIT 0 C: Carry Flag O flag de Carry indica quando houve Carry numa operao matemtica ou lgica.

Tcnicas de Projetos Eletrnicos com os Microcontroladores AVR

BIBLIOGRAFIA

Lima, Charles Borges de. Tcnicas de Projetos Eletrnicos com os Microcontroladores AVR. Edio do autor - Clube de Autores, 1 ed. Nov/2010. ISBN 978-85-911400-0-8