Microcontrolador Pic - Diretivas Assembler

  • Uploaded by: Nando
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Microcontrolador Pic - Diretivas Assembler as PDF for free.

More details

  • Words: 1,479
  • Pages: 9
DIRETIVAS ASSEMBLER PIC - Microchip

Bento Alves Cerqueira Cesar Filho - R 1.0 - FEV/07 1/9

DIRETIVAS ASSEMBLER As Diretivas são instruções assembler que são escritas no código-fonte, mas não são transformadas em códigos operacionais. O compilador é orientado através das diretivas quando monta o arquivo executável. Portanto, as diretivas não são gravadas na memória de programa do controlador. A partir das Diretivas, o programador descreve as correlações existentes entre os Nomes empregados no código-fonte com os bits, registros e constantes previstos para uso no programa.

Bento Alves Cerqueira Cesar Filho - R 1.0 - FEV/07 2/9

#DEFINE DIRETIVA

#DEFINE

SINTAXE

#DEFINE #DEFINE

DESCRIÇÃO

Define a substituição do [ nome ] no código-fonte pelo [ texto ] ou [ instrução ]

[ nome ] [ nome ]

[ texto ] [ instrução ]

Esta diretiva substitui o [ nome ] encontrado no código-fonte pelo [ texto ] ou [ instrução ] identificado na Área de Diretivas. No texto do código-fonte utiliza-se o Nome, que é facilmente identificável pelo programador. Quando o compilador encontra o Nome, substitui pelo texto. EXEMPLO: -

Nome relacionado a uma linha de Instrução O Nome – BANK0 – substitui a linha de instrução – BCF

#DEFINE

BANK0

BCF

STATUS,RP0

STATUS,RP0 –

no código-fonte.

; ATIVA O BANCO 0 (ZERO) DE MEMÓRIA

Este procedimento só é possível para a substituição de uma única linha de instrução. Para a substituição de duas ou mais linhas de instrução (sequencia) deve-se criar uma Macro. -

Nome relacionado à Posição de um Bit em um Registro O Nome – BOTAO – substitui a posição do bit – 3 – do registro – PORTB – no código-fonte.

#DEFINE

BOTAO

PORTB,3

; RELACIONA O NOME ‘BOTAO’ A RB3

Bento Alves Cerqueira Cesar Filho - R 1.0 - FEV/07 3/9

EQU DIRETIVA

EQU (EQUAL)

SINTAXE

[ nome ] [ nome ]

DESCRIÇÃO

Define a substituição do [ nome ] no código-fonte pelo [ texto ] ou [ expressão ]

EQU EQU

[ valor ] [ expressão ]

Esta diretiva relaciona o Nome determinado pelo programador a um valor numérico que pode ser representado na forma binária, decimal ou hexadecimal. No lugar de um valor numérico pode-se utilizar uma expressão aritmética onde os valores numéricos dentro da expressão podem ser representados na forma binária, decimal ou hexadecimal. O compilador somente interpreta valores numéricos inteiros e positivos dentro do intervalo de 0 a 255 (máximo valor para 8 bits). O resultado de uma expressão deve ser um valor numérico inteiro e positivo dentro do intervalo de 0 a 255 (máximo valor para 8 bits). EXEMPLO: -

Nome relacionado a uma Expressão

REFERENCIA

-

; RELACIONA O NOME ‘REFERENCIA’ À ; EXPRESSÃO (256 – 123) = 133

EQU

B’0010011’

; RELACIONA O NOME ‘REFERENCIA’ AO VALOR ; BINÁRIO 0010011 (19 DECIMAL)

Nome relacionado a uma Constante com Valor Decimal

REFERENCIA

-

(.256 -.123)

Nome relacionado a uma Constante com Valor Binário

REFERENCIA

-

EQU

EQU

.234

; RELACIONA NOME ‘REFERENCIA’ AO VALOR ; DECIMAL 234

Nome relacionado a uma Constante com Valor Hexadecimal

REFERENCIA

EQU

0x3F

; RELACIONA NOME ‘REFERENCIA’ AO VALOR ; HEXADECIMAL 0X3F (63 DECIMAL)

Bento Alves Cerqueira Cesar Filho - R 1.0 - FEV/07 4/9

#INCLUDE DIRETIVA

#INCLUDE

SINTAXE

#INCLUDE #INCLUDE #INCLUDE

DESCRIÇÃO

Inclui um arquivo fonte adicional.

[ nome arquivo inclusão ] “[ nome arquivo inclusão ]” <[ nome arquivo inclusão ]>

O arquivo especificado é lido como um código-fonte e incluído como texto completo a partir da posição onde a diretiva #INCLUDE estiver escrita, dentro do código-fonte desenvolvido. Esta diretiva deverá ser usada para incluir no código-fonte o arquivo padrão do controlador escolhido. Neste arquivo estão definidos todos os Nomes dos registros e bits do dispositivo selecionado, não sendo necessário defini-los dentro do seu código-fonte. Esta diretiva pode ser usada para incluir no seu código-fonte arquivos contendo sequencias funcionais já desenvolvidas e testadas – Macros - tomando o cuidado de declarar os Nomes de todas as variáveis e constantes existentes no arquivo. Os arquivos de inclusão devem possuir a extensão .inc . A busca do arquivo de inclusão será feita na seguinte ordem: - diretório de trabalho corrente - diretório de arquivos fonte - diretório de arquivos executáveis do programa-fonte (MPASM) Se o arquivo de inclusão for especificado com um caminho (path), a busca será feita apenas neste caminho especificado. EXEMPLO: - Se [ nome arquivo inclusão ] não contiver espaços #INCLUDE

P16F628A.INC

; ARQUIVO PADRÃO DO CONTROLADOR

MACRO.INC

; ARQUIVO DE MACRO

ou #INCLUDE

- Se [ nome arquivo inclusão ] contiver espaços #INCLUDE

“MACRO CONTADOR.INC”

; ARQUIVO DE MACRO

<MACRO CONTADOR.INC>

; ARQUIVO DE MACRO

ou #INCLUDE

- Se [ nome arquivo inclusão ] contiver caminho especificado #INCLUDE

“c:\Programas\MPASM\MACRO.INC>

; ARQUIVO DE MACRO EM POSIÇÃO DEFINIDA

Bento Alves Cerqueira Cesar Filho - R 1.0 - FEV/07 5/9

CBLOCK DIRETIVA

CBLOCK

SINTAXE

CBLOCK

DESCRIÇÃO

Define uma lista sequencial de Nomes de variáveis a partir do[ endereço memória ]

[ endereço memória ]

Esta diretiva define uma lista de Nomes de variáveis que serão alocadas na memóris RAM a partir d endereço especificado. A primeira variável da lista é alocada no endereço de memória especificado, enquanto as demais variáveis da lista são alocadas sequencialmente nos endereços seguintes. Os endereços e disponibilidades de espaço nos bancos de memória dependem do modelo do controlador portanto, o programador deve necessáriamente consultar a folha de dados (datasheet) do componente. A lista de Nomes termina quando a diretiva ENDC é encontrada. EXEMPLO: CBLOCK

0X20

W_TEMP STATUS_TEMP FLAGS ENDC

; LISTA DE VARIÁVEIS A PARTIR DO END. 20H ; DO BANCO 0 DE MEMÓRIA ; VARIÁVEL ALOCADA NO END. 20H ; VARIÁVEL ALOCADA NO END. 21H ; VARIÁVEL ALOCADA NO END. 22H ; FIM DA LISTA DE VARIÁVEIS

ATENÇÃO: a lista de variáveis não pode exceder o último endereço da memória RAM do Banco de Memória (especificado pelo endereço incial – no caso do exemplo, o endereço 0x20 encontra-se no Bank 0). Se necessário, acrescentar outras listas, como no exemplo abaixo: CBLOCK

0XA0

CONTAGEM DIFERENCA TEMPO ENDC

; LISTA DE VARIÁVEIS A PARTIR DO END. A0H ; DO BANCO 1 DE MEMÓRIA ; VARIÁVEL ALOCADA NO END. A0H ; VARIÁVEL ALOCADA NO END. A1H ; VARIÁVEL ALOCADA NO END. A2H ; FIM DA LISTA DE VARIÁVEIS

Bento Alves Cerqueira Cesar Filho - R 1.0 - FEV/07 6/9

ENDC DIRETIVA

ENDC

SINTAXE

ENDC

DESCRIÇÃO

Determina o fim de uma lista sequencial de Nomes de variáveis.

Esta diretiva indica o fim de uma lista de variáveis iniciada pela diretiva CBLOCK. É obrigatório o seu uso para cada diretiva CBLOCK empregada no código-fonte. EXEMPLO: CBLOCK

0X20

W_TEMP STATUS_TEMP FLAGS ENDC

; LISTA DE VARIÁVEIS A PARTIR DO END. 20H ; DO BANCO 0 DE MEMÓRIA ; VARIÁVEL ALOCADA NO END. 20H ; VARIÁVEL ALOCADA NO END. 21H ; VARIÁVEL ALOCADA NO END. 22H ; FIM DA LISTA DE VARIÁVEIS

ou CBLOCK

0XA0

CONTAGEM DIFERENCA TEMPO ENDC

; LISTA DE VARIÁVEIS A PARTIR DO END. A0H ; DO BANCO 1 DE MEMÓRIA ; VARIÁVEL ALOCADA NO END. A0H ; VARIÁVEL ALOCADA NO END. A1H ; VARIÁVEL ALOCADA NO END. A2H ; FIM DA LISTA DE VARIÁVEIS

Bento Alves Cerqueira Cesar Filho - R 1.0 - FEV/07 7/9

END DIRETIVA

END

SINTAXE

END

DESCRIÇÃO

Determina o fim de um código-fonte.

Esta diretiva indica o fim de um código-fonte. É necessária ao menos uma diretiva END no final do códigofonte para indicar ao compilar o término da sequencia de instruções do programa. ATENÇÃO: em um arquivo de código-fonte , é obrigatório o uso de um, e somente um comando END.

Bento Alves Cerqueira Cesar Filho - R 1.0 - FEV/07 8/9

ORG DIRETIVA

ORG

SINTAXE

ORG [ endereço memória ]

DESCRIÇÃO

Determina a origem de um código-fonte específica a partir do [ endereço memória ].

Esta diretiva é usada em um código-fonte sempre que parte do código deva ser colocado em uma localização específica da memória. Para a colocação de diretivas ORG sucessivas, o número de endereços disponíveis após cada diretiva ORG deve ser suficiente para conter todas as instruções previstas para este bloco. Se não houver nenhuma outra diretiva ORG em uma sequencia de instruções, o compilador grava todas as instruções sequencialmente na memória. Os endereços mais comuns são: ORG

0X00

; ENDEREÇO DO VETOR DE RESET

ORG

0X04

; ENDEREÇO DO VETOR DE INTERRUPÇÃO

0X00

; ENDEREÇO DO VETOR DE RESET

EXEMPLO: ORG GOTO

ORG

SET_UP

0X04

; VAI PARA SEQUENCIA DE SET_UP (esta instrução será ; gravada no endereço 00h da Memória de Programa) ; ENDEREÇO DO VETOR DE INTERRUPÇÃO

MOVWF

W_TEMP

SWAPF

STATUS,W

; SALVA W NO REG. W_TEMP (esta instrução será ; gravada no endereço 04h da Memória de Programa) ; TROCA NIB_HI POR NIB_LO NO REG. STATUS E GRAVA ; RESULTADO NO REG. W (esta instrução será ; gravada no endereço 05h da Memória de Programa)

Bento Alves Cerqueira Cesar Filho - R 1.0 - FEV/07 9/9

Related Documents


More Documents from ""