Instrução Assembler - Microcontrolador PIC

Instrução Assembler - Microcontrolador PIC

(Parte 1 de 11)

INSTRUÇÕES ASSEMBLER PIC - Microchip

Bento Alves Cerqueira Cesar Filho - R 1.4 - Mai/09 1/103

Introdução

Através das Instruções o código-fonte pode executar as funções determinadas pelo programador para controlar o sistema externo de acordo com o projeto.

A Instrução Assembler é formada por uma série de palavras (mnemônicos) que traduzem a função a ser realizada. Normalmente, cada fabricante desenvolve seu próprio conjunto de instruções que tem aplicação exclusiva nos seus componentes, sem nenhuma compatibilidade com outros fabricantes. Para o programador, cabe estudar cada instrução no seu formato, função e aplicação de acordo com o controlador empregado no projeto.

É claro que, se existem vários projetos de aplicação desenvolvidos por uma única empresa, esta optará pelo uso de um só fabricante de controlador por uma simples questão de custo/investimento na educação dos programadores para a linguagem de programação (conjunto de instruções) e características de intercambio de programas ou trechos de programas em aplicações diversas.

No geral, entre os diversos controladores existentes no mercado, a função que se deseja realizar com uma instrução em qualquer dispositivo não altera, apenas o nome da instrução (mnemônico) é que sofre uma alteração.

Para o nosso caso, serão utilizadas as instruções da família PIC – Microchip, que reúne um conjunto de 37 instruções aplicadas em controladores de 8 bits (Mid Range MCU).

Bento Alves Cerqueira Cesar Filho - R 1.4 - Mai/09 2/103

Índice de Instruções As instruções são agrupadas em três categorias básicas de aplicação:

ADDWFSoma o valor contido em W com valor contido em F1C, DC, Z* ANDWFOperação AND (E) entre o valor contido em W e valor contido em F1Z* CLRFColoca valor 0 (zero) no registro F1Z* CLRWColoca valor 0 (zero) no registro W1Z* COMF“Complemento de 1” (1’s complement) do valor contido em F1Z DECFDecrementa uma unidade do valor contido em F1Z*

DECFSZDecrementa uma unidade do valor contido em F e salta a instrução seguinte se o resultado for 0 (zero)1 (2)*

INCFIncrementa uma unidade no valor contido em F1Z*

INCFSZIncrementa uma unidade no valor contido em F e salta a instrução seguinte se o resultao for 0 (zero)1 (2)*

IORWFOperação OR (OU) entre o valor contido em W e valor contido em F1Z*

MOVFMover o valor contido no registro F para o destino especificado1Z* MOVWFMover o valor contido em W para o registro F1* NOPNenhuma operação (No Operation)1* RLFRotaciona valor contido em F à esquerda através do bit CARRY1C RRFRotaciona valor contido em F à direita através do bit CARRY1C SUBWFSubtrai o valor contido em W do valor contido em F1C, DC, Z* SWAPFTroca NIB_LO com NIB_HI no registro F1*

XORWFOperação EXCLUSIVE OR (OU EXCLUSIVO) entre o valor contido em W e valor contido em F1Z*

BCFColoca valor ‘0’ (clear) no bit F1* BSFColoca valor ‘1’ (set) no bit F1*

BTFSCTesta o valor (nível lógico) do bit F e salta a instrução seguinte se valor do bit for igual a ‘0’ (clear)1 (2)*

BTFSSTesta o valor (nível lógico) do bit F e salta a instrução seguinte se valor do bit for igual a ‘1’ (set)1 (2)*

Bento Alves Cerqueira Cesar Filho - R 1.4 - Mai/09 3/103

ADDLWSoma valor literal ao valor contido em W1C, DC, Z* ANDLWOperação AND (E) entre o valor literal e valor contido em W1Z* CALLChama sub-rotina2/TO, /PD* CLRWDTColoca valor zero no registro WDT (Watchdog Timer)1 GOTOVá para (o endereço indicado)2* IORLWOperação OR (OU) entre o valor literal e valor contido em W1Z* MOVLWMover o valor literal para o registro W1* RETFIERetorna do Tratamento das Interrupções2* RETLWRetorna o valor literal no registro W2 RETURNRetorna de uma sub-rotina2* SLEEPVai para modo baixo consumo1/TO, /PD SUBLWSubtrai valor literal do valor contido em W1C, DC, Z

XORLWOperação EXCLUSIVE OR (OU EXCLUSIVO) entre o valor literal e valor contido em W1Z*

Interpretando as Informações

Cada instrução se apresenta como um capítulo onde é descrita em sua função com os detalhes necessários para a compreensão de sua operação, incluídos exemplos de aplicação com amostra da sintaxe no código_fonte e como ocorre o comportamento dos bits e registros quando a instrução é executada.

Quadro Demonstrativo Contém as informações básicas para consulta de aplicação indicando a função e o uso a instrução.

Forma contraída da instrução - normalmente formado pelas iniciais da frase que descreve a operação - o compilador dispões dos códigos de conversão adequados para esta forma.

INSTRUÇÃOFrase que descreve a operação realizada pela instrução reproduzindo o texto na língua de origem (ingles).

SINTAXEForma que as instruções devem ser escritas no código_fonte para que o compilador interprete corretamente a conversão para código de máquina.

DESCRIÇÃODescreve a operação da instrução com detalhes.

Quantidade de Ciclos de Máquina necessários para que a instrução seja executada completamente - tempo de execução da instrução, dependente da frequencia do clock do dispositivo aplicado.

STATUSBit do registro STATUS que sofre alteração quando a execução da instrução resulta em situação definida pelo fabricante (ver quadro descritivo do registro STATUS).

Bento Alves Cerqueira Cesar Filho - R 1.4 - Mai/09 4/103

Organização do Registro

Lembrar que todos os sistemas processados tem como base as Técnicas Digitais fundamentais logo, a estrutura do registro onde a informação é armazenada segue todos os padrões habituais de formato, nomes, localização de bit etc., etc., etc..

Para a exposição do funcionamento das instruções e seu emprego, os exemplos serão sempre baseados nos elementos identificados como mostra a figura abaixo:

│ ┌────────> [ nome bit ] ─────> BOTAO

│ └─────> Bit menos significativo │LSB - Least Significant Bit

Bento Alves Cerqueira Cesar Filho - R 1.4 - Mai/09 5/103

Vocabulário

[ posição bit ] -número inteiro, no intervalo de 0 a 7, que identifica a posição do bit em um registro, contado sempre da direita para a esquerda, começando no bit 0 (LSB - bit menos significativo).

BTFSC[ nome registro ],[ posição bit ]; VERIFICA O ESTADO DO BIT [ posição bit ] DO ; REG. [ nome registro ]

BTFSCPORTA,6; VERIFICA O ESTADO DO BIT 6 DO REG. PORTA

┌──────> [ posição bit ] ───> 6 │

[ nome bit ] -nome que identifica o bit dentro do registro em substituição do número que identifica a [ posição bit ] - o nome do bit pode ser estabelecido pelo fabricante (Registros de Funções Especiais - SFR):

BCF[ nome registro ],[ nome bit ]; DESLIGA O BIT [ nome bit ] NO REGISTRO ; [ nome registro ]

Ou pode ser estabelecido pelo programador (Registros de Uso Geral) e devidamente declarado na área de Diretivas.

BCF[ nome bit ]; DESLIGA O BIT [ nome bit ]

Bento Alves Cerqueira Cesar Filho - R 1.4 - Mai/09 6/103

[ nome registro ] -identifica um registro na memória (Ram ou Programa) a partir de um nome - o nome do registro pode ser estabelecido pelo fabricante (Registros de Funções Especiais - SFR):

(Parte 1 de 11)

Comentários