02 Microcontroladores Assembly

download 02 Microcontroladores Assembly

of 16

Transcript of 02 Microcontroladores Assembly

  • 8/19/2019 02 Microcontroladores Assembly

    1/16

    1

    Microprocessadores

    Prof. Arthur Braga

    Tópicos

    n O PIC16F628A

    ¨Sintaxe Assembly do PIC16F628A

    n Diretivas

    n Instruções

  • 8/19/2019 02 Microcontroladores Assembly

    2/16

  • 8/19/2019 02 Microcontroladores Assembly

    3/16

  • 8/19/2019 02 Microcontroladores Assembly

    4/16

  • 8/19/2019 02 Microcontroladores Assembly

    5/16

    5

    DiretivasDiretivas são comandos que aparecem no código-fonte, mas não fazem

    parte do conjunto de instruções do PIC. Esses comandos são

    reconhecidos pelo MONTADOR, não sendo, portanto, convertidos emcódigo objeto.

    No PIC as diretivas são divididas em grupos (ou tipos), dependendo da

    sua aplicação:

    * Diretivasde Controle;

    * Diretivas Condicionais;

    * Diretivas de Dados;

    * Diretivas de Listagem;

    * Diretivas de Macro;

    * Diretivas de Objetos de Arquivos

    Foge ao escopo da disciplina o estudo de todas as diretivas do

    PIC16F628A. Serão discutidas apenas as mais utilizadas.

    Diretivas

  • 8/19/2019 02 Microcontroladores Assembly

    6/16

    6

    Diretivas

    ORG 0x0000

    GOTO INICIO

    ORG 0x0004

    ... (rotinas de tratamento das interrupções)

    INICIO:

    ...

    Exemplo

    Diretivas

  • 8/19/2019 02 Microcontroladores Assembly

    7/16

    7

    Diretivas

    Instruções

  • 8/19/2019 02 Microcontroladores Assembly

    8/16

    8

    Instruções

    Instruções

    Formato das palavras de 14 bits que codificam estas instruções ?

  • 8/19/2019 02 Microcontroladores Assembly

    9/16

    9

    Instruções – Formato Geral

    Instruções

  • 8/19/2019 02 Microcontroladores Assembly

    10/16

    10

    Instruções

    Instruções

  • 8/19/2019 02 Microcontroladores Assembly

    11/16

  • 8/19/2019 02 Microcontroladores Assembly

    12/16

    12

    Instruções

    6

    Instruções

    13

  • 8/19/2019 02 Microcontroladores Assembly

    13/16

    13

    Exemplos da Sintaxe

    ADDWFDescrição: Soma o conteúdo do registo W com o registrador f. Se d é 0, o

    resultado armazena-se em W, Se d é 1 armazena-se em f.

    Sintaxe: ADDWF f,d

    Operandos: d - [0,1], f – [0, 127]

    Operação: (W) + (f) ==> (dest)

    Flags afetadas: C, DC, Z

    Exemplo: ADDWF REG,0

    ; Antes: W = 0x17, REG = 0xC2

    ; Depois: W = 0xD9, REG = 0xC2

    DECFSZDescrição: Decrementa o conteúdo do registrador f. Se d é 0, o resultado é

    armazenado em W. Se d é 1 é armazenado em f. Se o resultado é 0 saltauma instrução e a instrução é executada em 2 ciclos de máquina.

    Sintaxe: DECFSZ f,d

    Operandos: d - [0,1], f – [0, 127]

    Operação: (f) - 1 ==> d; Salta uma instrução Se Resultado = 0

    Flags afetadas: nenhum

    Exemplo: DECFSZ REG,0

    GOTO NO_ES_0

    SI_ES_0 ; Instrução

    NO_ES_0 ; Salta instrução anterior

  • 8/19/2019 02 Microcontroladores Assembly

    14/16

    14

    CLRFDescrição: O registrador f é carregado com 0x00. A flag Z é ativada.

    Sintaxe: CLRF f

    Operandos: f – [0, 127]

    Operação: 0x00 ==> (f), 1 ==> Z

    Flags afetadas: Z

    Exemplo: CLRF REG

    ; Antes: REG = 0x5A

    ; Depois: REG = 0x00, Z = 1

    MOVWFDescrição: O conteúdo do registrador W passa para o registrador f.

    Sintaxe: MOVWF f

    Operandos: f – [0, 127]

    Operação: W ==> (f)

    Flags afetadas: nenhum

    Exemplo: MOVWF REG

    ; Antes: REG = 0xFF, W = 0x4F

    ; Depois: REG = 0x4F, W = 0x4F

    RRFDescrição: O conteúdo de f é rotacionado à direita. O bit de menor peso de f

    passa para o carry (C), e o carry é colocado no bit de maior peso de f.Se d é 0, o resultado é armazenado em W. Se d é 1 é armazenado em f.

    Sintaxe: RRF f,d

    Operandos: d - [0,1], f – [0, 127]

    Operação: Rotação à direita

    Flags afetadas: C

    Exemplo: RRF REG,0

    ; Antes: REG = 1110 0110, C = 1

    ; Depois: REG = 1110 0110, W = 1111 0011, C = 0

    ADDLWDescrição: Soma o conteúdo do registrador W e do literal k, guardando o

    resultado em W.

    Sintaxe: ADDLW k

    Operandos: k – [0, 255]

    Operação: (W) + (k)==> (W)

    Flags afetadas: C, DC, Z

    Exemplo: ADDLW 0xC2

    ; Antes: W = 0x17

    ; Depois: W = 0xD9

  • 8/19/2019 02 Microcontroladores Assembly

    15/16

    15

    BCFDescrição: Apaga o bit b do registrador f

    Sintaxe: BCF f,b

    Operandos: f – [0, 127], b – [0, 7]

    Operação: 0 ==> (f)

    Flags afetadas: nenhum

    Exemplo: BCF REG,7

    ; Antes: REG = 0xC7

    ; Depois: REG = 0x47

    BTFSSDescrição: Se o bit b do registrador f é 1, salta uma instrução e continua

    com a execução.

    Sintaxe: BTFSS f,b

    Operandos: f – [0, 127], b – [0, 7]

    Operação: Salto Se (f) = 1

    Flags afetadas: nenhum

    Exemplo: BTFSS REG,6

    GOTO NO_ES_0

    SI_ES_0 ; instrução

    NO_ES_0 ; instrução

    GOTODescrição: Trata-se de um salto incondicional. A parte baixa de k é

    carregada em PCL, e a alta em PCLATCH. Ocupa 2 ciclos de máquina.

    Sintaxe: GOTO k

    Operandos: k – [0, 2047]

    Operação: k ==> PC

    Flags afetadas: nenhum

    Exemplo: ORIGEM GOTO DESTINO

    ; Antes: PC = ORIGEM

    ; Depois: PC = DESTINO

    RETFIEDescrição: o PC é carregado com o conteúdo de cima da pilha (TOS): endereço

    de regresso. Consome 2 ciclos. As interrupções voltam a ser habilitadas.

    Sintaxe: RETFIE

    Operandos: nenhum

    Operação: 1 ==> GIE; TOS==>PC

    Flags afetadas: nenhum

    Exemplo: RETFIE

    ; Depois: PC = direcção de regresso, GIE = 1

    A sintaxe de

    todas as

    instruçõesestá

    disponível

    no SIGAA

  • 8/19/2019 02 Microcontroladores Assembly

    16/16

    16

    Bibliografia Básica

    n  Zanco, Wagner da Silva.  Microcontroladores PIC16F628A/648A – uma abordagem prática e objetiva,Editora Érica, 2005.

    n   Datasheet  do PIC16F628A/648A

    Material da DisciplinaPlataforma SIGAA/UFC