Você está na página 1de 9

DIRETIVAS ASSEMBLER PIC - Microchip

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

DIRETIVAS ASSEMBLER
As Diretivas so instrues assembler que so escritas no cdigo-fonte, mas no so transformadas em cdigos operacionais. O compilador orientado atravs das diretivas quando monta o arquivo executvel. Portanto, as diretivas no so gravadas na memria de programa do controlador. A partir das Diretivas, o programador descreve as correlaes existentes entre os Nomes empregados no cdigo-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 SINTAXE DESCRIO #DEFINE #DEFINE #DEFINE [ nome ] [ nome ] [ texto ] [ instruo ]

Define a substituio do [ nome ] no cdigo-fonte pelo [ texto ] ou [ instruo ]

Esta diretiva substitui o [ nome ] encontrado no cdigo-fonte pelo [ texto ] ou [ instruo ] identificado na rea de Diretivas. No texto do cdigo-fonte utiliza-se o Nome, que facilmente identificvel pelo programador. Quando o compilador encontra o Nome, substitui pelo texto. EXEMPLO: Nome relacionado a uma linha de Instruo O Nome BANK0 substitui a linha de instruo BCF
#DEFINE BANK0 BCF STATUS,RP0 STATUS,RP0

no cdigo-fonte.

; ATIVA O BANCO 0 (ZERO) DE MEMRIA

Este procedimento s possvel para a substituio de uma nica linha de instruo. Para a substituio de duas ou mais linhas de instruo (sequencia) deve-se criar uma Macro. Nome relacionado Posio de um Bit em um Registro O Nome BOTAO substitui a posio do bit 3 do registro PORTB no cdigo-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 SINTAXE DESCRIO EQU (EQUAL) [ nome ] [ nome ] EQU EQU [ valor ] [ expresso ]

Define a substituio do [ nome ] no cdigo-fonte pelo [ texto ] ou [ expresso ]

Esta diretiva relaciona o Nome determinado pelo programador a um valor numrico que pode ser representado na forma binria, decimal ou hexadecimal. No lugar de um valor numrico pode-se utilizar uma expresso aritmtica onde os valores numricos dentro da expresso podem ser representados na forma binria, decimal ou hexadecimal. O compilador somente interpreta valores numricos inteiros e positivos dentro do intervalo de 0 a 255 (mximo valor para 8 bits). O resultado de uma expresso deve ser um valor numrico inteiro e positivo dentro do intervalo de 0 a 255 (mximo valor para 8 bits). EXEMPLO: Nome relacionado a uma Expresso
EQU (.256 -.123) ; RELACIONA O NOME REFERENCIA ; EXPRESSO (256 123) = 133

REFERENCIA

Nome relacionado a uma Constante com Valor Binrio


EQU B0010011 ; RELACIONA O NOME REFERENCIA AO VALOR ; BINRIO 0010011 (19 DECIMAL)

REFERENCIA

Nome relacionado a uma Constante com Valor Decimal


EQU .234 ; RELACIONA NOME REFERENCIA AO VALOR ; DECIMAL 234

REFERENCIA

Nome relacionado a uma Constante com Valor Hexadecimal


EQU 0x3F ; RELACIONA NOME REFERENCIA AO VALOR ; HEXADECIMAL 0X3F (63 DECIMAL)

REFERENCIA

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

#INCLUDE
DIRETIVA SINTAXE DESCRIO #INCLUDE #INCLUDE #INCLUDE #INCLUDE [ nome arquivo incluso ] [ nome arquivo incluso ] <[ nome arquivo incluso ]>

Inclui um arquivo fonte adicional.

O arquivo especificado lido como um cdigo-fonte e includo como texto completo a partir da posio onde a diretiva #INCLUDE estiver escrita, dentro do cdigo-fonte desenvolvido. Esta diretiva dever ser usada para incluir no cdigo-fonte o arquivo padro do controlador escolhido. Neste arquivo esto definidos todos os Nomes dos registros e bits do dispositivo selecionado, no sendo necessrio defini-los dentro do seu cdigo-fonte. Esta diretiva pode ser usada para incluir no seu cdigo-fonte arquivos contendo sequencias funcionais j desenvolvidas e testadas Macros - tomando o cuidado de declarar os Nomes de todas as variveis e constantes existentes no arquivo. Os arquivos de incluso devem possuir a extenso .inc . A busca do arquivo de incluso ser feita na seguinte ordem: - diretrio de trabalho corrente - diretrio de arquivos fonte - diretrio de arquivos executveis do programa-fonte (MPASM) Se o arquivo de incluso for especificado com um caminho (path), a busca ser feita apenas neste caminho especificado. EXEMPLO: - Se [ nome arquivo incluso ] no contiver espaos
#INCLUDE P16F628A.INC ; ARQUIVO PADRO DO CONTROLADOR

ou
#INCLUDE MACRO.INC ; ARQUIVO DE MACRO

- Se [ nome arquivo incluso ] contiver espaos


#INCLUDE MACRO CONTADOR.INC ; ARQUIVO DE MACRO

ou
#INCLUDE <MACRO CONTADOR.INC> ; ARQUIVO DE MACRO

- Se [ nome arquivo incluso ] contiver caminho especificado


#INCLUDE c:\Programas\MPASM\MACRO.INC> ; ARQUIVO DE MACRO EM POSIO DEFINIDA

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

CBLOCK
DIRETIVA SINTAXE DESCRIO CBLOCK CBLOCK [ endereo memria ] Define uma lista sequencial de Nomes de variveis a partir do[ endereo memria ]

Esta diretiva define uma lista de Nomes de variveis que sero alocadas na memris RAM a partir d endereo especificado. A primeira varivel da lista alocada no endereo de memria especificado, enquanto as demais variveis da lista so alocadas sequencialmente nos endereos seguintes. Os endereos e disponibilidades de espao nos bancos de memria dependem do modelo do controlador portanto, o programador deve necessriamente consultar a folha de dados (datasheet) do componente. A lista de Nomes termina quando a diretiva ENDC encontrada. EXEMPLO:
CBLOCK 0X20 ; LISTA DE VARIVEIS A PARTIR DO END. 20H ; DO BANCO 0 DE MEMRIA ; VARIVEL ALOCADA NO END. 20H ; VARIVEL ALOCADA NO END. 21H ; VARIVEL ALOCADA NO END. 22H ; FIM DA LISTA DE VARIVEIS

W_TEMP STATUS_TEMP FLAGS ENDC

ATENO: a lista de variveis no pode exceder o ltimo endereo da memria RAM do Banco de Memria (especificado pelo endereo incial no caso do exemplo, o endereo 0x20 encontra-se no Bank 0). Se necessrio, acrescentar outras listas, como no exemplo abaixo:
CBLOCK 0XA0 ; LISTA DE VARIVEIS A PARTIR DO END. A0H ; DO BANCO 1 DE MEMRIA ; VARIVEL ALOCADA NO END. A0H ; VARIVEL ALOCADA NO END. A1H ; VARIVEL ALOCADA NO END. A2H ; FIM DA LISTA DE VARIVEIS

CONTAGEM DIFERENCA TEMPO ENDC

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

ENDC
DIRETIVA SINTAXE DESCRIO ENDC ENDC Determina o fim de uma lista sequencial de Nomes de variveis.

Esta diretiva indica o fim de uma lista de variveis iniciada pela diretiva CBLOCK. obrigatrio o seu uso para cada diretiva CBLOCK empregada no cdigo-fonte. EXEMPLO:
CBLOCK 0X20 ; LISTA DE VARIVEIS A PARTIR DO END. 20H ; DO BANCO 0 DE MEMRIA ; VARIVEL ALOCADA NO END. 20H ; VARIVEL ALOCADA NO END. 21H ; VARIVEL ALOCADA NO END. 22H ; FIM DA LISTA DE VARIVEIS

W_TEMP STATUS_TEMP FLAGS ENDC

ou
CBLOCK 0XA0 ; LISTA DE VARIVEIS A PARTIR DO END. A0H ; DO BANCO 1 DE MEMRIA ; VARIVEL ALOCADA NO END. A0H ; VARIVEL ALOCADA NO END. A1H ; VARIVEL ALOCADA NO END. A2H ; FIM DA LISTA DE VARIVEIS

CONTAGEM DIFERENCA TEMPO ENDC

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

END
DIRETIVA SINTAXE DESCRIO END END Determina o fim de um cdigo-fonte.

Esta diretiva indica o fim de um cdigo-fonte. necessria ao menos uma diretiva END no final do cdigofonte para indicar ao compilar o trmino da sequencia de instrues do programa. ATENO: em um arquivo de cdigo-fonte , obrigatrio o uso de um, e somente um comando END.

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

ORG
DIRETIVA SINTAXE DESCRIO ORG ORG [ endereo memria ] Determina a origem de um cdigo-fonte especfica a partir do [ endereo memria ].

Esta diretiva usada em um cdigo-fonte sempre que parte do cdigo deva ser colocado em uma localizao especfica da memria. Para a colocao de diretivas ORG sucessivas, o nmero de endereos disponveis aps cada diretiva ORG deve ser suficiente para conter todas as instrues previstas para este bloco. Se no houver nenhuma outra diretiva ORG em uma sequencia de instrues, o compilador grava todas as instrues sequencialmente na memria. Os endereos mais comuns so:
ORG ORG 0X00 0X04 ; ENDEREO DO VETOR DE RESET ; ENDEREO DO VETOR DE INTERRUPO

EXEMPLO:
ORG GOTO 0X00 SET_UP ; ENDEREO DO VETOR DE RESET ; VAI PARA SEQUENCIA DE SET_UP (esta instruo ser ; gravada no endereo 00h da Memria de Programa) ; ENDEREO DO VETOR DE INTERRUPO W_TEMP STATUS,W ; SALVA W NO REG. W_TEMP (esta instruo ser ; gravada no endereo 04h da Memria de Programa) ; TROCA NIB_HI POR NIB_LO NO REG. STATUS E GRAVA ; RESULTADO NO REG. W (esta instruo ser ; gravada no endereo 05h da Memria de Programa)

ORG

0X04

MOVWF SWAPF

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

Você também pode gostar